【发布时间】:2014-03-31 18:00:40
【问题描述】:
我在使用这个非常简单的计算器脚本时遇到了问题。如果用户输入一个字母或一个单词(如:s, the),系统就会崩溃。我的想法是让它打印出来:
print ("WARNING: That is not a valid equation!")
当这种情况发生时。但是,我不能只看 y 是否为整数,否则*、+、-和 / 将不起作用。另外,我需要一种方法让它跳过
exec(x)
print(x)
part 所以它不会给我一个错误并使脚本崩溃。提前谢谢!
代码(Python v3.3.0 - Mac OSX 10.8):
while True:
x = "x="
y = input(" >> ")
x += y
exec(x)
print(x)
编辑:查看 raser 的答案后。这就是我把它改成的。这是我之前的代码和他的两个答案的混合。
valid_chars = "0123456789-+/* \n";
while True:
x = "x="
y = input(" >> ")
x += y
if False in [c in valid_chars for c in y]:
print("Errors!");
continue;
if(y == "end" or y == "End" or y == "exit" or y == "Exit" or y == "cancel" or y == "Cancel"):
break
exec(x)
print(x)
这可以做如下方程:7+9/3*2-3
【问题讨论】:
-
您是否考虑过使用正则表达式进行输入验证?您可以使用regexpal.com 来测试您的表达方式..
-
您能否发布一些有效的方程式示例?例如,这是一个简单的运算还是在做更复杂的数学方程?
-
这可以做方程如:7+9/3*2-3
标签: python string input integer