Python ValueError异常-名称";a「;未定义错误

Python ValueError异常-名称";a「;未定义错误,python,python-2.7,python-3.x,try-catch,Python,Python 2.7,Python 3.x,Try Catch,我试图在Python中实现一个try异常,当输入一个char/字符串而不是int时,它会捕获异常 但是,当输入字母“a”时,程序崩溃,返回以下错误: num = input('Enter integer number: ') File "<string>", line 1, in <module> NameError: name 'a' is not defined 您试图捕获一个ValueError,但函数却引发了一个namererror。所以你没有抓住它。尝试:

我试图在Python中实现一个try异常,当输入一个char/字符串而不是int时,它会捕获异常

但是,当输入字母“a”时,程序崩溃,返回以下错误:

num = input('Enter integer number: ')   File "<string>", line 1, in
<module> NameError: name 'a' is not defined

您试图捕获一个
ValueError
,但函数却引发了一个
namererror
。所以你没有抓住它。尝试:

if __name__ == '__main__':   #main function
    num = input('Enter integer number: ')
    try:
        num = int(num)
    except Exception as e:
        print "Invalid input: {}".format(e.message)

您试图捕获一个
ValueError
,但函数却引发了一个
namererror
。所以你没有抓住它。尝试:

if __name__ == '__main__':   #main function
    num = input('Enter integer number: ')
    try:
        num = int(num)
    except Exception as e:
        print "Invalid input: {}".format(e.message)

从文档输入()解释给定的输入

因此,如果输入为“a”,它会将其解释为字符串并继续。 由于将值指定为a,因此它需要一个名为a的变量


如果您直接想使用用户输入,如@Lafexlos在评论中所建议的,请使用原始输入。

从文档输入()解释给定的输入

因此,如果输入为“a”,它会将其解释为字符串并继续。 由于将值指定为a,因此它需要一个名为a的变量


如果您直接想要使用用户输入,正如@Lafexlos在评论中建议的那样,请使用raw\u input

因为您使用的是
python 2.x
(假设由于
print
),请尝试使用
raw\u input
,而不是
input
,并且不要添加到标记中。如果您使用的是pycharm,可能您的解释器指向的是python 2.7。尝试将其更改为python3,将解决此问题。您可以在Preferences->Project->Python解释器中更改解释器。如果您在
Python2.x
(假设由于
print
),请尝试使用
raw\u input
,而不是
input
,并且不要添加到标记中。如果您使用的是pycharm,那么您的解释器可能指向Python2.7。尝试将其更改为python3,将解决此问题。您可以在Preferences->Project->Python解释器中更改解释器,这里的问题是使用
input
input
在Python2.x中充当
eval
,因此应该将其更改为
raw\u input
。在char/string上强制转换int会引发ValueError,这正是OP试图实现的。你是对的。那么你可以说至少有两个问题。作者的目标是“在Python中实现一个try异常”。所以我研究了捕获异常的问题。实际上,这里的问题是使用
input
input
在Python2.x中充当
eval
,因此应该将其更改为
raw\u input
。在char/string上强制转换int会引发ValueError,这正是OP试图实现的。你是对的。那么你可以说至少有两个问题。作者的目标是“在Python中实现一个try异常”。因此,我研究了捕获异常的问题。