Imparare a Programmare in Python – #3 – Array e cicli For e While

Imparare a Programmare in Python – #3 – Array e cicli For e While

Imparare a Programmare in Python – #3 – Array e cicli For e While: studiamo il funzionamento degli array e dei cicli for e while.

Imparare a Programmare in Python – #3 – Array e cicli For e While

Siamo arrivati alla terza lezione sulla programmazione base in Python, in questa lezione andremo a vedere cosa sono e come utilizzare gli array ed i cicli for e while.

A fine lezione vi lascerò anche un’esercitazione da completare prima della prossima lezione.

Gli array

Gli array si possono considerare come delle variabili, che contengono al loro interno una lista di valori.

A differenza di una variabile che ha un nome ed un valore, un array ha un nome e tanti valori al suo interno.

Questi valori sono indicizzati, cioè hanno un indice che parte da 0 e arriva al numero dei valori presenti -1.

Ad esempio, se un array avesse al suo interno 5 valori, l’indice del primo sarebbe 0, l’indice dell’ultimo sarebbe 4.

Vediamo un esempio di array:

#Array
colori = ["rosso", "giallo", "blu", "verde", "nero"]

Negli array i valori sono delimitati da delle parentesi quadre, e separati da una virgola.

Nell’esempio appena visto abbiamo un array con 5 elementi di tipo stringa.

Quindi per ottenere il valore rosso potrei richiamare l’array scrivendo semplicemente colori[0], per il nero colori[4].

In Python, gli array non devono avere per forza valori dello stesso tipo, potrei quindi scrivere ad esempio:

#Array
utente = ["Claudio", 2025, True, 1.80, None]

In questo caso avrei un array con al suo interno: una stringa, un valore intero, una booleana, un valore con virgola e un valore nullo.

L’utilità di un array di questo tipo è la possibilità di usarlo per raccogliere dati ad esempio dall’input degli utenti, da un file JSON, da un Database.

Il rischio è che se non vengono gestiti bene i tipi di contenuti si può arrivare ad avere errori e problemi con il funzionamento del nostro programma.

I cicli

I cicli in programmazione permettono di rieseguire operazioni per un determinato numero di volte finchè non viene soddisfatto un requisito.

In Python i cicli utilizzabili sono 2: for e while.

Ciclo For

Il ciclo for è una struttura che permette di ripetere il codice al suo interno per ogni elemento di una lista.

