进行基本输入时出现名称错误[重复]

问题描述 投票:0回答:2

我有一个超级基本的问题,但我刚刚开始学习Python。我的脚本:

print('What is your name?')
person = input("Enter name: ")
print("Hello ", person)

返回错误:

NameError: name 'Bob' is not defined

此时我基本上只是复制并粘贴了教程中的内容,但除非我将名称放在引号中,否则它仍然不起作用。我做错了什么?

python python-3.x nameerror
2个回答
0
投票

您的代码在 Python 3 中应该可以完美运行。但是,在 Py2 中,它会抛出

NameError
,因为
input()
raw_input()
之间存在差异。本质上,Python 2 中的
input()
eval(raw_input(""Enter name: "))
相同,这意味着它将尝试以 Python 方式运行
input
代码。

在 Python 3 中,

raw_input()
不再存在,
input()
按照您期望的方式运行:打印一行,接受输入,并将其以字符串格式分配给变量。


0
投票

您根本没有使用 Python 3。在 Python 2 中,

input()
的工作方式有所不同;请参阅文档的摘录。

相当于

eval(raw_input(prompt))

因此,当您输入不带引号的

Bob
时,您基本上是在说
eval(Bob)
。带引号是
eval("Bob")
raw_input()
在 Python 3 中不存在,因此如果您使用 Python 3 运行,则不会定义它。

确保您正在使用 Python 3 运行文件:

  • 输入
    which python
    which python3
    以确保两者都有。
  • 运行
    python
    python3
    并在 python shell 打开时查看您正在运行的版本。
  • 您可以通过执行
    import sys; print(sys.version)
    来检查正在运行代码的Python版本。
  • 通过
    python3 yourfile.py
    运行您的代码。
  • 正如 J.F. Sebastian 所说,您应该将
    #!/usr/bin/env python3
    添加到文件的第一行。有可能,您要么编写了
    #! /usr/bin/env python
    ,在 OS X 上是 2.7.x(我认为它是 2.7.2,并且我认为
    python
    是指向
    python27
    二进制文件的符号链接),然后只需键入其即可运行您的文件名称,或者您正在通过
    python
    运行它。
© www.soinside.com 2019 - 2024. All rights reserved.