Esercitiamoci con Python

Il modo migliore per imparare a programmare è quello di iniziare a "sporcarsi" subito le mani con il codice... a mettere, per così dire, "le mani in pasta".

In questa sezione troverai diversi esercizi divisi in tre categorie: principiante, intermedio e avanzato (quest'ultima presto in arrivo).
Gli esercizi non sono in un vero e proprio ordine di difficoltà, ma man mano che avanzerai, presupporranno la conoscenza di sempre più concetti chiave che devono essere chiari e ben assimilati.

Ricorda: per ogni esercizio possono esserci molteplici soluzioni. La mia è solo una delle tante. Per sapere se anche la tua è altrettanto valida, poniti queste domande:

Vedrai che rispondere a questi semplici quesiti ti porterà ad essere ogni giorno un programmatore e uno sviluppatore migliore rispetto a quello che eri il giorno prima.

Se, invece, non sai proprio da dove cominciare, puoi trovare tantissime valide risorse gratuite in giro per il web, presto anche sui miei canali social.

Iscriviti alla mia Newsletter per rimanere sempre aggiornato sulla mia pubblicazione di nuovi contenuti e articoli.

Livello: Principiante

Esercizio #001

Maggiore tra due numeri

Scrivi un programma che chieda all’utente due numeri interi e mostri a schermo quale dei due è maggiore.
Se i numeri sono uguali, il programma deve indicarlo chiaramente.

ATTENZIONE: Non barare! Esiste già la funzione "max()" in Python, ma dovrai preferire ad essa i costrutti di selezione.


    # Chiede due numeri all'utente
    a = int(input("Inserisci il primo numero intero: "))
    b = int(input("Inserisci il secondo numero intero: "))

    # Confronto tra i due numeri
    if a > b:
        print("Il primo numero è maggiore:", a)
    elif b > a:
        print("Il secondo numero è maggiore:", b)
    else:
        print("I due numeri sono uguali.")
                                

Esercizio #002

Pari o dispari?

Scrivi un programma che chieda all’utente di inserire un numero intero e determini se il numero è pari oppure dispari.
Il programma deve stampare un messaggio appropriato.


    # Chiede un numero intero all'utente
    n = int(input("Inserisci un numero intero: "))

    # Un numero è pari se il resto della divisione per 2 è 0
    if n % 2 == 0:
        print("Il numero", n, "è pari.")
    else:
        print("Il numero", n, "è dispari.")
                                

Esercizio #003

Somma di N numeri inseriti dall’utente

Scrivi un programma che chieda all’utente quanti numeri vuole sommare (N).
Poi il programma deve chiedere N numeri (uno alla volta) e alla fine visualizzare la somma totale.


    # Chiede quanti numeri si vogliono sommare
    n = int(input("Quanti numeri vuoi sommare? "))

    somma = 0  # variabile accumulatore

    # Ciclo for che si ripete n volte
    for i in range(n):
        numero = float(input("Inserisci il numero " + str(i + 1) + ": "))
        somma = somma + numero  # oppure somma += numero

    print("La somma totale è:", somma)
                                

Esercizio #004

Tabellina di un numero (1–10)

Adesso facciamo un po' di matematica! Scriviamo un programma che chieda all’utente un numero intero e stampi la sua “tabellina” (ovvero il prodotto del numero per i valori da 1 a 10).


    # Chiede il numero di cui calcolare la tabellina
    n = int(input("Inserisci un numero intero per vedere la sua tabellina: "))

    print("Tabellina del", n, ":")

    # Ciclo da 1 a 10 inclusi
    for i in range(1, 11):
        risultato = n * i
        print(n, "x", i, "=", risultato)
                                

Esercizio #005

Conto alla rovescia

Scrivi un programma che chieda all’utente un numero intero positivo n e stampi un conto alla rovescia da n fino a 0, utilizzando un ciclo while.
SAlla fine del conto alla rovescia, il programma deve stampare il messaggio: "Fine conto alla rovescia!"


    # Chiede il numero da cui iniziare il conto alla rovescia
    n = int(input("Inserisci un numero intero positivo: "))

    # Se l'utente inserisce un numero negativo, lo avvisiamo
    if n < 0:
        print("Devi inserire un numero intero positivo.")
    else:
        # Conto alla rovescia con un ciclo while
        while n >= 0:
            print(n)
            n = n - 1  # oppure n -= 1

        print("Fine conto alla rovescia!")
                                

Esercizio #006

Media di tre numeri

Scrivi un programma che chieda all’utente tre numeri (anche decimali), calcoli la loro media aritmetica e la mostri a schermo.


    # Chiede tre numeri all'utente
    a = float(input("Inserisci il primo numero: "))
    b = float(input("Inserisci il secondo numero: "))
    c = float(input("Inserisci il terzo numero: "))

    # Calcolo della media
    media = (a + b + c) / 3

    print("La media dei tre numeri è:", media)
                                

Esercizio #007

Calcolo del prezzo scontato

Scrivi un programma che chieda all’utente il prezzo di un prodotto e la percentuale di sconto da applicare.
Il programma deve calcolare e mostrare il prezzo finale dopo lo sconto.


    # Chiede il prezzo iniziale e lo sconto
    prezzo = float(input("Inserisci il prezzo del prodotto: "))
    sconto = float(input("Inserisci la percentuale di sconto: "))

    # Calcolo dello sconto
    prezzo_finale = prezzo - (prezzo * sconto / 100)

    print("Il prezzo scontato è:", prezzo_finale)
                                

Esercizio #008

Stampa numeri da 1 a N

Scrivi un programma che chieda all’utente un numero intero positivo N e stampi tutti i numeri da 1 fino a N, uno per riga.


    n = int(input("Inserisci un numero intero positivo: "))

    if n <= 0:
        print("Devi inserire un numero maggiore di zero.")
    else:
        for i in range(1, n + 1):
            print(i)
                                

Livello: Intermedio

Esercizio #009

Palindromo o no?

Scrivi un programma che chieda all’utente una parola e determini se si tratta di un palindromo.
Un palindromo è una parola che si legge allo stesso modo in entrambi i sensi (es. “anna”, “radar”).
Il programma deve ignorare maiuscole e minuscole.


    parola = input("Inserisci una parola: ")

    # Converte tutto in minuscolo
    p = parola.lower()

    # Confronta la parola con la sua versione invertita
    if p == p[::-1]:
        print("La parola è un palindromo.")
    else:
        print("La parola NON è un palindromo.")
                                

Esercizio #010

Scacchi: il colore della casella

Scrivi un programma che chieda all’utente una casella nella notazione degli scacchi (es. "A1", "C4", "H8").
Il programma deve indicare se la casella è bianca o nera.

SUGGERIMENTO: considera che:

  • le colonne (lettere) possono essere convertite in numeri
  • la regola è: Somma pari = cella nera, Somma dispari = cella bianca

    casella = input("Inserisci la casella (es. C4): ")

    colonna = casella[0].upper()       # es. "C"
    riga = int(casella[1])             # es. 4

    # Converte la lettera in numero: A=1, B=2, C=3, ...
    colonna_num = ord(colonna) - ord('A') + 1

    somma = colonna_num + riga

    if somma % 2 == 0:
        print("La casella è NERA.")
    else:
        print("La casella è BIANCA.")
                                

Esercizio #011

Anno bisestile?

Scrivi un programma che chieda un anno e stabilisca se è bisestile.
Un anno è bisestile se:

  • è divisibile per 4
  • ma non per 100
  • oppure è divisibile per 400

    anno = int(input("Inserisci un anno: "))

    if (anno % 400 == 0) or (anno % 4 == 0 and anno % 100 != 0):
        print("L'anno è bisestile.")
    else:
        print("L'anno NON è bisestile.")
                                

Esercizio #012

Quanti anni ha Fido?

Scrivi un programma che chieda l’età di un cane espressa in anni umani.
La conversione in “anni canini” segue questa regola semplificata:

  • i primi 2 anni valgono 10.5 anni canini ciascuno
  • tutti gli anni successivi valgono 4 anni canini

Il programma deve stampare l’età canina risultante.


    anni_umani = float(input("Inserisci l'età del cane (in anni umani): "))

    if anni_umani <= 0:
        print("L'età deve essere positiva.")
    elif anni_umani <= 2:
        # 1 anno umano = 10.5 anni canini
        eta_canina = anni_umani * 10.5
    else:
        # 2 anni → 21 anni canini
        eta_canina = 21 + (anni_umani - 2) * 4

    print("L'età canina equivalente è:", eta_canina, "anni.")
                                

Esercizio #013

Conta parole

Scrivi un programma che chieda all’utente una frase e calcoli quante parole contiene.
Le parole sono separate da spazi, ma possono essere più spazi consecutivi.


    frase = input("Inserisci una frase: ")

    # Rimuove spazi inutili e divide in base agli spazi
    parole = frase.split()

    print("La frase contiene", len(parole), "parole.")
                                

Esercizio #014

Conta le vocali

Scrivi un programma che chieda all’utente di inserire una frase e conti quante vocali contiene (a, e, i, o, u, sia maiuscole che minuscole).
Non serve distinguere vocali accentate.


    frase = input("Inserisci una frase: ")

    vocali = "aeiouAEIOU"
    conteggio = 0

    for carattere in frase:
        if carattere in vocali:
            conteggio += 1

    print("La frase contiene", conteggio, "vocali.")
                                

Esercizio #015

Voto medio e giudizio

Scrivi un programma che chieda all’utente una serie di voti (numeri decimali da 0 a 10).
L’inserimento termina quando l’utente digita -1.
Alla fine il programma deve:

  • calcolare la media dei voti inseriti
  • stampare un giudizio in base alla media:
    • media < 6 → "Insufficiente"
    • 6 ≤ media < 7 → "Sufficiente"
    • 7 ≤ media < 8.5 → "Buono"
    • media ≥ 8.5 → "Ottimo"

Se l’utente non inserisce alcun voto valido prima di -1, il programma lo segnala.


    print("Inserisci i voti (0-10). Digita -1 per terminare.")

    somma_voti = 0
    conteggio_voti = 0

    while True:
        voto = float(input("Voto: "))
        
        if voto == -1:
            break
        
        if voto < 0 or voto > 10:
            print("Voto non valido. Inserisci un valore tra 0 e 10.")
            continue
        
        somma_voti += voto
        conteggio_voti += 1

    if conteggio_voti == 0:
        print("Nessun voto valido inserito.")
    else:
        media = somma_voti / conteggio_voti
        print("La media dei voti è:", media)
        
        if media < 6:
            giudizio = "Insufficiente"
        elif media < 7:
            giudizio = "Sufficiente"
        elif media < 8.5:
            giudizio = "Buono"
        else:
            giudizio = "Ottimo"
        
        print("Giudizio finale:", giudizio)
                                

Esercizio #016

Password sicura

Scrivi un programma che chieda all’utente di inserire una password e verifichi se è accettabile secondo queste regole:

  • deve essere lunga almeno 8 caratteri
  • deve contenere almeno una cifra
  • deve contenere almeno una lettera maiuscola

Se la password rispetta tutte le regole, stampa "Password accettata", altrimenti stampa i motivi per cui è stata rifiutata.


    password = input("Inserisci una password: ")

    ha_lunghezza_minima = len(password) >= 8
    ha_cifra = False
    ha_maiuscola = False

    for carattere in password:
        if carattere.isdigit():
            ha_cifra = True
        if carattere.isupper():
            ha_maiuscola = True

    if ha_lunghezza_minima and ha_cifra and ha_maiuscola:
        print("Password accettata.")
    else:
        print("Password non valida per i seguenti motivi:")
        if not ha_lunghezza_minima:
            print("- Deve avere almeno 8 caratteri.")
        if not ha_cifra:
            print("- Deve contenere almeno una cifra.")
        if not ha_maiuscola:
            print("- Deve contenere almeno una lettera maiuscola.")