Python中的错误d没有定义。

我正在学习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: ') 

当我运行程序

它输出什么是你的名字? (我inputd)

这给出了错误

 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的绝对初学者的示例代码。

在Python 2.x中, input()需要Pythonexpression式,这意味着如果你键入d它将把它解释为一个名为d的variables 。 如果你input"d" ,那就没事了。

你可能实际需要的2.x是raw_input() ,它将input的值作为原始string返回,而不是对其进行评估。

既然你得到了这个行为,看起来你使用的是Python解释器的2.x版本 – 相反,我会去www.python.org并下载一个Python 3.x解释器,以便它匹配与你正在使用的书。

您可能正在使用Python 2.x,其中inputeval用户input。 只有在Python 3.x input()才会返回原始用户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. >>> 

在Python 3.0及以上版本中,您正在使用的书教导, input()在Python 2中执行raw_input()所做的事情,所以在这种情况下代码将是正确的; 但是,看起来您正在使用较旧版本的Python(2.6?)。

我build议去Python网站下载最新版本的Python 3,这样你就可以更轻松地阅读本书。


鉴于您使用的是Python 2,眼前的问题是您使用的是input() ,它会评估您提供的任何内容。 你想要做的是获得用户input的原始string:

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

Python 3.x和2.x之间有很多小的区别,所以如果你想继续使用Python 3 for Absolute Beginners ,那么一定要去获取最新的Python 3。