Salta ai contenuti
Manuale LogoManuale Logo

Formattazione dell'output

I dati grezzi non sono sempre facili da leggere. La formattazione permette di scegliere il numero di cifre decimali e di allineare il testo in colonne.

Le f-string, disponibili da Python 3.6, permettono di inserire variabili nelle stringhe in modo diretto. Si scrivono mettendo f prima delle virgolette:

nome = "Alice"
eta = 16
print(f"Mi chiamo {nome} e ho {eta} anni.")
# Mi chiamo Alice e ho 16 anni.

Tra le parentesi graffe puoi scrivere un’espressione Python:

a, b = 5, 3
print(f"{a} + {b} = {a + b}")
print(f"Il quadrato di {a} è {a**2}")

Per i numeri decimali puoi specificare quante cifre mostrare dopo la virgola:

pi = 3.14159265
print(f"{pi:.2f}") # 3.14: 2 cifre decimali
print(f"{pi:.4f}") # 3.1416: 4 cifre decimali
print(f"{pi:.0f}") # 3: nessuna cifra decimale

La sintassi è {valore:.Nf} dove N è il numero di cifre decimali.

percentuale = 0.75
print(f"{percentuale:.0%}") # 75%
print(f"{percentuale:.2%}") # 75.00%

Con questo formato Python moltiplica per 100 e aggiunge automaticamente %.

Per i numeri grandi, puoi aggiungere la virgola come separatore:

numero = 1234567
print(f"{numero:,}") # 1,234,567

Per creare colonne allineate puoi specificare larghezza e direzione dell’allineamento:

print(f"{'Sinistra':<15}|") # allineato a sinistra, 15 caratteri
print(f"{'Centro':^15}|") # centrato
print(f"{'Destra':>15}|") # allineato a destra

Output:

Sinistra |
Centro |
Destra|

La funzione print() ha due opzioni utili:

sep: il testo che Python mette tra gli argomenti (default: uno spazio).

print("mela", "banana", "uva") # mela banana uva
print("mela", "banana", "uva", sep=", ") # mela, banana, uva
print("mela", "banana", "uva", sep=" | ") # mela | banana | uva

end: il testo aggiunto alla fine (default: va a capo \n).

print("Ciao", end=" ")
print("mondo!") # Ciao mondo! Sulla stessa riga

Utile per stampare più elementi sulla stessa riga in un ciclo:

for i in range(5):
print(i, end=" ")
print() # va a capo alla fine
# Output: 0 1 2 3 4
studenti = [
("Alice", 16, 8.5),
("Bob", 15, 7.0),
("Carlo", 17, 9.2),
]
# Intestazione della tabella
print(f"{'Nome':<10} {'Età':>5} {'Media':>8}")
print("-" * 25)
# Righe della tabella
for nome, eta, media in studenti:
print(f"{nome:<10} {eta:>5} {media:>8.1f}")

Output:

Nome Età Media
-------------------------
Alice 16 8.5
Bob 15 7.0
Carlo 17 9.2