2010-04-10 50 views
9

我正在學習python並出現此錯誤。我可以找出代碼中錯誤的位置。 File "<string>", line 1, in <module>python d中的錯誤未定義。

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中的示例代碼初學者。

回答

17

在Python 2.x的,input()預計應該說這是Python表達式,這意味着,如果鍵入d它解釋,作爲一個變量名爲 d。如果你輸入"d",那就沒問題。

2.x可能實際需要的是raw_input(),它將輸入的值作爲原始字符串返回而不是評估它。

既然你得到了這個行爲,它看起來像你使用Python解釋器的2.x版本 - 相反,我會去www.python.org並下載一個Python 3.x解釋器,以便它匹配與你正在使用的書一起。

1

在Python 3.0及以上版本中,您正在使用的書教授,input()在Python 2中做了raw_input()的工作,因此在這種情況下代碼將是正確的;但是,看起來您使用的是較舊版本的Python(2.6?)。

我建議您去Python website並下載最新版本的Python 3,以便您更輕鬆地閱讀本書。


眼前的問題,因爲你正在使用Python 2,是您使用input(),其評估無論你給它。你想要做的是獲取原始的字符串,用戶輸入:

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

有很多Python的3.x和2.x的之間的差異不大,所以肯定去,如果你想獲得最新的Python 3繼續使用絕對初學者Python 3 3

3

您可能使用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. 
>>> 
+0

嗨kennyTM 非常感謝!它看起來像版本衝突:( Python 2.6。4(r264:75706,2009年12月7日,18:45:15) [GCC 4.4.1] on linux2 將升級我的python版本。如果沒有你們,我再也不會想到了:) – dtechie 2010-04-10 10:22:04