我遇到了关于我制作的 python 计算器的问题。我对 python 还很陌生,所以请不要对我太挑剔。我这样做是为了在输入以下等式时它不会崩溃:8*d、8/0、dajf。但是,当用户输入诸如:/7、*e 或 *6 之类的内容时。它崩溃了。当输入这样的无效方程时,如何防止它崩溃?假设,它只会响应“警告:无效方程”
我当前的代码:
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 ZeroDivisionError:
print ("WARNING: Invalid Equation")
else:
print(x)
提前致谢!
最佳答案
当您输入无效输入时,实际引发的异常是SyntaxError
>> -8*
Traceback (most recent call last):
File "Test.py", line 19, in <module>
exec(x)
File "<string>", line 1
x=-8*
^
SyntaxError: invalid syntax
所以,你也可以简单地捕获SyntaxError
,就像这样
try:
exec(x)
except (ZeroDivisionError, SyntaxError):
print ("WARNING: Invalid Equation")
else:
print(x)
关于输入无效方程时 Python 计算器程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22087866/