【问题标题】:Python ValueError exception - Name "a" is not defined error [duplicate]Python ValueError 异常 - 名称“a”未定义错误 [重复]
【发布时间】:2016-07-25 01:45:41
【问题描述】:

我正在尝试在 Python 中实现一个 try 异常,当输入 char/string 而不是 int 时,它会捕获异常。

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

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

这是我的代码:

if __name__ == '__main__':   #main function
    num = input('Enter integer number: ')
    try:
        num = int(num)
    except ValueError:
        print "Invalid input."

【问题讨论】:

  • 既然您在python 2.x(假设是因为print),请尝试使用raw_input 而不是input,并且不要将python-3.x 添加到您的标签中。
  • 如果您使用的是 pycharm,可能您的解释器指向 python 2.7。尝试将其更改为 python3 并解决问题。您可以在首选项 -> 项目 -> Python 解释器中更改解释器

标签: python python-2.7 python-3.x try-catch


【解决方案1】:

您正在尝试捕获 ValueError,但该函数正在引发 NameError。所以你没有抓住它。试试:

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

【讨论】:

  • 其实这里使用input是个问题。 input 在 python 2.x 中充当 eval,因此应将其更改为 raw_input。在 char/string 上转换 int 会引发一个 ValueError,这是 OP 试图实现的。
  • 你是对的。那么,你可以说至少有两个问题。作者的目标是“在 Python 中实现一个 try 异常”。所以我查看了捕获异常的问题。
【解决方案2】:

来自文档 input() 解释给定的输入。

https://docs.python.org/2/library/functions.html?highlight=input#input

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

如果您想直接使用用户输入,正如 @Lafexlos 在 cmets 中所建议的那样,请改用 raw_input

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    相关资源
    最近更新 更多