CHI HA PAURA DELL’INTELLIGENZA ARTIFICIALE?

Immagine
  CHI HA PAURA DELL’INTELLIGENZA ARTIFICIALE? DAL SOFTWARE GENERATIVO AGLI AGENTI, DALLA MEDICINA ALLA ROBOTICA: CHE COSA L’AI SA GIÀ FARE, DOVE STA ANDANDO E QUALI RISCHI DOBBIAMO PRENDERE SUL SERIO Ogni tecnologia realmente trasformativa produce due errori speculari. Il primo consiste nel sottovalutarla, considerandola una moda destinata a rientrare. Il secondo consiste nel sopravvalutarla, attribuendole capacità che ancora non possiede e trasformando una tecnologia in una mitologia. Nel 2026 l’intelligenza artificiale si trova esattamente fra questi due estremi. Non è più ragionevole descriverla come un semplice chatbot evoluto; è altrettanto poco ragionevole presentarla come una mente universale prossima a sostituire l’essere umano in ogni attività. La questione interessante, per chi lavora nell’informatica, nella ricerca, nell’impresa o nelle professioni ad alta intensità di conoscenza, non è dunque stabilire se essere ottimisti o pessimisti. È capire che cosa stia realmente c...

Corso di Python: 8 – Eccezioni e Debugging

8 Eccezioni e Debugging

Obiettivi didattici:

  • Riconoscere errori comuni in Python.

  • Gestire eccezioni con try, except e finally.

  • Usare strumenti di debugging per identificare problemi.

  • Applicare le eccezioni per validare input numerici.

1. Errori comuni in Python

Python distingue diversi tipi di errori:

  1. SyntaxError – errori di sintassi.

# Esempio
print("Ciao"  # manca parentesi chiusa → SyntaxError
  1. NameError – variabile non definita.

print(x)  # NameError: x non definita
  1. TypeError – tipo di dato non compatibile.

a = "5"
b = 3
print(a + b)  # TypeError: non puoi sommare str + int
  1. ValueError – tipo corretto, valore non valido.

int("abc")  # ValueError
  1. IndexError / KeyError – accesso a indici o chiavi inesistenti.

lst = [1,2,3]
print(lst[5])  # IndexError
d = {"a": 1}
print(d["b"])  # KeyError

2. Gestione delle eccezioni

Si usa il blocco try/except/finally:

try:
    # codice potenzialmente pericoloso
    x = int(input("Inserisci un numero: "))
except ValueError:
    print("Hai inserito un valore non numerico!")
finally:
    print("Esecuzione terminata.")

Spiegazione:

  • try: blocco da testare.

  • except: intercetta eccezioni specifiche.

  • finally: eseguito sempre, indipendentemente dall’errore.

Si possono gestire più eccezioni:

try:
    y = 10 / int(input("Dividendo: "))
except ValueError:
    print("Inserisci un numero intero valido!")
except ZeroDivisionError:
    print("Divisione per zero non permessa!")

3. Uso del debugger

  • Permette di eseguire il codice passo-passo, osservare variabili e individuare errori logici.

  • In Python, si può usare il modulo pdb:

import pdb

x = int(input("Inserisci un numero: "))
pdb.set_trace()  # punto di interruzione
y = 10 / x
print(y)

Comandi principali di pdb:

  • n → esegui la riga successiva

  • c → continua fino al prossimo breakpoint

  • p variabile → stampa il valore

  • q → esci dal debugger

In molti IDE (PyCharm, VSCode), il debugger è integrato e permette breakpoint visuali.

4. Esercizio pratico: Validazione input numerici

Obiettivo: chiedere un numero all’utente e gestire input non validi.

def leggi_intero(prompt):
    while True:
        try:
            n = int(input(prompt))
            return n
        except ValueError:
            print("Errore: inserisci un numero intero valido!")

numero = leggi_intero("Inserisci un numero intero: ")
print(f"Hai inserito: {numero}")

Spiegazione passo-passo:

  1. Ciclo while True continua fino a input corretto.

  2. try: prova a convertire l’input in int.

  3. except ValueError: intercetta input non numerico e mostra messaggio di errore.

  4. return esce dalla funzione quando l’input è corretto.

Esempio di esecuzione:

Inserisci un numero intero: abc
Errore: inserisci un numero intero valido!
Inserisci un numero intero: 42
Hai inserito: 42

5. Test rapido

  1. Quale errore genera int("abc")?
    Risposta: ValueError

  2. Cosa fa il blocco finally?
    Risposta: viene eseguito sempre, anche se si verifica un’eccezione.

  3. Come si gestiscono più eccezioni diverse?
    Risposta: con più clausole except distinte.

  4. Come si inserisce un breakpoint con pdb?
    Risposta: pdb.set_trace()

  5. Perché usare eccezioni per validare input?
    Risposta: per evitare crash e guidare l’utente a fornire dati corretti.

6. Attività pratica

  • Modificare la funzione leggi_intero per leggere anche numeri positivi > 0 e stampare un messaggio d’errore personalizzato.

  • Creare una funzione leggi_float che gestisce input decimali.

  • Usare il debugger per osservare il flusso quando l’utente inserisce valori non validi.


Commenti

Post popolari in questo blog

Corso di Programmazione Strutturata e OOP: 3 Ereditarietà incapsulamento polimorfismo

Corso di CSS & Web Design: 3 – Box Model e spaziature

Corso di HTML: 11 Sviluppo completo di un sito