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…
1
Il segnaposto %s viene sostituito con il valore di una stringa
titolo="Shrek"
print("Ho visto", titolo, "al cinema.")
print("Ho visto %s al cinema." %(titolo))
Ho visto Shrek al cinema.
Ho visto Shrek al cinema.
2
Il segnaposto %c viene sostituito con il valore di un carattere singolo
…
…
3
Il segnaposto %i (%d) viene sostituito con il valore di un intero
quanti=4
print("Ho svolto %i esercizi." %(quanti))
Ho svolto 4 esercizi.
4
Il segnaposto %f (%F) viene sostituito con il valore del float specificato.
Di default appare il valore arrotondato alla 6° cifra decimale.
somma=7.5
print("Ho speso € %f al bar." %(somma))
Ho speso € 7.500000 al bar.
5
La cifra dopo il punto specifica il numero di cifre decimali visibili del valore float
somma=7.5
print("Ho speso € %.2f al bar." %(somma))
Ho speso € 7.50 al bar.
6
Prova più segnaposti con specifiche diverse
x1=0.5
x2=7.5
print("%.1f*%.1f = %.2f" %(x1, x2, x1*x2))
0.5*7.5 = 3.75
7
Il numero dopo % specifica il numero di colonne (con allineamento a destra)
a1=1
a2=12
x1=0.5
x2=75.25
print("%2i %5.2f" %(a1, x1))
print("%2i %5.2f" %(a2, x2))
_1 _0.50
12 75.25
8
Lo 0, zero, forza il riempimento con la cifra zero degli spazi prima del numero
...
print("%04i %5.2f" %(a1, x1))
print("%04i %5.2f" %(a2, x2))
0001 0.50
0012 75.25
9
Il segno –, meno, dopo % specifica l’allineamento a sinistra
...
print("%-2i %6.2f" %(a1, x1))
print("%-2i %6.2f" %(a2, x2))
1 0.50
12 75.25
10
Il segno + forza l’output del segno anche quando il valore è positivo
a1=-5
a2=+5
print("[%i, %i]" %(a1, a2))
print("[%+i, %+i]" %(a1, a2))
[-5, 5]
[-5, +5]
11
%% visualizza il carattere %
x=7.5
print("Il %.1f%% del capitale investito." %(x))
Il 7.5% del capitale investito.
12
Un numero può apparire nella notazione scientifica
a=63.5
print("%e" %(a))
print("%E" %(a))
print("%.4e" %(a))
print("%12.4E" %(a))
6.350000e+01
6.350000E+01
6.3500e+01
6.3500E+01
13
Un numero intero può apparire nelle basi alternative
- ottale (o)
- esadecimale minuscolo (x)
- esadecimale maiuscolo (X)
a=63
print("%o" %(a))
print("%x" %(a))
print("%X" %(a))
77
3f
3F
14
All’interno di print() si può utilizzare end=”…” per rimanere sulla stessa linea
print("..." %(...), end="...")
…