P.12 Stampare, ma non tutto!

Affrontiamo qualche esercizio di stampa di liste utilizzando i cicli e dei test con if-then. Se volessimo stampare gli elementi di una lista, separati da una virgola potremmo scrivere:

numeri = [12, 23, 34, 45, 56]
for x in numeri:
    print(x, end=", ")

Eseguendo il codice osserveremmo questo risultato:

12, 23, 34, 45, 56, 

Dopo l’ultimo numero, purtroppo compare una virgola. Come possiamo evitare di stamparla?

Dovremmo tenere conto di quale elemento stiamo stampando e nel caso sia l’ultimo, omettere la virgola. Per tenere conto della posizione usiamo una variabile i che parte da 1 e aumentiamo a ogni iterazione. Modifichiamo il codice, stampando anche il valore di i:

numeri = [12, 23, 34, 45, 56]
i = 1
for x in numeri:
    print(x, end=", ")
    print(i)
    i += 1

Il risultato prodotto è:

12, 1
23, 2
34, 3
45, 4
56, 5

Di fianco all’elemento della lista troviamo il valore di i. All’interno del corpo del ciclo dovremo stampare la virgola fino a che i è minore di 5, cioè del numero di elementi contenuti nell’elenco, che possiamo ottenere con len(). Per intercettare l’ultimo passaggio useremo un if-else: se i è minore di 5, stampiamo la virgola, se è pari o superiore, la virgola non ci va.

numeri = [12, 23, 34, 45, 56]
i = 1
for x in numeri:
    if ( i < len(numeri)): 
        print(x, end=", ")
    else:
        print(x)
    i += 1

Listato 1.20 – Stampare gli elementi di una lista, separati da virgole.