Esercizi Python intermedi, svolti e spiegati (eseguibili nel browser)
Hai le basi di Python (variabili, condizioni, cicli) e vuoi fare il salto al livello intermedio? Questi sei esercizi coprono gli strumenti che separano chi "sa la sintassi" da chi sa risolvere problemi: funzioni, dizionari, comprehension e gestione errori. Tutti eseguibili e modificabili qui con "Prova tu".
Esercizio 1 — Una funzione che calcola
Scrivi una funzione che dice se un anno è bisestile.
def e_bisestile(anno):
return anno % 4 == 0 and (anno % 100 != 0 or anno % 400 == 0)
print(e_bisestile(2024))
print(e_bisestile(1900))
print(e_bisestile(2000))Una funzione che restituisce un valore (return) è riutilizzabile e testabile. Nota come la logica bisestile stia tutta in una riga di condizioni.
Esercizio 2 — Un dizionario come rubrica
Salva dei contatti e cerca un numero.
rubrica = {"Anna": "333-111", "Luca": "333-222"}
rubrica["Marco"] = "333-333" # aggiungi
print(rubrica["Luca"]) # cerca
print("Sara" in rubrica) # esiste?Il dizionario associa una chiave (il nome) a un valore (il numero): ricerca istantanea, senza scorrere una lista. È una delle strutture più usate in assoluto.
Esercizio 3 — List comprehension
Da una lista di numeri, tieni solo i quadrati dei pari.
numeri = [1, 2, 3, 4, 5, 6]
quadrati_pari = [n * n for n in numeri if n % 2 == 0]
print(quadrati_pari)La comprehension costruisce una lista in una riga: "prendi n*n per ogni n in numeri, se n è pari". È il modo idiomatico (e leggibile) di trasformare i dati in Python.
Esercizio 4 — Contare le frequenze
Conta quante volte compare ogni parola.
parole = ["pane", "latte", "pane", "caffè", "latte", "pane"]
conteggio = {}
for p in parole:
conteggio[p] = conteggio.get(p, 0) + 1
print(conteggio).get(p, 0) restituisce il valore attuale o 0 se la chiave non c'è ancora: lo schema classico per contare. Il risultato è un dizionario parola → occorrenze.
Esercizio 5 — Filtrare e ordinare
Da una lista di persone, tieni i maggiorenni ordinati per età.
persone = [("Anna", 17), ("Luca", 25), ("Sara", 19)]
maggiorenni = [p for p in persone if p[1] >= 18]
maggiorenni.sort(key=lambda p: p[1])
print(maggiorenni)key=lambda p: p[1] dice a sort di ordinare in base al secondo elemento (l'età). Le lambda sono funzioni "usa e getta" utilissime proprio in casi come questo.
Esercizio 6 — Gestire gli errori
Dividi due numeri senza far crashare il programma se il divisore è zero.
def dividi(a, b):
try:
return a / b
except ZeroDivisionError:
return "Impossibile dividere per zero"
print(dividi(10, 2))
print(dividi(10, 0))try/except intercetta l'errore invece di far esplodere il programma: è ciò che rende un codice "robusto". Distingue lo script di prova dal programma vero.
E adesso?
Se questi esercizi ti sono venuti bene, sei pronto per la parte più interessante di Python. Il percorso Python prosegue con OOP, moduli, file e progetti guidati, sempre con pratica eseguibile nel browser. I primi capitoli sono gratuiti; nel playground puoi sperimentare liberamente.