L’output della funzione print() di Python può essere formattato secondo le regole della funzione printf() di C
- La stringa iniziale “…” specifica l’intero output
- L’elenco successivo %(…) specifica i dati da inserire nella stringa
- I caratteri % nella stringa sono dei segnaposto per dei dati da visualizzare (con eventuale formattazione)
- I dati possono essere variabili/espressioni/funzioni
- Per formattare i dati si utilizzano i caratteri: + / – / . / c / d / e / E / f / F / i / o / s / x / X / 0
- La tecnica del print formattato è considerata obsoleta rispetto all’uso della nuova funzione format().
format() può risultare ancora più macchinosa di print…
Segnaposto
Il segnaposto %s viene sostituito con il valore di una stringa
1 2 3 |
titolo="Shrek" print("Ho visto", titolo, "al cinema.") # Ho visto Shrek al cinema. print("Ho visto %s al cinema." %(titolo)) # Ho visto Shrek al cinema. |
Il segnaposto %c viene sostituito con il valore di un carattere singolo
1 |
... |
Il segnaposto %i (%d) viene sostituito con il valore di un intero
1 2 |
quanti=4 print("Ho svolto %i esercizi." %(quanti)) # Ho svolto 4 esercizi. |
Il segnaposto %f (%F) viene sostituito con il valore del float specificato.
Di default appare il valore arrotondato alla 6° cifra decimale
1 2 |
somma=7.5 print("Ho perso € %f al bar." %(somma)) # Ho perso € 7.500000 al bar. |
Numero di colonne, cifre
La cifra dopo il punto specifica il numero di cifre decimali visibili del valore float
1 2 |
somma=7.5 print("Ho perso € %.2f al bar." %(somma)) # Ho perso € 7.50 al bar. |
Prova più segnaposti con specifiche diverse
1 2 3 |
x1=0.5 x2=7.5 print("%.1f*%.1f = %.2f" %(x1, x2, x1*x2)) # 0.5*7.5 = 3.75 |
Il numero dopo % specifica il numero di colonne (con allineamento a destra)
1 2 3 4 5 6 |
a1=1 a2=12 x1=0.5 x2=75.25 print("%2i %6.2f" %(a1, x1)) # 1 0.50 print("%2i %6.2f" %(a2, x2)) # 12 75.25 |
Ulteriori specifiche
Lo 0, zero, forza il riempimento con la cifra zero degli spazi prima del numero
1 2 3 |
... print("%04i %6.2f" %(a1, x1)) # 0001 0.50 print("%04i %6.2f" %(a2, x2)) # 0012 75.25 |
Il segno –, meno, dopo % specifica l’allineamento a sinistra
1 2 3 |
... print("%-2i %6.2f" %(a1, x1)) # 1 0.50 print("%-2i %6.2f" %(a2, x2)) # 12 75.25 |
Il segno + forza l’output del segno anche quando il valore è positivo
1 2 3 4 |
a1=-5 a2=+5 print("[%i,%i]" %(a1, a2)) # [-5,5] print("[%+i,%+i]" %(a1, a2)) # [-5,+5] |
%% visualizza il carattere %
1 2 |
x=7.5 print("Il %.1f%% del capitale investito." %(x)) # Il 7.5% del capitale investito. |
Notazione scientifica
Un numero può apparire nella notazione scientifica
1 2 3 4 5 |
a=63.5 print("%e" %(a)) # 6.350000e+01 print("%E" %(a)) # 6.350000E+01 print("%.4e" %(a)) # 6.3500e+01 print("%12.4E" %(a)) # 6.3500E+01 |
Basi numeriche
Un numero intero può apparire nelle basi alternative
- ottale (o)
- esadecimale (x, X)
1 2 3 4 |
a=63 print("%o" %(a)) # 77 print("%x" %(a)) # 3f print("%X" %(a)) # 3F |
end
All’interno di print() si può utilizzare end=”…” per rimanere sulla stessa linea
1 |
print("..." %(...), end="...") |