如果用户在菜单选择中输入字符串而不是整数,我需要添加错误消息,并且还要将用户输入的数量作为数据。我尝试了这段代码,但它不起作用。
import sys
try:
newamount=int(input('Enter the new amount:'))
except ValueError:
print ("error")
我做错了什么?
答案 0 :(得分:2)
这是因为将无效字符串(不是数字)传递给int()
会引发ValueError
,而不是TypeError
。你虽然很近。
只需更改它就可以了。
except ValueError:
print('Error!')
如果您想对newamount
变量执行某些操作,建议您在try
块中执行此操作:
try:
newamount=int(input('Enter the new amount:'))
tempfunction = amount + newamount
希望这有帮助!
答案 1 :(得分:1)
TypeError
的参数类型错误,则会引发{p> int()
。
假设您使用的是Python3,input()
的返回值将始终为str
ValueError
,但内容无法转换为int
。
要反复询问,您应该使用while
循环
while True:
try:
newamount=int(input('Enter the new amount:'))
break
except ValueError:
print ("error")
如果您想继续计算错误,请使用itertools.count
和for
循环
from itertools import count
for c in count():
try:
newamount=int(input('Enter the new amount:'))
break
except ValueError:
print ("error", c)
答案 2 :(得分:1)
我认为在手动输入eval的情况下使用raw_input会更好。 就像这样......
s = raw_input()
try:
choice = int(s)
except ValueError:
print ('Wrong Input!')