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

Edit - Ok! Кто-то уже упоминал об этом.

Смежные вопросы