Corso
Il modo migliore per imparare Python è creare familiarità attraverso ripetizione, sperimentazione e problem solving. Ecco perché la filosofia del "learn by doing" è al centro della formazione dei programmatori efficaci.
Scrivere codice, sbagliare e correggere è il modo in cui puoi costruire competenze reali.
In questo articolo, lavoreremo su una serie strutturata di esercizi di Python pensati appositamente per principianti. Gli esercizi partono da semplici variabili e passano gradualmente a funzioni, strutture dati e piccoli progetti sui dati.
Prima di proseguire nella lettura, ecco una sfida per te: prova a risolvere subito i primi tre esercizi di questo articolo, senza guardare le spiegazioni. Anche se ti blocchi, è proprio nel tentativo che avviene la maggior parte dell'apprendimento.
Se preferisci un'esperienza più guidata, i corsi DataCamp verificano automaticamente la tua sintassi e la tua logica passo dopo passo. Questo prevene piccoli errori dal bloccare i progressi ed è particolarmente utile per i principianti. Un buon punto di partenza è il corso Introduction to Python.
Iniziare con gli esercizi di Python
Prima di passare agli esercizi, ti serve un ambiente di base per scrivere ed eseguire codice Python. Per fortuna, iniziare è più semplice che mai.
Preparazione
Per eseguire Python in locale, installa un editor di codice adatto ai principianti come Visual Studio Code.
Un setup tipico è questo:
-
Installa Python dal sito ufficiale
-
Installa Visual Studio Code
-
Aggiungi l'estensione Python dentro VS Code
-
Crea un nuovo file
.pye inizia a scrivere codice

VS Code è un buon posto per iniziare a programmare, perché è open source e gratuito. Puoi visitare la loro pagina dei download per scaricare il software. Procedi e installalo una volta completato il download.
Se preferisci non installare nulla, puoi usare DataLab, un ambiente basato sul browser che ti consente di eseguire immediatamente codice Python (e SQL). È ideale per seguire i tutorial, testare frammenti di codice e sperimentare senza preoccuparti dei problemi di configurazione.
Come usare questi esercizi
Per massimizzare l'apprendimento, ogni esercizio in questo articolo è pensato per essere provato prima di leggere la soluzione o la spiegazione.
Ecco il modo migliore per sfruttarli al massimo:
- Dedica almeno 15 minuti a tentare una soluzione in autonomia
- Scrivi il programma completo, anche se ti sembra ripetitivo
- Controlla il solutionario solo dopo aver provato
Un solutionario completo per tutti gli esercizi è disponibile in un workbook DataLab collegato qui. Ti permette di confrontare il tuo approccio con una soluzione funzionante e capire modi alternativi di risolvere lo stesso problema.

