【发布时间】:2019-10-01 18:40:08
【问题描述】:
我做了一个简单的计算器,我试图用 try 和 except 函数来捕捉错误,但由于某种原因它没有捕捉到错误。错误是当我在 num1 或 num2 输入中输入除数字以外的任何内容时。我收到一个 ValueError,但我将 ValueError 放在了 except 块中,但它仍然没有捕获它。我希望它捕获错误并打印无效数字,而不是在 pycharm 中实际给我一个错误。
num1 = float(input("give a number"))
op = input("give an operator")
num2 = float(input("give a number"))
try:
if op == "/":
print(num1/num2)
elif op == "*":
print(num1*num2)
elif op == "-":
print(num1-num2)
elif op == "+":
print(num1+num2)
else:
if op != "/*-+":
print("invalid operator")
except ValueError:
print("invalid number")
这是它给我的错误
give a number+
Traceback (most recent call last):
File "C:/Users/Kalen/PycharmProjects/m/m.py", line 3, in <module>
num1 = float(input("give a number"))
ValueError: could not convert string to float: '+'
【问题讨论】:
-
FWIW,
if op != "/*-+"应该是if op not in "/*-+" -
您正在获取输入并尝试在进入任何验证块之前将其转换为浮点数。您需要更改订单
-
当你的程序说“给一个数字”时,你给了它一个加号,那个加号不是一个数字,不能转换成
float -
如果我把 if op not 放在 "/*-+" 而不是 if op != "/*-+" 有什么区别?我复制并粘贴了 num1/op/num2 变量并将它们放在 try 和 except 块中,现在它可以按照我的意愿工作,谢谢 G.Anderson
标签: python pycharm try-catch except