Python中未定义的错误d。
我正在学习Python,遇到了一个错误。我不知道代码中错误的具体位置或是什么。
文件 "<string>",第1行,在 <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示例代码。
3 个回答
在Python 3.0及以上版本中,你正在使用的书籍教的内容是,input()
的功能和Python 2中的raw_input()
是一样的,所以在这种情况下代码是正确的;不过,看起来你使用的是较旧的Python版本(可能是2.6?)。
我建议你去Python官网下载最新的Python 3版本,这样你在跟着书学习的时候会更轻松。
现在的问题是,既然你在用Python 2,你使用了input()
,这个函数会对你输入的内容进行计算。你其实想要的是获取用户输入的原始字符串:
Name = raw_input("What is your Name? ")
Python 3.x和2.x之间有很多小差别,所以如果你想继续使用Python 3 for Absolute Beginners这本书,绝对要去下载最新的Python 3。
你可能在使用 Python 2.x 版本,在这个版本中,input
会直接执行用户输入的内容。只有在 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.
>>>
如果你想运行特定版本的 Python(比如 3.1),可以用 python3.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 2.x中,input()
这个函数会期待你输入的是一个Python表达式。这意味着如果你输入d
,它会把这个当作一个叫做d的变量来处理。如果你输入的是"d"
,那就没问题了,因为它会把这个当作一个字符串。
你可能其实想用的是raw_input()
,这个函数会把你输入的内容当作原始字符串返回,而不是去计算它。
既然你遇到了这样的情况,说明你正在使用Python 2.x版本的解释器。建议你去www.python.org下载一个Python 3.x版本的解释器,这样就能和你正在使用的书籍内容相匹配了。