python中的错误未定义。

时间:2010-04-10 10:05:06

标签: python python-3.x

我正在学习python并遇到此错误。我可以弄清楚代码中的错误是什么。 File "<string>", line 1, in <module>

Name = ""
Desc = ""
Gender = ""
Race = ""
# Prompt user for user-defined information
Name = input('What is your Name? ')
Desc = input('Describe yourself: ')

当我运行程序时

输出 你叫什么名字? (我输入d)

这给出了错误

Traceback (most recent call last):
  File "/python/chargen.py", line 19, in <module>
    Name = input('What is your Name? ')
  File "<string>", line 1, in <module>
NameError: name 'd' is not defined

这是Python 3 for Absolute Beginners的示例代码。

3 个答案:

答案 0 :(得分:18)

在Python 2.x中,input()需要一些Python表达式,这意味着如果键入d,它会将其解释为名为d的变量。如果您输入"d",那就没关系了。

你可能真正想要的2.x是raw_input(),它将输入的值作为原始字符串返回,而不是对其进行评估。

由于你得到了这种行为,看起来你正在使用2.x版本的Python解释器 - 相反,我会去www.python.org并下载一个Python 3.x解释器,这样它会与您正在使用的书匹配。

答案 1 :(得分:4)

您可能正在使用Python 2.x,其中inputeval用户输入。仅在Python 3.x input()中返回原始用户输入。

您可以通过在控制台中运行python来检查Python的版本,例如这是Python 2.6:

~$ python
Python 2.6.5 (r265:79063, Apr  5 2010, 00:18:33) 
[GCC 4.2.1 (Apple Inc. build 5659)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

您可以通过python3.1运行特定版本的Python(例如3.1):

~$ python3.1
Python 3.1.1 (r311:74480, Jan 25 2010, 15:23:53) 
[GCC 4.2.1 (Apple Inc. build 5646) (dot 1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 

答案 2 :(得分:1)

在Python 3.0及以上版本中,您正在使用的书教授,input()执行raw_input()在Python 2中所做的事情,因此在这种情况下代码是正确的;但是,您似乎使用的是旧版本的Python(2.6?)。

我建议转到Python website并下载最新版本的Python 3,这样您就可以更轻松地阅读本书了。


鉴于您使用的是Python 2,直接的问题是您正在使用input(),它会评估您提供的任何内容。你想要做的是获取用户输入的原始字符串:

Name = raw_input("What is your Name? ")

Python 3.x和2.x之间存在很多差异,所以如果你想继续使用 Python 3 for Absolute Beginners ,一定要去获取最新的Python 3。