1+2*3-4/5 のような基本的な 4 つの演算子を使用して式を解決できる電卓を作成しようとしていますが、機能せず、何が問題なのかわかりません。私のコードを確認してください。私がそれを実行すると、8行で無限の数のエラーが発生します。return ret(parts[0]) * ret(parts[2])
コードは次のとおりです
def ret(s):
s = str(s)
if s.isdigit():
return float(s)
for c in ('*','/','+','-'):
parts = s.partition(c)
if c == '*':
return ret(parts[0]) * ret(parts[2])
elif c == '/':
return ret(parts[0]) / ret(parts[2])
elif c == '+':
return ret(parts[0]) + ret(parts[2])
elif c == '-':
return ret(parts[0]) - ret(parts[2])
print(ret('1+2'))
エラーのトレースバックは次のように終了します。
File "C:\Python33\calc.py", line 8, in ret
return ret(parts[0]) * ret(parts[2])
File "C:\Python33\calc.py", line 2, in ret
s = str(s)
RuntimeError: maximum recursion depth exceeded while calling a Python object