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 elemento diventerà: ['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:

  1. Mostra cosa c’è in memoria.

  2. Crea un nuovo record chiedendo i dati all’utente.

  3. 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?

  1. while True:: Questo crea un ciclo infinito. Il programma ripeterà le domande all’infinito finché non incontra un comando di interruzione.

  2. if cognome.lower() == 'esci': break: Questo è il “freno d’emergenza”. Se scrivi “esci” quando ti viene chiesto il cognome, il comando break rompe il ciclo e passa alla stampa finale.

  3. Creazione rapida della lista: Invece di fare tre append() su una lista vuota, ho usato nuovo_elemento = [cognome, nome, data], che è più veloce e leggibile.

Il risultato è il seguente output (esecuzione):