Dış Değerlendirme ile Python'un input () nasıl kullanılır?

Aug 27 2020

Wolfram Not Defterinde çalışan Python kodunda input () kullanmak istiyorum.

Bu yüzden ">" yazıp Python'u seçerek harici bir değerlendirme hücresi oluşturuyorum. Sonra bu işlevi tanımlıyorum:

def func():
    x = input()
    print(x)

Sonra onu aramaya çalışıyorum:

func()

bu Mathematica'yı sonsuza kadar çalıştırır ve değerlendirmez.

Python'un girişini () not defterinden arayabilir miyim?

2020-09-04 güncelleme. "input () standart girişten okur. Dizüstü bilgisayar kullanırken standart bir giriş yoktur."

evet, ama Jupyter yine de destekliyor

Yanıtlar

3 MichaelChen Sep 04 2020 at 23:14

<* *>Mathematica'da TemplateExpression ve SetDelayed kullanarak bir numara buldum .

Örnek olarak, bunun gibi girdi dizesini çoğaltan bir python işlevi tanımlamaya çalışıyorum:

def func():
    return input()*2

Mathematica kodu:

pysession = StartExternalSession["Python"];
wlfunc[] := ExternalEvaluate[pysession, "<* InputString[] *> *2"]
ExternalEvaluate[pysession, "func = <* wlfunc *>"]

(Python işlevinin inputMathematica işlevine eşdeğer olduğunu unutmayın InputString)

Şimdi, funcpython oturumunda tanımlanan işlev Mathematica'nın FrontEnd'inden girdi alabilir:

ExternalEvaluate[pysession, "[func() for i in range(3)]"]

Bu numaranın oldukça sınırlı olduğunu belirtmeliyim, örneğin,

ExternalEvaluate[pysession, "func() + func()"]

Failureişlev python yerine Mathematica'da etkin bir şekilde tanımlandığı için a döndürür . Bundan kaçınmak için kullanın

ExternalEvaluate[pysession, "<* wlfunc[] *> + <* wlfunc[] *>"]