输入验证时捕获错误

时间:2013-10-24 02:26:32

标签: python

如果用户在菜单选择中输入字符串而不是整数,我需要添加错误消息,并且还要将用户输入的数量作为数据。我尝试了这段代码,但它不起作用。

import sys
try:
    newamount=int(input('Enter the new amount:'))
except ValueError:
    print ("error")

我做错了什么?

3 个答案:

答案 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.countfor循环

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!')