2011-08-23 17 views
7

Mam krotkę liczb, powiedzmy nums = (1, 2, 3). Długość liczb nie jest stała. Czy istnieje sposób używania znaków formatowania w Pythonie, aby zrobić coś takiegoformat ciągów python dla zmiennych długości krotek

>>>print '%3d' % nums 

że będzie produkować

>>> 1 2 3 

nadzieję, że nie powtórzyć pytanie, ale nie mogę go znaleźć, jeśli to jest. Dzięki

Odpowiedz

7

Spróbuj tego:

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

Można użyć .join():

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

Czy to dla Ciebie za mało?

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

@agf: dzięki za to wzrok - do orrected. – viraptor

4

Ponieważ nikt nie powiedział jej jeszcze:

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

wygląda 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

Czy próbowałeś nawet to uruchomić? Podpowiedź: ulegnie awarii, jeśli rozmiar 'nums' jest większy niż 1. – Maehler

+0

Dla mnie działało dobrze na Gentoo Linux, Pythonie 2.7.2 ...? – RightmireM

+0

Patrząc na to teraz, widzę, jak sobie myślisz. Jednak w ostatnim wierszu musi występować błąd wcięcia. Sposób, w jaki napisany jest tutaj kod, ulegnie awarii, jeżeli 'len (nums)> 1', a jeśli' len (nums) == 1', wydrukuje liczbę 14 razy. – Maehler

1

Korzystanie '' .format

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

produkującej

>>> 1 2 3 
Powiązane problemy