Tutte le guide

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.

Impara facendo, non solo leggendo

Percorsi da zero ad avanzato con esercizi che scrivi ed esegui nel browser. I primi capitoli sono gratis.

Esercizi Python intermedi, svolti e spiegati (eseguibili nel browser) — LevelUpCode