Esercizi di Python su variabili, input e output
Iniziamo con alcuni esercizi di base che si concentrano sui mattoni fondamentali: salvare valori, leggere input dell'utente e stampare output a schermo.
Il saluto personalizzato
Per iniziare, vediamo un semplice esercizio di Python che stampa un messaggio personalizzato.
Esercizio
Scrivi un programma che:
-
Chiede all'utente il nome usando
input() -
Chiede all'utente l'età usando
input() -
Stampa un messaggio di saluto usando stringhe formattate
-
Calcola l'anno in cui l'utente compie 100 anni
Prima di scrivere il codice, è utile pensare a come fluisce l'informazione in un programma semplice come questo. L'utente fornisce input grezzo come testo, Python lo memorizza in variabili e poi trasformi quei valori in qualcosa di significativo.
Questo esercizio rispecchia molti programmi reali, dove l'input dell'utente raramente è utilizzabile nella sua forma originale e va prima validato o convertito.
Codice iniziale
Ecco del codice di partenza per guidarti:
# Task: Ask for the user's name
name = input("Enter your name: ")
# Task: Ask for the user's age (note: input() returns a string)
age_str = input("Enter your age: ")
# Task: Convert age_str to an int
# age = ...
# Task: Calculate the year the user turns 100
# Tip: you'll need the current year
# current_year = ...
# year_turn_100 = ...
# Task: Print a personalized message using an f-string
# print(...)
Concetti chiave esercitati
-
input()restituisce sempre una stringa -
Conversione di stringhe in interi con
int() -
Aritmetica di base con i numeri
-
Formattazione di stringhe con f-string
Questo esercizio ti insegna che spesso l'input dell'utente deve essere trasformato prima di poter essere usato nei calcoli.
Il convertitore di temperatura
Applichiamo le tue abilità di Python a qualche conversione di unità di base.
Esercizio
Scrivi un programma che:
-
Chiede all'utente una temperatura in Celsius
-
La converte in Fahrenheit usando la formula:
F = (C × 9/5) + 32 -
Stampa la temperatura convertita
Codice iniziale
Ecco del codice di partenza per guidarti:
# Task: Ask the user for a Celsius temperature
celsius_str = input("Temperature in Celsius: ")
# Task: Convert the input to a float
# celsius = ...
# Task: Apply the conversion formula
# fahrenheit = ...
# Task: Print the result (consider formatting to 1–2 decimal places)
# print(...)
Concetti chiave esercitati
-
Numeri in virgola mobile
-
Espressioni aritmetiche
-
Cast di tipo con
float()
Questo esercizio rafforza l'idea che non tutti gli input numerici sono numeri interi e che Python gestisce naturalmente i decimali.
L'enigma dello scambio
Questo esercizio sembra banale, ma troppo spesso i principianti pensano alle variabili come a scatole da svuotare e riempire passo dopo passo. Vediamo come eseguire uno scambio di valori in Python.
Esercizio
Ti vengono date due variabili: a = 5 e b = 10. Scambia i loro valori senza riassegnarli manualmente valore per valore.
Python consente un modo più espressivo di pensare all'assegnazione, dove i valori possono essere decomposti e riassegnati in un'unica operazione.
Codice iniziale
Ecco del codice di partenza per guidarti:
a = 5
b = 10
# Task: Swap a and b
# Hint: Try a temporary variable first.
# Then try the Pythonic approach (tuple unpacking).
# Task: Print the swapped values to verify
# print("a:", a)
# print("b:", b)
Concetti chiave esercitati
- Assegnazione di variabili
- Variabili temporanee vs tuple unpacking
Questo introduce il tuple unpacking, una funzionalità che rende Python conciso ed espressivo.
Per ulteriori informazioni sulle basi, dai un'occhiata al nostro Python Cheat Sheet.
Esercizi di Python su controllo di flusso e logica
Il controllo di flusso permette ai tuoi programmi di prendere decisioni e ripetere azioni in base a condizioni.
Il controllo pari o dispari
Un uso comune dell'operatore modulo è verificare se un numero è pari o dispari. Proviamolo qui sotto.
Esercizio
Scrivi un programma che:
-
Chiede all'utente un numero
-
Usa l'operatore modulo
% -
Stampa se il numero è pari o dispari
Codice iniziale
Ecco del codice di partenza per guidarti:
# Task: Ask the user for a number
num_str = input("Enter a whole number: ")
# Task: Convert to int
# num = ...
# Task: Use modulo (%) to decide even vs odd
# if ...:
# print("Even")
# else:
# print("Odd")
Concetti chiave esercitati
-
Operatore modulo
-
Logica booleana
Questo è spesso il primo esempio in cui i principianti vedono come le condizioni controllano il comportamento del programma.
La classica sfida FizzBuzz
Una sfida di programmazione comune è la FizzBuzz. Vediamo in cosa consiste questo esercizio.
Esercizio
Stampa i numeri da 1 a 100 con le seguenti regole:
-
I multipli di 3 stampano
Fizz -
I multipli di 5 stampano
Buzz -
I multipli di entrambi stampano
FizzBuzz
Questo esercizio ti allena a pensare con attenzione ad alberi decisionali e casi limite, una competenza cruciale quando scrivi programmi reali.
Codice iniziale
Ecco del codice di partenza per guidarti:
# Task: Loop from 1 to 100
for n in range(1, 101):
# Task: Check multiples of 3 AND 5 first
# if ...:
# print("FizzBuzz")
# Task: Then multiples of 3
# elif ...:
# print("Fizz")
# Task: Then multiples of 5
# elif ...:
# print("Buzz")
# Task: Otherwise, print the number
# else:
# print(n)
pass
Concetti chiave esercitati
-
Cicli
for -
Ordine delle condizioni
-
Operatori logici
Questo esercizio è un rito di passaggio per i programmatori ed è comunemente usato per insegnare il pensiero strutturato nel controllo di flusso. Scopri di più sui cicli nel nostro tutorial sui loop in Python.
Il gioco dell'indovinello
Questo esercizio introduce programmi interattivi che rispondono dinamicamente all'input dell'utente.
Esercizio
Scrivi un programma che:
-
Genera un numero casuale (importando
random) -
Usa un ciclo
whileper chiedere tentativi -
Stampa il feedback "Too high" o "Too low" dopo ogni tentativo
-
Si ferma quando il numero corretto viene indovinato
Questo è spesso il primo esercizio in cui i principianti sperimentano un programma che sembra interattivo piuttosto che lineare. A differenza degli script precedenti che eseguono dall'alto verso il basso ed escono, questo programma continua a girare finché una condizione non è soddisfatta.
Il salto concettuale chiave qui è capire la terminazione del ciclo.
Codice iniziale
Ecco del codice di partenza per guidarti:
import random
# Task: Pick a random number in a reasonable range
# target = random.randint(1, 100)
# Task: Use a while loop to keep asking until correct
# while ...:
# guess_str = input("Your guess (1–100): ")
# # guess = ...
# # if guess > target:
# # print("Too high")
# # elif guess < target:
# # print("Too low")
# # else:
# # print("Correct!")
# # break
Concetti chiave esercitati
-
Import di moduli (
random) -
Cicli
while -
Condizioni di terminazione del ciclo
Esercizi di Python su liste, cicli e iterazione
Le liste ti consentono di lavorare con collezioni di valori, mentre i cicli ti permettono di processarle in modo efficiente.
La somma della lista
Questo schema compare spesso nei flussi di lavoro di elaborazione dati e analytics.
Esercizio
Scrivi un programma che sommi tutti i numeri in una lista senza usare la funzione incorporata sum(). Il programma dovrebbe eseguire esplicitamente la logica di somma in un ciclo invece di affidarsi ad altri helper di aggregazione.
Codice iniziale
Ecco del codice di partenza per guidarti:
numbers = [3, 7, 2, 9, 4]
# Task: Create an accumulator variable
# total = ...
# Task: Loop through numbers and add each value to total
# for ...:
# ...
# Task: Print the final total
# print(total)
Concetti chiave esercitati
-
Inizializzazione di una variabile accumulatore
-
Iterazione con cicli
for -
Aggiornamento dei valori passo dopo passo
Per altri esempi relativi alle liste, consulta la nostra guida su Le domande più comuni sulle liste in Python.
Trovare il numero massimo
Il prossimo esercizio è simile al precedente, ma funziona in modo diverso all'interno del ciclo. Rafforza il pensiero algoritmico e rispecchia come funzionano internamente le funzioni incorporate.
Esercizio
Metti alla prova l'utente a trovare il numero più grande in una lista senza usare max().
Codice iniziale
Ecco del codice di partenza per guidarti:
numbers = [12, 5, 27, 3, 19]
# Task: Initialize current_max using the first element
# current_max = numbers[0]
# Task: Loop through the remaining elements and update current_max
# for ...:
# if ...:
# current_max = ...
# Task: Print the largest number
# print(current_max)
Concetti chiave esercitati
- Logica di confronto
- Tracciare lo stato durante l'iterazione
Rimuovere i duplicati
I dati del mondo reale sono disordinati, e spesso includono punti dati duplicati. Il seguente esercizio ti prepara ai compiti di data cleaning.
Esercizio
Trasforma una lista contenente elementi duplicati in una nuova lista con soli elementi unici.
A prima vista, questo problema può sembrare semplice, ma introduce l'idea di tenere traccia di ciò che hai già visto. È un concetto fondamentale nell'elaborazione dei dati, dove identificare e rimuovere i record duplicati è un compito di routine.
Codice iniziale
Ecco del codice di partenza per guidarti:
data = ["apple", "banana", "apple", "orange", "banana", "kiwi"]
# Task: Create a new list for unique items
# unique = []
# Task: Loop through data and append items you haven't seen yet
# for item in data:
# if ...:
# ...
# Task: Print or return the unique list
# print(unique)
Concetti chiave esercitati
-
Verifiche di appartenenza con
in -
Costruire nuove liste
-
Comprendere l'unicità dei dati
Esercizi di Python su dizionari e manipolazione di stringhe
Dizionari e stringhe sono essenziali per organizzare e trasformare dati testuali. Vediamo come gestirli.
Il contatore di frequenze dei caratteri
Questo esercizio ti insegna a costruire tabelle di frequenza, un compito comune nell'analisi dei dati.
Esercizio
Prendi una stringa in input e restituisci un dizionario che conta quante volte compare ciascun carattere.
Questo esercizio rappresenta un grande passo concettuale: costruire una struttura dati dinamicamente mentre il programma è in esecuzione. Invece di lavorare con una lista o un dizionario predefiniti, crei e aggiorni le voci in base ai dati che incontri.
Codice iniziale
Ecco del codice di partenza per guidarti:
text = input("Enter some text: ")
# Task: Create an empty dictionary
# counts = {}
# Task: Loop over each character and update counts
# for ch in text:
# # Option A: counts[ch] = counts.get(ch, 0) + 1
# # Option B: if ch in counts: ... else: ...
# pass
# Task: Print the frequency table
# print(counts)
Concetti chiave esercitati
-
Dizionari
-
Metodo
.get() -
Inizializzazione condizionale
La rubrica semplice
Questo esercizio tocca la logica dei dizionari, che costituisce la base per comprendere in seguito strutture dati tabulari.
Esercizio
Crea un programma che memorizzi nomi e numeri in un dizionario e consenta all'utente di cercare per nome.
Questo esercizio introduce l'idea di usare un programma come strumento di consultazione persistente piuttosto che per un calcolo una tantum. Stai modellando una versione semplificata del modo in cui molte applicazioni memorizzano e recuperano informazioni.
Codice iniziale
Ecco del codice di partenza per guidarti:
phonebook = {
# "Alice": "9123 4567",
# "Ben": "9876 5432",
}
# Task: (Optional) add entries via input()
# name = input("Name to add: ")
# number = input("Number to add: ")
# phonebook[name] = number
# Task: Search loop (one lookup is fine for a start)
query = input("Search name: ")
# Task: Print the number if found, otherwise print a friendly message
# if ...:
# print(...)
# else:
# print("Not found")
Concetti chiave esercitati
- Lookup nei dizionari
- Relazioni chiave-valore
Se vuoi approfondire i dizionari, ti consiglio la nostra guida completa su Metodi dei dizionari in Python.
Verifica del palindromo
Questo esercizio combina elaborazione del testo e confronto logico, analizzando i palindromi.
Esercizio
Un palindromo è qualsiasi parola, frase, numero o sequenza di caratteri che si legge allo stesso modo da sinistra a destra e viceversa. Crea uno script che verifichi se una stringa si legge uguale avanti e indietro (ignorando maiuscole e spazi).
Codice iniziale
Ecco del codice di partenza per guidarti:
text = input("Enter a word or phrase: ")
# Task: Normalize (lowercase + remove spaces)
# normalized = ...
# Task: Reverse using slicing
# reversed_text = ...
# Task: Compare and print a result message
# if ...:
# print("Palindrome")
# else:
# print("Not a palindrome")
Concetti chiave esercitati
-
Metodi delle stringhe (
lower(),replace()) -
Slicing delle stringhe (
[::-1])
Esercizi di Python su funzioni e modularità
Le funzioni ti consentono di scrivere codice riutilizzabile e organizzato invece di ripetere la logica.
Il calcolatore di fattoriale
Il calcolatore di fattoriale ti aiuterà a comprendere i valori di ritorno, fondamentali per costruire programmi più grandi.
Esercizio
Definisci una funzione che prende un intero e restituisce il suo fattoriale usando un ciclo.
La distinzione tra stampare un valore e restituirlo è particolarmente importante. Restituire i risultati permette di comporre la tua funzione con altro codice, essenziale quando i programmi crescono oltre un singolo file.
Codice iniziale
Ecco del codice di partenza per guidarti:
def factorial(n: int) -> int:
"""Return n! (factorial of n) using a loop."""
# Task: Decide how to handle n < 0
# Task: Initialize result
# result = ...
# Task: Multiply result by each integer from 1 to n
# for ...:
# ...
# Task: Return the computed factorial
# return result
pass
# Optional quick test
# print(factorial(5)) # expected: 120
Concetti chiave esercitati
- Definizione di funzioni
- Calcoli basati su cicli
- Restituire valori vs stampare
Leggi di più sulle funzioni nel nostro tutorial sulle funzioni in Python.
Validatore di numeri primi
Vedremo ora una funzione di validazione dei numeri primi. Questo ti aiuterà a imparare a creare funzioni riutilizzabili.
Esercizio
Scrivi una funzione che restituisce True se un numero è primo e False altrimenti.
La verifica dei numeri primi mostra anche come le funzioni possano incapsulare pulitamente la logica. Una volta scritta, la funzione può essere riutilizzata ovunque senza doverne capire i dettagli interni.
Codice iniziale
Ecco del codice di partenza per guidarti:
def is_prime(n: int) -> bool:
"""Return True if n is prime, otherwise False."""
# Task: Handle small cases (n <= 1)
# Task: Check divisibility from 2 up to an appropriate limit
# for ...:
# if ...:
# return False
# Task: If no divisors found, return True
# return True
pass
# Optional quick tests
# print(is_prime(2)) # expected: True
# print(is_prime(15)) # expected: False
Concetti chiave esercitati
- Cicli
- Return anticipati
- Efficienza logica
Stampatore di argomenti flessibile
Questo introduce firme di funzione avanzate utilizzate in molte librerie Python.
Esercizio
Crea una funzione che accetti un numero qualsiasi di argomenti usando *args e li stampi uno per riga.
Questo esercizio ti espone a una delle funzionalità più flessibili di Python: gli argomenti a lunghezza variabile. Ti sposta dal pensare a input fissi a funzioni che possono adattarsi a schemi d'uso diversi.
Capire *args rende più facile leggere e usare librerie Python reali, dove spesso le funzioni accettano un numero flessibile di parametri per comodità ed estendibilità.
Codice iniziale
Ecco del codice di partenza per guidarti:
def print_args(*args) -> None:
"""Print each positional argument on its own line."""
# Task: Loop over args and print each one
# for ...:
# print(...)
pass
# Optional quick test
# print_args("hello", 42, True)
Concetti chiave esercitati
- Argomenti a lunghezza variabile
- Flessibilità delle funzioni
Applicare le competenze di Python con progetti guidati
Gli esercizi costruiscono competenze, ma i progetti trasformano quelle competenze in sicurezza.
Indagare sui film di Netflix

