我正在学习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: ')
当我运行程序时
它输出
你叫什么名字? (i输入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中的绝对初学者的示例代码。
#1 楼
在Python 2.x中,input()
需要一个Python表达式,这意味着如果您键入d
,它将把它解释为一个名为d的变量。如果键入"d"
,那就没问题了。2.43可能真正想要的是
raw_input()
,它会将输入的值作为原始字符串返回,而不是求值。由于您遇到这种情况,因此您似乎正在使用2.x版本的Python解释器-相反,我会去www.python.org并下载Python 3.x解释器,以便它将与您正在使用的书相匹配。
#2 楼
您可能正在使用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.
>>>
#3 楼
在您正在使用的书中讲授的Python 3.0及更高版本中,input()
的功能与q212079q在Python 2中的功能相同,因此在这种情况下,代码是正确的;但是,看来您使用的是Python的旧版本(2.6?)。我建议您访问Python网站并下载最新版本的Python 3,这样您的时间就更轻松了紧跟着本书。
,考虑到您使用的是Python 2,直接的问题是您使用的是
raw_input()
,它对您提供的内容进行评估。您想要做的就是获取用户输入的原始字符串:Name = raw_input("What is your Name? ")
Python 3.x和2.x之间有很多小的区别,因此可以肯定如果您想继续使用Python 3作为绝对入门者,请获取最新的Python3。
评论
嗨kennyTM非常感谢!是的,它看起来像是版本冲突:( Python 2.6.4(r264:75706,2009年12月7日,18:45:15)在linux2上的[GCC 4.4.1]会升级我的python版本。你们再次感谢:)
–dtechie
2010-4-10 10:22