2

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

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

我究竟做错了什么?

4

3 回答 3

2

那是因为将无效字符串(不是数字)传递给int()将引发 a ValueError,而不是TypeError。你虽然很近。

只需更改它,它应该工作得很好。

except ValueError:
    print('Error!')

如果你想对newamount变量做一些事情,我建议你在try块中做:

try:
    newamount=int(input('Enter the new amount:'))
    tempfunction = amount + newamount

希望这可以帮助!

于 2013-10-24T02:32:34.510 回答
1

TypeError如果参数 toint()的类型错误,将引发。

假设您使用的是 Python3,则返回值input()将始终为 typestr

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)
于 2013-10-24T02:40:32.377 回答
1

我认为在手动 eval 输入的这些情况下使用 raw_input 更好。事情是这样的……

s = raw_input()
try:
    choice = int(s)
except ValueError:
print ('Wrong Input!')  
于 2013-10-24T02:45:55.713 回答