Il progetto guidato Investigating Netflix Movies pone una domanda apparentemente semplice: i film si stanno accorciando nel tempo? Per rispondervi, lavorerai con un dataset reale di titoli Netflix e trasformerai gradualmente righe di dati grezzi in un insight chiaro e visuale.
Ciò che rende potente questo progetto è che colma il divario tra i fondamenti di Python per principianti e l'analisi dei dati applicata. Vedi come la logica semplice scala quando è combinata con gli strumenti giusti, il tutto senza dover installare nulla in locale.
Il dottor Semmelweis e la scoperta del lavaggio delle mani

Il progetto Dr. Semmelweis and the Importance of Handwashing ti mette nel ruolo di un data analyst che indaga un problema storico reale. A metà del XIX secolo, il dottor Ignaz Semmelweis osservò tassi di mortalità insolitamente alti in un reparto ospedaliero rispetto a un altro, ma non aveva gli strumenti computazionali per dimostrarne la causa.
Usando dati storici, analizzerai i tassi di mortalità prima e dopo l'introduzione del lavaggio delle mani. Il progetto si concentra sulla manipolazione di dati tabulari con pandas, sul calcolo dei tassi e sul confronto di medie tra periodi temporali.
Esplorare il mercato Airbnb di New York

Nel progetto Exploring Airbnb Market Trends, entri in uno scenario che rispecchia da vicino il lavoro analitico reale: dati disordinati e incoerenti che richiedono una pulizia significativa prima di poter iniziare un'analisi significativa.
Il dataset contiene annunci con prezzi memorizzati come stringhe, punteggi di recensione mancanti e formattazioni incoerenti.
Il tuo compito principale è pulire e standardizzare i dati. Il progetto rafforza l'idea che la preparazione dei dati non sia una seccatura preliminare, ma una competenza analitica centrale. Spesso, la maggior parte del tempo dei professionisti dei dati è spesa a pulire i dati, e questo progetto è un ottimo checkpoint pratico per quella competenza.
Conclusione
Hai iniziato con semplici variabili e input utente, poi sei passato attraverso controllo di flusso, strutture dati, funzioni e infine hai applicato tutto in progetti guidati. Questi esercizi dovrebbero averti dato una buona idea di come Python viene usato in contesti reali.
Il tuo prossimo passo naturale è un apprendimento strutturato. La pratica costante unita a un'istruzione strutturata e guidata è il modo più rapido per trasformare gli esercizi in competenza. Ti consiglio di iscriverti ai nostri percorsi Python Programming o Data Scientist per iniziare.
Domande frequenti sugli esercizi di Python
Qual è la piattaforma migliore per esercitarti con le sfide di coding in Python?
Le piattaforme migliori combinano coding pratico con feedback strutturato. DataCamp è eccellente per la pratica guidata perché offre coding nel browser (nessuna configurazione), feedback istantaneo sugli esercizi, percorsi di competenze e carriera strutturati e progetti guidati con dataset reali.
Come posso usare in modo efficace la ripetizione dilazionata per imparare Python?
La ripetizione dilazionata funziona meglio se applicata ai concetti, non solo alla sintassi. Invece di rileggere ripetutamente gli appunti, torna sugli stessi concetti con esercizi via via più difficili nel tempo.
Quali sono alcuni progetti avanzati di Python per principianti?
Buoni esempi di progetti avanzati includono costruire un'app to-do da riga di comando con persistenza su file, analizzare un dataset CSV con pandas e visualizzazioni di base, oppure creare un piccolo client API che recupera ed elabora dati da un endpoint pubblico.
Sono Austin, blogger e autore tech con anni di esperienza come data scientist e data analyst nel settore sanitario. Partito dalla biologia, oggi aiuto altri a fare lo stesso passaggio attraverso il mio blog tecnologico. La mia passione per la tecnologia mi ha portato a collaborare come autore con decine di aziende SaaS, ispirando altre persone e condividendo le mie esperienze.


