2015-06-07 17 views
6

Desidero stampare gli elementi di una matrice, senza virgole e su righe separate. Sto scrivendo una funzione per l'ordinamento di inserzione. Sebbene funzioni correttamente, trovo che sia complicato stamparli correttamente. Il codice che ho scritto è:Stampa elementi della lista sulla nuova riga

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

L'output che ottengo è:

2 4 6 8 8 

2 4 6 6 8 

2 4 4 6 8 

2 3 4 6 8 

dovrei ottenere il seguente output per il codice per passare il test case:

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

cioè senza lo spazio extra tra le linee. Fare clic su here per la dichiarazione dettagliata del problema.

+3

'print '\ n'' stamperà due nuove righe ... una esplicita, l'altra implicita ... –

+2

Questa è la differenza di definizione tra' sys.stdout.write' e 'print'. –

risposta

5

print dichiarazione aggiunge una nuova linea automaticamente, quindi se si utilizza

print '\n' 

Otterrete due nuove linee. Così si può utilizzare una stringa vuota come nella print '' o il modo migliore sarebbe quella di utilizzare print da solo:

print 
+3

'print' da solo va bene ... :) –

+0

Grazie. L'ho aggiunto! :) –

1

Questa potrebbe essere una correzione -

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!^Qualcuno ha già detto questo.

Problemi correlati