2015-11-26 21 views
0

我是一個python新手。我試圖理解爲什麼我得到這個錯誤:Python - 爲什麼我得到這個錯誤?

File "python-challenge-1.py", line 12 
    print original.translate(table) 
      ^

語法錯誤:無效的語法

下面是完整的代碼:

import string 

original = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc " \ 
    "dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq " \ 
    "rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu " \ 
    "ynnjw ml rfc spj." 

table = string.maketrans(
"abcdefghijklmnopqrstuvwxyz", "cdefghijklmnopqrstuvwxyzab" 
) 

print original.translate(table) 
+0

在Python 2.7下正常工作。可能你正在使用python 3.在打印語句後加上括號 –

回答

5

print()是在Python 3的功能,但print是Python 2中的關鍵字。有關更多信息,請檢查PEP 3105。另外here對於SO來說是個好問題。

你應該嘗試將其更改爲這樣:

print(original.translate(table)) 
1

爲@JoshRumbut指出,print()是一個真正的函數。

Python2,你可以寫print 12,但這在Python3被拋棄,所以你現在必須print(12)

幸運的是,Python2也理解功能版本,所以一般來說你最好使用這個。

+1

不要過於迂腐,但從技術上講,Python2的版本是語句,print('foo')在Python 2中工作,因爲print語句後面的表達式被強制爲字符串值,然後傳遞給打印。這意味着打印(是什麼。打印(1,2)意味着「打印元組(1,2)」,而「打印(1)」意味着「打印等於」1「的表達式」(1)「的值。打印(1,2),然後在Python2上運行,它將與Python3不同。 –

+1

@ W.Prins:你說的話當然是正確的,但是,更高版本的Python 2 _do_支持'print'函數。它通常被'print'語句掩蓋,但是可以通過將'from __future__ import print_function'放在任何其他'import'語句之前來暴露它(FWIW,我使用Python 2.6.6)。 –

+0

@ PM2Ring確實。謝謝爲了增加這一點。 –