Python中未定义的错误d。

16 投票
3 回答
49938 浏览
提问于 2025-04-15 21:27

我正在学习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 个回答

1

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

4

你可能在使用 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.
>>> 
21

在Python 2.x中,input()这个函数会期待你输入的是一个Python表达式。这意味着如果你输入d,它会把这个当作一个叫做d的变量来处理。如果你输入的是"d",那就没问题了,因为它会把这个当作一个字符串。

你可能其实想用的是raw_input(),这个函数会把你输入的内容当作原始字符串返回,而不是去计算它。

既然你遇到了这样的情况,说明你正在使用Python 2.x版本的解释器。建议你去www.python.org下载一个Python 3.x版本的解释器,这样就能和你正在使用的书籍内容相匹配了。

撰写回答