2014-09-03 47 views
-7

我已經使用Python 3.4.1運行了這段代碼,它工作正常,但是如果我使用Python 2.7.8,它會失敗,爲什麼?程序在Python 2.7.8中失敗,但在Python 3.4.1中運行

i=1 
while i<10: 
    for x in(1,2,3,4,5,6,7,8,9): 
     print (i*x,'\t',end='') 
     if x==9: 
      print('\n') 
      i=i+1 
+6

您的問題標題與問題主體完全不同 - 請修復它。另外,添加錯誤信息會非常有幫助 – 2014-09-03 09:54:20

+1

互聯網上有這麼多地方會告訴你Python 2.x和Python 3.x之間的區別(https://docs.python.org/3.0/ whatsnew/3.0.html一開始)。有一個通讀這些。如果您剛剛開始使用Python,請先從Python 3開始,暫時放棄Python 2。 – Evert 2014-09-03 09:58:17

+1

您的問題*標題*在這裏脫離主題;我們無法在這裏爲您提供'最佳'選擇。標題和問題主體是完全不相關的,但是你的問題主體缺乏詳細的答案而沒有猜測。 ** Python 2中的代碼如何失敗?你預期會發生什麼? – 2014-09-03 10:06:41

回答

1

事實上,print是在Python 3而不是Python的2.在Python 2的功能,你需要刪除()end。作爲替代方案,您可以添加到from __future__ import print_function在Python 2代碼中使用print作爲在Python 3

1

當中Python版本2.x和3.x之間的重大更改是print is a function - 在2.X是陳述。你有兩個選擇,要麼使用:

from __future__ import print_function 

在你的腳本,以使用新功能2.x或有一個單獨的2.x版與舊的語法的頂部:

print '{0}\t'.format(i * x), # note trailing comma to suppress newline 

在我看來,前者要容易得多。

注意,等效2.x的print聲明默認sep是一個單一的空間,所以天真版本

print i * x, '\t', 

將包括標籤之前的額外空間。此外,請注意,您的3.x版本可以稍微簡單一些:

print(i * x, end='\t') 
相關問題