2015-06-07 29 views
6

我希望打印數組的元素,不帶逗號和單獨的行。我正在編寫插入排序功能。雖然它能正常工作,但我發現要正確打印它們非常困難。我寫的代碼是:在新行上打印列表元素

#!/bin/python 
def insertionSort(ar):  
    newNo = ar[-1] 
    for i in range(0, m-1): 
     if(newNo < ar[m-i-1]): 
      ar[m-i] = ar[m-i-1] 
      for e in ar: 
       print e, 
      print '\n' 
    ar[m-i-1] = newNo 
    for f in ar: print f, 

m = input() 
ar = [int(i) for i in raw_input().strip().split()] 
insertionSort(ar) 

我得到的輸出是:

2 4 6 8 8 

2 4 6 6 8 

2 4 4 6 8 

2 3 4 6 8 

我應該得到的代碼下面的輸出通過測試案例:

2 4 6 8 8 
2 4 6 6 8 
2 4 4 6 8 
2 3 4 6 8 

即沒有線之間的額外空間。點擊here查看詳細的問題陳述。

+3

'print'\ n''會打印兩條新行......一條明確,另一條隱含...... –

+2

這是'sys.stdout.write'和'print'之間的定義區別。 –

回答

5

print語句自動附加一個新的生產線,因此,如果您使用

print '\n' 

您將獲得兩個新的生產線。所以,你可以用一個空字符串作爲print ''或更好的方式是通過自身使用print

print 
+3

'print'本身就不錯...... :) –

+0

謝謝。我補充說! :) –

1

這可能是修復 -

def insertionSort(ar):  
newNo = ar[-1] 
for i in range(0, m-1): 
    if(newNo < ar[m-i-1]): 
     ar[m-i] = ar[m-i-1] 
     for e in ar: 
      print e, 
     print 
ar[m-i-1] = newNo 
for f in ar: print f, 

m = input() 
ar = [int(i) for i in raw_input().strip().split()] 
insertionSort(ar) 

編輯 - 好吧! ^有人已經提到過。