2015-06-07 18 views
6

Ich möchte die Elemente eines Arrays ohne Kommas und in separaten Zeilen drucken. Ich schreibe eine Funktion zum Einfügen von sort. Obwohl es richtig funktioniert, finde ich es schwierig, sie richtig zu drucken. Der Code, den ich geschrieben habe, ist:Listenelemente in neuer Zeile drucken

#!/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) 

Der Ausgang ich erhalte, ist:

2 4 6 8 8 

2 4 6 6 8 

2 4 4 6 8 

2 3 4 6 8 

ich sollte die folgende Ausgabe für den Code erhalten Sie den Testfall passieren:

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

dh ohne den zusätzlichen Abstand zwischen den Zeilen. Klicken Sie auf here für die detaillierte Problembeschreibung.

+3

'print '\ n'' wird zwei neue Zeilen drucken ... eine explizite, die andere implizite ... –

+2

Dies ist der definierende Unterschied zwischen' sys.stdout.write' und 'print'. –

Antwort

5

print Anweisung anfügt eine neue Zeile automatisch, wenn Sie also

print '\n' 

verwenden Sie zwei neue Linien erhalten. So können Sie eine leere Zeichenfolge als in print '' verwenden oder der bessere Weg wäre print für sich zu nutzen:

print 
+3

'print' an sich ist in Ordnung ... :) –

+0

Danke. Ich habe das hinzugefügt! :) –

1

Dies könnte ein fix sein -

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) 

Bearbeiten - Ok!^Jemand hat das schon erwähnt.