2012-04-27 18 views
0

我在一個教學python的類中,並且在任何編碼方面都是初學者。我一直遇到這個問題,在教科書或附加資料中找不到任何解釋我做錯了什麼的問題。以下是我遇到麻煩的練習中的一個例子。任務是編寫一個程序,該程序需要用戶給出的一個句子,並重新排列這些單詞以獲得「yoda說話」。這是我的。在python中輸入一個句子作爲評論的麻煩

def main(): 

    print("Enter a sentence and have it translated into Yoda speak!") 

    sentence= eval(input("Enter your sentence: ")) 
    word_list=sentence.split() 

    yoda_words= word_list[2:]+word_list[0:2] 

    yoda_says= yoda_words.join() 

    print("Yoda says: ", yoda_says) 

main() 

但是爲什麼我嘗試運行該程序,我得到這樣的:

輸入一個句子,並把它翻譯成尤達說話!

輸入你的句子:簡跑得飛快

回溯(最近通話最後一個): 文件 「C:\ Program Files文件(x86)的\永IDE 101 4.0的\ src \調試\ tserver_sandbox.py」,行14,在 文件「C:\ Program Files文件(x86)\ Wing IDE 101 4.0 \ src \ debug \ tserver_sandbox.py」,第5行,在主 文件「」,第1行, 語法錯誤:珍跑得快:,第18行

我認爲問題來自我使用整個eval(input())命令錯誤。有人能解釋我做錯了什麼嗎?

+0

你期望'eval'做什麼?你想做什麼? – 2012-04-27 08:49:32

回答

2

我會用下面的(見注1)更換您的輸入語句:

sentance= input("Enter your sentence: ") 

此外,嘗試一下本作的加入:

' '.join(yoda_words) 

(注1)正如@指出Boud下面,更好地使用Python 3.x(例如What's the difference between raw_input() and input() in python3.x?input(而不是Python 2.x中的raw_input)

我目前無權訪問Python 3.x - reall你應該安裝它。

+1

對於Python 3,使用'輸入' – Boud 2012-04-27 06:33:54

+0

@Boud謝謝指出這一點..我真的應該開始使用Python 3.x – Levon 2012-04-27 06:36:47

4

eval運行Python代碼,例如, eval(「1 + 1」)返回2,這不是你想要的。這就是你在「Jane跑得快」時得到語法錯誤的原因,Python正在嘗試執行Jane ran fast

刪除eval,你會沒事的。

2

eval是不必要的。刪除它,所有應該工作正常。這只是修復「感知」的拼寫:-)