📢 Nuovo Corso Laravel API disponibile!

Esercizi Eccezioni Custom Python

Esercizi per praticare la creazione e gestione delle eccezioni personalizzate in Python, ideali per affinare la gestione avanzata degli errori.

Esercizio 1

Definire una eccezione personalizzata ErroreNumeroNegativo e usarla per controllare l’input dell’utente.
class ErroreNumeroNegativo(Exception):
pass
try:
numero = int(input("Inserisci un numero positivo: "))
if numero < 0:
raise ErroreNumeroNegativo("Il numero non può essere negativo.")
print("Hai inserito:", numero)
except ErroreNumeroNegativo as e:
print(e)

Esercizio 2

Creare un’eccezione personalizzata DivisioneNonValida per gestire il tentativo di dividere per zero.
class DivisioneNonValida(Exception):
pass
try:
numeratore = 10
denominatore = int(input("Inserisci il denominatore: "))
if denominatore == 0:
raise DivisioneNonValida("Divisione per zero non permessa.")
else:
risultato = numeratore / denominatore
print("Risultato:", risultato)
except DivisioneNonValida as e:
print(e)

Esercizio 3

Implementare un’eccezione personalizzata AnnoNonValido per verificare che un anno sia nell’intervallo [1900, 2100].
class AnnoNonValido(Exception):
pass
try:
anno = int(input("Inserisci un anno tra 1900 e 2100: "))
if not 1900 <= anno <= 2100:
raise AnnoNonValido("L'anno inserito non è valido.")
print("Anno valido:", anno)
except AnnoNonValido as e:
print(e)

Esercizio 4

Creare un’eccezione personalizzata UsernameTroppoCorto e usarla per validare la lunghezza di un username inserito dall’utente.
class UsernameTroppoCorto(Exception):
pass
try:
username = input("Crea il tuo username (almeno 5 caratteri): ")
if len(username) < 5:
raise UsernameTroppoCorto("Username troppo corto.")
print("Username valido!")
except UsernameTroppoCorto as e:
print(e)

Esercizio 5

Definire una eccezione personalizzata ValoreNonAmmesso per prevenire l’inserimento di un valore specifico.
class ValoreNonAmmesso(Exception):
pass
valore_proibito = 999
try:
numero = int(input(f"Inserisci un numero diverso da {valore_proibito}: "))
if numero == valore_proibito:
raise ValoreNonAmmesso(f"Il valore {valore_proibito} non è ammesso.")
print("Numero valido!")
except ValoreNonAmmesso as e:
print(e)

Esercizio 6

Implementare un’eccezione personalizzata PasswordNonSicura per controllare che una password contenga almeno un numero e una lettera maiuscola.
import re
class PasswordNonSicura(Exception):
pass
try:
password = input("Inserisci una password (deve contenere un numero e una lettera maiuscola): ")
if not re.search("[0-9]", password) or not re.search("[A-Z]", password):
raise PasswordNonSicura("Password non sicura.")
print("Password valida!")
except PasswordNonSicura as e:
print(e)

Esercizio 7

Creare un’eccezione personalizzata EmailNonValida e usarla per verificare che un’email contenga ’@’ e ’.‘.
class EmailNonValida(Exception):
pass
try:
email = input("Inserisci la tua email: ")
if '@' not in email or '.' not in email:
raise EmailNonValida("Email non valida.")
print("Email inserita correttamente!")
except EmailNonValida as e:
print(e)

Esercizio 8

Implementare un’eccezione personalizzata LimiteSuperato per gestire il superamento di un limite numerico predefinito.
class LimiteSuperato(Exception):
pass
limite = 100
try:
numero = int(input(f"Inserisci un numero inferiore a {limite}: "))
if numero > limite:
raise LimiteSuperato("Hai superato il limite consentito.")
print("Numero accettato!")
except LimiteSuperato as e:
print(e)

Esercizio 9

Definire una eccezione personalizzata CarattereNonValido per impedire l’inserimento di caratteri speciali in un nome.
class CarattereNonValido(Exception):
pass
try:
nome = input("Inserisci il tuo nome (solo lettere): ")
if not nome.isalpha():
raise CarattereNonValido("Il nome contiene caratteri non validi.")
print("Nome accettato!")
except CarattereNonValido as e:
print(e)

Esercizio 10

Creare un’eccezione personalizzata CapacitàSuperata per controllare l’aggiunta di elementi in una lista che ha una capacità massima.
class CapacitàSuperata(Exception):
pass
capacità_massima = 5
lista = []
try:
while True:
elemento = input("Inserisci un elemento (stop per terminare): ")
if elemento.lower() == 'stop':
break
if len(lista) >= capacità_massima:
raise CapacitàSuperata("La lista ha raggiunto la sua capacità massima.")
lista.append(elemento)
except CapacitàSuperata as e:
print(e)
finally:
print("Elementi nella lista:", lista)

Esercizio 11

Implementare un’eccezione personalizzata SogliaMinimaNonRaggiunta per un valore numerico minimo richiesto.
class SogliaMinimaNonRaggiunta(Exception):
pass
soglia_minima = 10
try:
numero = int(input(f"Inserisci un numero maggiore di {soglia_minima}: "))
if numero <= soglia_minima:
raise SogliaMinimaNonRaggiunta(f"Il numero deve essere maggiore di {soglia_minima}.")
print("Numero valido!")
except SogliaMinimaNonRaggiunta as e:
print(e)

Esercizio 12

Creare un’eccezione personalizzata ElementoDuplicato per evitare l’inserimento di elementi duplicati in una lista.
class ElementoDuplicato(Exception):
pass
elementi = set()
try:
while True:
elemento = input("Inserisci un elemento unico (stop per terminare): ")
if elemento.lower() == 'stop':
break
if elemento in elementi:
raise ElementoDuplicato(f"L'elemento '{elemento}' è già presente.")
elementi.add(elemento)
except ElementoDuplicato as e:
print(e)
finally:
print("Elementi unici inseriti:", elementi)

Esercizio 13

Definire una eccezione personalizzata TempoScaduto per gestire l’input dell’utente entro un certo limite di tempo.
import time, threading
class TempoScaduto(Exception):
pass
def set_timeout(timeout):
time.sleep(timeout)
raise TempoScaduto("Tempo scaduto per l'input.")
try:
timer = threading.Thread(target=set_timeout, args=(5,))
timer.start()
risposta = input("Hai 5 secondi per rispondere: ")
timer.cancel()
print("Risposta accettata:", risposta)
except TempoScaduto as e:
print(e)

Esercizio 14

Implementare un’eccezione personalizzata OperazioneIllecita per gestire azioni non consentite in un’applicazione.
class OperazioneIllecita(Exception):
pass
azione = input("Cosa vuoi fare? (leggi/scrivi): ")
try:
if azione != 'leggi' and azione != 'scrivi':
raise OperazioneIllecita("Azione non consentita.")
print(f"Azione '{azione}' eseguita con successo.")
except OperazioneIllecita as e:
print(e)

Esercizio 15

Creare un’eccezione personalizzata LimiteDiEtàSuperato per impedire l’accesso a minori in una sezione di un sito web.
class LimiteDiEtàSuperato(Exception):
pass
età_minima = 18
try:
età = int(input("Quanti anni hai? "))
if età < età_minima:
raise LimiteDiEtàSuperato("Accesso non consentito ai minori.")
print("Accesso consentito.")
except LimiteDiEtàSuperato as e:
print(e)