2015-06-07 106 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) 

编辑 - 好吧! ^有人已经提到过。