![](/img/trans.png)
[英]How to let the user reuse a result from the previous computation in a python calculator
[英]How to let the user reuse a result from previous computation in a python calculator
我是python的新手,所以我对此不太了解。 我做了一个计算器,我希望它接受:
ans()
输入。 当前,如果没有[0-9 * /-+]以外的内容,有一部分可以阻止程序执行输入,因此不会崩溃。 我该怎么做
ans()
代表最后输入的方程式的输出,因此我可以输入以下内容:
>> 8*8 #last input
64 #last output
>> ans()*2 #current input
128 # current output
希望我能正确解释所有内容,这是我的代码:
valid_chars = "0123456789-+/* \n";
while True:
x = "x="
y = input(" >> ")
x += y
if any(c not in valid_chars for c in y):
print("WARNING: Invalid Equation")
continue
try:
exec(x)
except (SyntaxError, ZeroDivisionError):
print ("WARNING: Invalid Equation")
else:
print(x)
更新:我添加了几行,但无法运行:
valid_chars = "0123456789-+/* \n";
while True:
x = "x="
y = input(" >> ")
x += y
def ans():
return _
def ans():
try:
return _
except NameError:
return 0 # appropriate value
if any(c not in valid_chars for c in y):
print("WARNING: Invalid Equation")
continue
try:
exec(x)
except (SyntaxError, ZeroDivisionError):
print ("WARNING: Invalid Equation")
else:
print(x)
错误:NameError除外的“意外缩进”
我做错了什么,该如何解决? 谢谢
更新:
好吧,我修复了它:
valid_chars = "0123456789-+/*ans() \n"
while True:
x = "x="
y = input(" >> ")
x += y
def ans():
return z
def ans():
try:
return z
except NameError:
return 0 # appropriate value
if any(c not in valid_chars for c in y):
print("WARNING: Invalid Equation")
continue
try:
exec(x)
except (SyntaxError, ZeroDivisionError):
print ("WARNING: Invalid Equation")
else:
z = x
print(x)
刚刚添加了
z = x
并用z更改“ _”
谢谢!
def ans():
try:
return _
except NameError:
return 0 # appropriate value
您的尝试和除外需要具有相同的缩进。 这样使用
def ans():
try:
return _
except NameError:
return 0 # appropriate value
valid_chars = list("0123456789-+/* \n")
while True:
x = "ans = "
y = raw_input(" >> ")
x += y
if any(c not in valid_chars for c in y.replace('ans','')):
print("WARNING: Invalid Equation")
continue
try:
exec(x)
except (SyntaxError, ZeroDivisionError):
print ("WARNING: Invalid Equation")
except NameError:
if y == 'ans':
print("ans undefined")
else:
raise
else:
print(ans)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.