我有一个超级基本的问题,但我刚刚开始学习Python。我的脚本:
print('What is your name?')
person = input("Enter name: ")
print("Hello ", person)
返回错误:
NameError: name 'Bob' is not defined
。
此时我基本上只是复制并粘贴了教程中的内容,但除非我将名称放在引号中,否则它仍然不起作用。我做错了什么?
您的代码在 Python 3 中应该可以完美运行。但是,在 Py2 中,它会抛出
NameError
,因为 input()
和 raw_input()
之间存在差异。本质上,Python 2 中的 input()
与 eval(raw_input(""Enter name: "))
相同,这意味着它将尝试以 Python 方式运行 input
代码。
在 Python 3 中,
raw_input()
不再存在,input()
按照您期望的方式运行:打印一行,接受输入,并将其以字符串格式分配给变量。
您根本没有使用 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
运行您的代码。#!/usr/bin/env python3
添加到文件的第一行。有可能,您要么编写了 #! /usr/bin/env python
,在 OS X 上是 2.7.x(我认为它是 2.7.2,并且我认为 python
是指向 python27
二进制文件的符号链接),然后只需键入其即可运行您的文件名称,或者您正在通过 python
运行它。