2015-06-07 25 views
6

Tôi muốn in các phần tử của mảng, không có dấu phẩy và trên các dòng riêng biệt. Tôi đang viết một hàm để sắp xếp chèn. Mặc dù nó hoạt động chính xác, tôi thấy nó khó khăn để in chúng đúng cách. Mã tôi đã viết là:In các yếu tố danh sách trên dòng mới

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

Kết quả tôi nhận được là:

2 4 6 8 8 

2 4 6 6 8 

2 4 4 6 8 

2 3 4 6 8 

tôi nên nhận được đầu ra sau cho mã để vượt qua các trường hợp thử nghiệm:

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

tức là không có khoảng trống thừa giữa các dòng. Nhấp vào here để biết báo cáo sự cố chi tiết.

+3

'in '\ n'' sẽ in hai dòng mới ... một cách rõ ràng, ẩn khác ... –

+2

Đây là sự khác biệt xác định giữa' sys.stdout.write' và 'print'. –

Trả lời

5

print tuyên bố gắn thêm một dòng mới tự động, vì vậy nếu bạn sử dụng

print '\n' 

Bạn sẽ nhận được hai dòng mới. Vì vậy, bạn có thể sử dụng một chuỗi rỗng như trong print '' hoặc cách tốt hơn là nên sử dụng print tự:

print 
+3

'in' tự nó là tốt ... :) –

+0

Cảm ơn. Tôi đã thêm điều đó! :) –

1

Đây có thể là một sửa chữa -

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!^Ai đó đã đề cập đến điều đó.

Các vấn đề liên quan