2011-08-23 66 views
7

Tôi có một số các số, giả sử nums = (1, 2, 3). Độ dài của chữ số không phải là hằng số. Có cách nào của việc sử dụng chuỗi định dạng trong python để làm một cái gì đó như thế nàyđịnh dạng chuỗi python cho độ dài tuple biến thiên

>>>print '%3d' % nums 

rằng sẽ sản xuất

>>> 1 2 3 

Hy vọng nó không phải là một câu hỏi lặp lại, nhưng tôi không thể tìm thấy nó nếu nó được. Cảm ơn

Trả lời

7

Hãy thử điều này:

print ('%3d'*len(nums)) % tuple(nums) 
2

Bạn có thể sử dụng .join():

nums = (1, 2, 3) 
"\t".join(str(x) for x in nums) # Joins each num together with a tab. 
1

là đủ này cho bạn?

print ' '.join(str(x) for x in nums) 
+0

@agf: cảm ơn vì bắt đó - c orrected. – viraptor

4

Vì không ai nói nó được nêu ra:

''.join('%3d' % num for num in nums) 
+0

trông num-my ... – Gerrat

+1

Num num num num. – nmichaels

-1
params = '%d' 
for i in range(1,15): 
    try: 
     newnum = (params)%nums 
    except: 
     params = params + ',%d' 
     next 
    print newnum 
+1

Bạn thậm chí đã cố gắng để chạy này? Gợi ý: nó sẽ sụp đổ nếu kích thước của 'nums' lớn hơn 1. – Maehler

+0

Nó hoạt động tốt cho tôi trên Gentoo Linux, Python 2.7.2 ...? – RightmireM

+0

Khi nhìn vào nó bây giờ, tôi thấy bạn đang suy nghĩ như thế nào. Tuy nhiên, phải có một lỗi thụt dòng trên dòng cuối cùng. Cách mã được viết ở đây, nó sẽ sụp đổ nếu 'len (nums)> 1', và nếu' len (nums) == 1', nó sẽ in số 14 lần. – Maehler

1

Sử dụng '' .format

nums = (1, 2, 3) 
print(''.join('{:3d} '.format(x) for x in nums)) 

sản xuất

>>> 1 2 3 
Các vấn đề liên quan