Perché non posso usare la tupla come argomento per il formattatore in un nuovo stile ("stringa" .format())? Funziona bene in vecchio stile ("stringa"%)?Nuovo stile di formattazione con tupla come argomento
Questo codice funziona:
>>> tuple = (500000, 500, 5)
... print "First item: %d, second item: %d and third item: %d." % tuple
First item: 500000, second item: 500 and third item: 5.
E questo non lo fa:
>>> tuple = (500000, 500, 5)
... print("First item: {:d}, second item: {:d} and third item: {:d}."
... .format(tuple))
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
ValueError: Unknown format code 'd' for object of type 'str'
Anche con {r!}
>>> tuple = (500000, 500, 5)
... print("First item: {!r}, second item: {!r} and third item: {!r}."
... .format(tuple))
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
IndexError: tuple index out of range
Anche se funziona con questo modo:
>>> print("First item: {!r}, second item: {!r} and third item: {!r}."
... .format(500000, 500, 50))
First item: 500000, second item: 500 and third item: 5.
+1 per rinominare la variabile. –
@Volatility Penso che {: d} non sia necessario. Se vuoi ordinare i dati puoi usare semplicemente {} o specificare l'ordine con indice o dati in tuple {0} {1} {2} – GeoStoneMarten
@GeoStoneMarten mentre sono d'accordo, usando '{: d} 'indica più chiaramente che tu vuoi un numero decimale lì (per qualcun altro che legge il tuo codice) – Petzku