进行基本输入时出现NameError

时间:2014-03-17 20:19:17

标签: python python-3.x nameerror

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

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

返回错误:NameError: name 'Bob' is not defined

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

2 个答案:

答案 0 :(得分:0)

您的代码在Python 3中应该可以正常工作。但是,在Py2中它将抛出NameError,因为input()raw_input()之间存在差异。从本质上讲,Python 2中的input()eval(raw_input(""Enter name: "))相同,这意味着它将尝试将input ed代码作为Python运行。

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

答案 1 :(得分:0)

你根本就没有使用Python 3.在Python 2中,input()的工作方式不同;从文档中看到这段摘录。

  

相当于eval(raw_input(prompt))

因此,当您键入Bob而没有引号时,您基本上是在说eval(Bob)。引号为eval("Bob")。 Python 3中不存在raw_input(),因此如果您使用Python 3运行它将不会被定义。

确保使用Python 3运行文件:

  • 键入which pythonwhich python3以确保您同时拥有这两个。
  • 运行pythonpython3,查看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,我认为pythonpython27二进制文件的符号链接并且只是通过输入其名称来运行您的文件,或者您通过python运行它。