我正在学习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,其中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.
>>> 


评论


嗨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

#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。