2013-09-30 47 views
2

我試圖寫我的第一個python程序,我已經收到一條錯誤消息。在教科書介紹了使用python計算機科學,我發現下面的代碼:第一個python程序錯誤消息

name = input('What is your name? ') 
print('Hello', name) 
print('Welcome to Python!') 

我檢查了多次錯誤,我敢肯定我鍵入它完全一樣的教科書狀態。我將程序保存爲MyFirstProgram.py,然後運行模塊(按F5)。如果我理解正確,程序會要求你填寫一個名字。所以我打了'約翰'。但是當我這樣做時,發生以下錯誤:

Traceback (most recent call last): 
    File "C:/Users/Wout/.ipython/MyFirstProgram.py", line 3, in <module> 
    name = input('What is your name? ') 
    File "<string>", line 1, in <module> 
NameError: name 'John' is not defined 

爲什麼'約翰'沒有定義?這不是程序輸入任何名稱的目的嗎?爲什麼我必須定義它?我跟着指示信...

親切的問候

+0

既然你使用python 2.x中,你可能不希望在括號中的'打印'聲明。 – SethMMorton

回答

2

input,在Python 2,評估輸入,就像它是Python代碼片段。這幾乎從來都不是你想要的。改爲使用raw_input

順便說一下,您將自己的代碼編寫爲Python 3,但您似乎正在使用Python 2解釋器。如果您使用Python 3運行代碼,它將正常工作(Python 3中的input與Python 2中的raw_input相同)。

+0

謝謝!這工作! – tfcgoldfish

1

您應該使用raw_input()代替input(),因爲你是在上python-2.X:

name = raw_input('What is your name? ') 
print('Hello', name) 
print('Welcome to Python!') 

打印:

What is your name? John 
('Hello', 'John') 
Welcome to Python! 
+0

如果您希望'print'作爲一個函數並輸出'Hello John'而不是'('Hello','John'),則可以從'__future__ import'添加'print_function'' – KurzedMetal

0

您正在關注的教科書爲Python 3,但使用Python 2.在Python 2中,必須使用raw_input,並且不需要在打印語句中使用括號。

0

'John'將工作與inputJohn將無法​​正常工作),但你應該使用raw_input()喜歡別人說