Vai al contenuto principale

Esercizi di Python per principianti: guida pratica con soluzioni

Risolvi esercizi di Python adatti ai principianti, iniziando da semplici variabili fino a funzioni, strutture dati e progetti guidati.
Aggiornato 29 set 2026  · 12 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

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:

vscode

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.

soluzioni esercizi

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

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 while per 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

progetti guidati 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

progetto guidato lavaggio 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

progetto guidato airbnb

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.


Austin Chia's photo
Author
Austin Chia
LinkedIn

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.

Argomenti
Python

Corsi di Python per principianti

Corso

Introduzione a Python

4 ore
7.1M
Impara le basi dell’analisi dei dati con Python in sole 4 ore. Questo corso online ti introduce all’interfaccia di Python e ai pacchetti più usati.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro