Vai al contenuto
eLearner.app
Modulo 1 · Lezione 4 di 44/36 nel corso~8 min
Lezioni del modulo (4/4)

Stampa e f-string

Per comunicare qualcosa all'utente (o vedere cosa sta succedendo dentro il nostro programma) usiamo la funzione predefinita print(...). Per comporre testo a partire da più valori, la sintassi moderna e preferita sono le f-string.

print(...)

Python
print("Ciao, mondo!")           # Ciao, mondo!
print("a", "b", "c")            # a b c       (separati da spazio)
print(2 + 2)                    # 4
print("riga 1", "riga 2")       # riga 1 riga 2

print può ricevere quanti argomenti vuoi: li unisce con uno spazio (per default) e aggiunge un newline alla fine. Puoi cambiare entrambi con i parametri sep e end:

Python
print("a", "b", "c", sep="-")   # a-b-c
print("senza newline", end="")  # niente \n dopo

f-string: interpolazione moderna

Una f-string è una stringa prefissata da f: dentro le graffe {...} puoi inserire qualunque espressione Python, che verrà valutata e inserita nel risultato:

Python
nome = "Ada"
anni = 30
print(f"Mi chiamo {nome} e ho {anni} anni.")
# Mi chiamo Ada e ho 30 anni.

Dentro le graffe puoi mettere chiamate, operazioni, accessi a oggetti — è codice Python a tutti gli effetti:

Python
prezzo = 12.5
quantita = 3
print(f"Totale: {prezzo * quantita:.2f} €")
# Totale: 37.50 €

Il :.2f dopo i due punti è una format spec: in questo caso "due cifre decimali, fixed-point". Le format spec più utili:

  • :.Nf — N cifre decimali (f"{pi:.4f}"3.1416).
  • :N / :>N / :<N / :^N — larghezza N, allineamento destra/sinistra/centro.
  • :_ o :, — separatore di migliaia (f"{1000000:,}"1,000,000).

Sintassi alternative (per riferimento)

Prima delle f-string (introdotte in Python 3.6) si usavano due forme che incontrerai ancora in codice più vecchio:

Python
# stile .format() — verboso ma esplicito
"{} ha {} anni".format("Ada", 30)

# stile %-formatting — molto vecchio
"%s ha %d anni" % ("Ada", 30)

Per codice nuovo, usa sempre le f-string: più corte, più leggibili, più veloci.

Formattazione avanzata con f-string

Le f-string supportano specifiche di formattazione molto ricche all'interno delle parentesi graffe. Ad esempio, per formattare un numero decimale a due cifre dopo la virgola puoi scrivere:

Python
prezzo = 19.99
print(f"Prezzo: {prezzo:.2f} €")

La notazione :.2f indica che vogliamo rappresentare il numero float con esattamente 2 cifre decimali.

Prova tu

Esercizio#python.m1.l4.e1
Tentativi: 0Caricamento…

Dati `name = 'Ada'` e `age = 30`, costruisci con una f-string la stringa 'Ada ha 30 anni' e assegnala a `line`. Valuta `line`.

Caricamento editor…
Mostra suggerimento

Sintassi: f"qualcosa {variabile} qualcos'altro"

Soluzione disponibile dopo 3 tentativi

Esercizio di ripasso

Esercizio#python.m1.l4.e2
Tentativi: 0Caricamento…

Stampa con print() la stringa 'pi greco vale 3.14' partendo da `pi = 3.14159`, usando una f-string con format spec a 2 decimali.

Caricamento editor…
Mostra suggerimento

La format spec va dopo i due punti dentro le graffe: {pi:.2f}.

Soluzione disponibile dopo 3 tentativi

Sfida aggiuntiva

Esercizio#python.m1.l4.e3
Tentativi: 0Caricamento…

Data una variabile `price` pari a `19.99`, usa una f-string per comporre la stringa `'Prezzo: 19.99 €'` e salvala in `receipt_line`. Valuta infine la variabile.

Caricamento editor…
Mostra suggerimento

Usa f"Prezzo: {price} €" e assegna il risultato a receipt_line.

Soluzione disponibile dopo 3 tentativi