我正在学习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的示例代码。
答案 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,其中input
将eval
用户输入。仅在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。