P.11 Stampare una lista “dinamica”

Realizziamo un semplice programma unendo alcuni concetti che riutilizzeremo spesso nelle prossime pagine. Iniziamo creando una lista vuota e chiediamo quanti numeri si desiderano inserire nella lista.

lista = []
n = input('quanti numeri? ')

Il valore restituito da input(), come sappiamo, è un testo, quindi è necessario convertirlo in un numero intero utilizzando int(). Il risultato della conversione sarà salvato di nuovo nella variabile n:

n = int(n)

Con un ciclo for, chiediamo n numeri all’utilizzatore del programma:

for x in range(n):
    m = input(f"inserire il numero {x+1}: ")
    m = int(m)
    lista.append(m)

Nel corpo del ciclo chiediamo all’utilizzatore il numero da aggiungere alla lista. La risposta fornita deve essere convertita con int() e poi sarà aggiunta alla lista utilizzando append(). Abbiamo utilizzato una stringa formattata all’interno di input(), così da poter indicare anche quale numero ci serve. Come potete osservare, prima di stampare la variabile x, ne aumentiamo il valore di un’unità, direttamente nella stringa di formattazione.

Una volta raccolti gli elementi della lista ci fermiamo in attesa che l’utente prema il tasto “Invio”. Possiamo inserire una pausa di questo tipo semplicemente inserendo una input() e ignorando il risultato che ci restituirà.

input("grazie. Premere un Invio per stampare la lista.")

Una volta che la lista è completa, possiamo stamparne gli elementi, estraendoli uno a uno con un ciclo for. Se volessimo semplicememnte estrarre gli elementi scriveremmo un semplice ciclo for:

for el in lista:
    print(el")

Vogliamo però ottenere qualcosa di più dettagliato, magari indicando anche il numero dell’elemento, oltre che il suo valore. Purtroppo non abbiamo nessuna variabile “interna” al ciclo for che ci indichi quale elemento stiamo considerando. Dobbiamo quindi creare una variabile “di servizio” che incrementeremo ad ogni iterazione:

i = 1
for el in lista:
    print(f"{i}: {el}")
    i += 1

Per incrementare il valore di i utilizziamo la scrittura compatta += che equivale a scrivere:

i = i + 1

Per stampare i valori estratti dalla lista utilizziamo di nuovo print() con una stringa di formattazione. Ecco il listato completo:

lista = []

n = input('quanti numeri? ')
n = int(n)

for x in range(n):
    m = input(f"inserire il numero {x+1}: ")
    m = int(m)
    lista.append(m)

input("grazie. Premere un Invio per stampare la lista.")

i = 1
for el in lista:
    print(f"{i}: {el}")
    i += 1

Listato 1.19 – Listato del programma per inserire numeri in una lista.

Ecco un esempio di esecuzione:

quanti numeri? 3
inserire il numero 1: 12
inserire il numero 2: 2
inserire il numero 3: 1
grazie. Premere un Invio per stampare la lista.
1: 12
2: 2
3: 1

Cose da provare

  • Create un programma che stampa solo gli elementi pari di una lista.
  • Realizzate un programma che vi aiuti a creare una lista della spesa. Il programma deve chiedere quante cose vi servono e poi fermarsi. Premendmendo il tasto “Invio” vi ricorderà quello che dovete acquistare.