Per chi ha utilizzato altri linguaggi (ad esempio C#) è più simile all’utilizzo del foreach che a quello del for.

Il ciclo for si utilizza per scorrere all’interno di una lista (ad esempio di tutti gli elementi di un array), oppure per ripetere una o più azioni un preciso numero di volte

Vediamo un esempio di ciclo for che mostra un elenco di numeri da 1 a 10:

#CONTA DA 1 a 10
for conta_numeri in range(1, 11):
    print("Il numero è:", conta_numeri)

Possiamo utilizzare il ciclo for anche per elencare tutti i valori di un array:

#ELENCA I COLORI PRESENTI NELL'ARRAY COLORI
colori = ["rosso", "giallo", "blu", "verde", "nero"]
for colore in colori:
        print(colore)
    

Ciclo While

Il ciclo while si usa per eseguire un’operazione (o più operazioni) un indefinito numero di volte.

Si usa quando non sappiamo in partenza quante volte deve essere eseguita, a differenza del ciclo for, non va ad analizzare una sequenza di valori, ma si basa sul concetto di true e false, finché una condizione risulta vera il ciclo verrà ripetuto, nel momento in cui diventerà falsa si potrà uscire dal ciclo.

Un aspetto importante del ciclo while è proprio la condizione di uscita, va infatti controllato attentamente il codice, perché se non si fa in modo che ci sia sempre la condizione per uscire dal ciclo, si rischia di creare un loop infinito.

#ELENCA I NUMERI DA 0 a 10 - LOOP INFINITO
numeri = 0
while numeri <= 10:
    print(numeri)

#ELENCA I NUMERI DA 0 a 10 - CORRETTO
numeri = 0
while numeri <= 10:
    print(numeri)
    numeri = numeri + 1
    

Nell’esempio precedente, vediamo lo stesso ciclo while, nel primo caso la variabile numeri rimane con il valore 0.

Il ciclo while verrà eseguito finché la variabile sarà minore o uguale a 10, rimanendo sempre a 0 quindi verrà eseguito all’infinito.

Nel secondo caso, dopo aver mostrato il numero andremo ad incrementarlo di 1 ed una volta raggiunto 10, sarà soddisfatta la condizione richiesta dal ciclo che quindi ci permetterà di passare alla sequenza di codice successiva.

break e continue

Esistono dei metodi per uscire manualmente da un ciclo, e sono break e continue.

break

L’istruzione break permette di interrompere un ciclo ed uscirne immediatamente.

Questa istruzione può essere utile ad esempio se stiamo cercando un determinato valore all’interno di un array, nel momento in cui viene trovato non c’è più bisogno di continuare ad analizzare l’array e si può uscire dal ciclo.

Oppure potremmo creare un ciclo while che richiede un input dall’utente, ad esempio un nome utente, finché risulta sbagliato, si rimane nel ciclo, quando l’utente inserisce il nome corretto si interrompe utilizzando il break.

Esempio con ciclo for

In questo esempio, se blu è presente nell’array, il ciclo si interromperò mostrando il messaggio “il colore blu è presente nell’array”, altrimenti continuerà ad elencare tutti i colori presenti.

colori = ["rosso", "giallo", "blu", "verde", "nero"]
for colore in colori:
    if colore == "blu":
        print("Il colore blu è presente nell'array")
        break
    print(colore)

Esempio con ciclo while

In questo esempio quando la variabile numeri avrà raggiunto il valore 8, il ciclo si interromperà.

numeri = 0
while numeri <= 10:
    if numeri == 8:
        break
    print(numeri)
    numeri = numeri + 1

continue

L’istruzione continue funziona in modo simile al break ma con un’importante differenza, non esce completamente dal ciclo, ma salta un’iterazione.

Questo significa che una volta raggiunta l’istruzione continue verranno saltate le istruzioni successive e il ciclo proseguirà con l’elemento successivo.

Vediamolo con gli stessi esempi precedenti

Esempio con ciclo for

colori = ["rosso", "giallo", "blu", "verde", "nero"]
for colore in colori:
    if colore == "blu":
        print("Il colore blu è presente nell'array")
        continue
    print(colore)

In questo caso, dopo aver mostrato il messaggio “Il colore blu è presente nell’array”, il programma non uscirà dall’array, ma mostrerà anche i valori “verde” e “nero”.

Esempio con ciclo while

numeri = 0
while numeri <= 10:
    if numeri == 8:
        continue
    print(numeri)
    numeri = numeri + 1

In questo esempio invece, l’utilizzo del continue va a creare un loop infinito, perché ignorando le istruzioni presenti dopo il continue quando viene trovato il numero 8, dopo il numero 7 il programma non riuscirà più ad uscire dal loop.

numeri = 0
while numeri <= 10:
    if numeri == 8:
        numeri = numeri + 1
        continue
    print(numeri)
    numeri = numeri + 1

Permettendogli invece di aggiungere un numero prima di continuare, non verrà mostrato il numero 8 ma si potrà proseguire con quelli successivi.

E’ quindi molto importante capire il funzionamento dei cicli e delle istruzioni per uscire dai cicli, per evitare funzionamenti indesiderati o loop infiniti.

Gioco – Indovina il colore

Andiamo ora a creare un semplice gioco nel quale l’utente dovrà indovinare il colore scelto:

# CICLO WHILE CON INTERRUZIONE
colori = ["rosso", "giallo", "blu", "verde", "nero"]
colore_scelto = input("Indovina il colore (per abbandonare il gioco digita 'esci':")
while colore_scelto != "rosso":
    print("Colore sbagliato, Riprova!")
    colore_scelto = input("Indovina il colore (per abbandonare il gioco digita 'esci':")
    if colore_scelto == "esci":
        break
if colore_scelto == colori[0]:
    print(f"Hai indovinato, il colore era {colori[0]}")
else:
    print("Grazie lo stesso per aver giocato!")

In questo esempio l’utente dovrà indovinare il colore “rosso”, per uscire dal gioco potrà anche scrivere “esci”.

Esercitazione

L’esercitazione per la prossima lezione è questa:

Partendo dal gioco precedente, rendi più casuale la scelta del colore da indovinare, non abbiamo ancora visto come selezionare un elemento a caso, quindi per farlo:

  • Aggiungi un Input che chieda all’utente di inserire un numero da 1 a 5 (il numero di colori presenti nell’array)
  • Con il numero inserito dall’utente seleziona il relativo colore nell’array
  • ATTENZIONE: Ricorda che all’utente stiamo chiedendo un numero da 1 a 5 ma l’array parte con l’indice 0

La soluzione dell’esercitazione sarà presente all’inizio della prossima lezione.

Video

Scopri di più da ClaudioMasci

Abbonati ora per continuare a leggere e avere accesso all'archivio completo.

Continua a leggere