Dış Değerlendirme ile Python'un input () nasıl kullanılır?
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
<* *>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[] *>"]