
Immagina questo codice come la gestione di un registro scolastico digitale. Invece di usare un foglio di carta, stai usando una lista di liste. Ecco la spiegazione passo dopo passo:
1. La struttura dati (Il “Database”)
Python
classe=[['Vasco','Antonio',1968],
['Rossi','Mario',1988],
['Verdi','Giuseppe',1967]]
Qui stai creando una “super-lista” chiamata classe. Al suo interno, ogni elemento è a sua volta una lista che rappresenta una persona con tre informazioni: Cognome, Nome e Anno di nascita.
-
classe[0]è la lista di Antonio Vasco. -
classe[0][0]è solo il cognome “Vasco”.
2. Visualizzazione iniziale
Python
for _ in classe:
print(_)
Questo ciclo for dice a Python: “Prendi ogni riga della lista classe (una alla volta) e stampala”.
L’uso dell’underscore _ è un modo per dire che stiamo usando una variabile temporanea per scorrere l’elenco.
3. Input di nuovi dati
Python
elemento=[]
elemento.append(input("Cognome: "))
elemento.append(input("Nome: "))
elemento.append(input("Data: "))
Qui stai creando un nuovo profilo vuoto (elemento = []). Con il comando append, chiedi all’utente di digitare delle informazioni e le “appendi” (le aggiungi in coda) a questa piccola lista una dopo l’altra.
-
Se scrivi “Bianchi”, “Paolo” e “1995”, la lista
elementodiventerà:['Bianchi', 'Paolo', '1995'].
4. L’unione dei dati
Python
classe.append(elemento)
Questa è l’operazione chiave: prendi la piccola lista del nuovo studente (elemento) e la inserisci dentro la grande lista classe. Ora il tuo database è cresciuto.
5. Risultato finale
Python
for _ in classe:
print(_)
Riesegui lo stesso ciclo dell’inizio per mostrare all’utente che il nuovo nome è stato effettivamente aggiunto alla fine della lista.
In sintesi:
Il codice fa tre cose:
-
Mostra cosa c’è in memoria.
-
Crea un nuovo record chiedendo i dati all’utente.
-
Aggiorna la memoria e mostra il risultato finale.

Estendiamo il programma.
Per permettere all’utente di aggiungere più persone (e non una sola), dobbiamo inserire la parte dell’input dentro un ciclo while. In questo modo, il programma continuerà a chiederti dati finché non deciderai di fermarti (ad esempio scrivendo “fine”).
Ecco il codice modificato:
Python
classe = [['Vasco','Antonio',1968],
['Rossi','Mario',1988],
['Verdi','Giuseppe',1967]]
print("--- Inserimento nuovi studenti (scrivi 'esci' nel cognome per terminare) ---")
while True:
cognome = input("\nCognome: ")
# Condizione di uscita: se l'utente scrive 'esci', il ciclo si ferma
if cognome.lower() == 'esci':
break
nome = input("Nome: ")
data = input("Data di nascita: ")
# Creiamo la lista del singolo studente e la aggiungiamo alla classe
nuovo_elemento = [cognome, nome, data]
classe.append(nuovo_elemento)
print(f"OK! {nome} {cognome} aggiunto con successo.")
print("\n--- Registro Finale ---")
for studente in classe:
print(studente)
Cosa è cambiato?
-
while True:: Questo crea un ciclo infinito. Il programma ripeterà le domande all’infinito finché non incontra un comando di interruzione. -
if cognome.lower() == 'esci': break: Questo è il “freno d’emergenza”. Se scrivi “esci” quando ti viene chiesto il cognome, il comandobreakrompe il ciclo e passa alla stampa finale. -
Creazione rapida della lista: Invece di fare tre
append()su una lista vuota, ho usatonuovo_elemento = [cognome, nome, data], che è più veloce e leggibile.

Il risultato è il seguente output (esecuzione):
