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:
- Il mio codice funziona davvero e restituisce sempre la risposta corretta?
- Ho scritto il giusto numero di righe di codice o mi sono dilungato troppo e in troppi passaggi?
- Come posso migliorare ulteriormente il mio programma?
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.")