Image default
Corsi Programmazione Python

Ciclo iterativo While – Corso Python per principianti – Lezione 12

Nella programmazione odierna il concetto di ciclo iterativo è fondamentale quindi è bene che inizi subito a conoscere questa grande potenzialità che Python e tutti gli altri linguaggi di programmazione mettono a disposizione.

Immagina che devi creare un programma che faccia un countdown dal numero 100 al numero 0 e stampi, ogni volta, il numero.
Con gli strumenti che hai conosciuto finora potresti fare solo in un modo, il modo più noioso:

x=100
print(“il numero è “, x) #stampa il numero 100
x=x-1
print(“il numero è “, x-1) #stampa il numero 99
x=x-1
print(“il numero è “, x-1) #stampa il numero 98
x=x-1
print(“il numero è “, x-1) #stampa il numero 97
# continua questo processo per altre 96 volte e poi terminerai il tuo programma.

Credi sia la soluzione ideale per poter creare un programma del genere?

Se sei convinto/a che questa sia la soluzione migliore allora fai un countdown da 10000 a 0, poi ne riparliamo!

Perchè perdere tutto questo tempo se possiamo benissimo sfruttare la potenzialità dei computer?

Al giorno d’oggi i computer vengono spesso utilizzati per automatizzare comandi ripetitivi, guarda con solo 4 righe di codice riusciamo a fare lo stesso programma che ti porterebbe a perdere ore ed ore avanti al computer:

def decrementaXRipetutamente():
x=10000
while x>0:

print(“il numero è “, x)

x=x-1

Questo semplice e stupido esempio ti dovrebbe far capire quanto è importante l’iterazione nel mondo dell’informatica.

Il ciclo while è il primo ciclo iterativo che studieremo in questo corso di programmazione Python base.

La sintassi in Python del ciclo while è la seguente:

while espressioneBooleana:

#corpo del while (tutte le istruzioni che vogliamo ripetere in modo iterativo)

In inglese while vuol dire “finché“, quindi un grande consiglio che ti dò è di leggere il programma nel linguaggio naturale, ovvero “finché l’espressione booleana è vera, allora esegui le istruzioni del corpo del while. Appena la condizione sarà falsa, allora il while si “distrugge” e si riparte dall’istruzione successiva“.

Se fai particolarmente attenzione alla sintassi di questo blocco puoi renderti conto che il while può trasformarsi facilmente in un ciclo infinito (in gergo si dice “il programma va in loop“).
Come? E’ facile! Se tu inserisci un’espressione booleana che non varia mai nel tempo rischi che, ad ogni controllo questa espressione sia vera e quindi il programma eseguirà all’infinito il blocco del while.

Quindi fai particolarmente attenzione alla condizione del while e controlla che la condizione possa diventare falsa e quindi far terminare il ciclo!

Vediamo ora due semplici funzioni che utilizzano il while:

def utilizzo_while1():

var=5

a=[]

while var>0: #Finché la variabile var è true!

a.append(var)

var=var-1

return a

def utilizzo_while2():

a=[3,4,5,1,1,4,2,9,6]

x=0

contatore=0

while not(x==len(a)):

contatore=contatore + a[x]#si può anche scrivere contatore+= a[x]

x=x+1

return contatore

La prima funzione inserisce con il metodo append (studiato nella lezione 6) elementi nella lista a (avrà come output prodotto a=[5,4,3,2,1]) e ritorna proprio la lista.

Invece la seconda funzione cosa fa? Presta particolare attenzione al not…

La tecnica del “while True” con l’istruzione break

Un’altra tecnica che viene utilizzata nella programmazione odierna (non sempre in quanto è molto pericolosa se non viene progettata accuratamente) è la seguente:

while True:

#corpo del while

Avrai sicuramente notato che questa porzione di codice genera un ciclo infinito in quanto True, per definizione, non può cambiare e quindi verrà eseguito iterativamente il corpo del while, all’infinito!

Fin qui ottima osservazione, con gli strumenti che hai conosciuto finora non potresti assolutamente scrivere una cosa del genere. Ecco perchè ora voglio introdurre l’istruzione break.

L’istruzione break in Python permette di bloccare prematuramente il ciclo e continuare con l’esecuzione del programma.

Allora, ai fini pratici, quando potrebbe esser usato while True con il break?

Solitamente si può utilizzare quando dobbiamo iterare un processo n volte, dove n è un valore che noi non conosciamo.

Ma è super sconsigliato utilizzare il while True in quanto, come anticipato prima, se non si valuta bene la condizione di uscita si rischia di far entrare il programma in loop e, a questo punto, è la fine!

Invece l’istruzione break è molto utilizzata non solo in condizioni di un ciclo while true ma anche per interrompere prematuramente un ciclo while normale ed un ciclo for come vedremo nella prossima lezione, quindi aggiungila alle tue conoscenze del linguaggio Python.

Crea una funzione Python utilizzando il ciclo while

Adesso per prendere piena dimestichezza con il nuovo ciclo while che hai appena imparato ti propongo un semplice esercizio.

Crea una funzione valuta_numeri(x,a) (se non ricordi come si utilizzano le funzioni riguarda la lezione sui moduli e funzioni) che ritorna True (return True) se il numero x=15 è più grande di tutti i valori presenti nella lista a=[2,3,7,6,1,12,13,4], False (return False) altrimenti.

NB. Ricorda di salvarti a qualche parte la lunghezza della lista, potrebbe tornarti utile per creare un buon ciclo while!

In seguito prova la correttezza della tua funzione utilizzando:

  • x=10 ed a=[1,2,3,4,5]
  • x=3 ed a=[4,19,1,2,4]
  • x=0 ed a=[-2,-1]

C’è qualcosa che non è molto chiara? Lascia un commento, sono a tua completa disposizione.

Sei soddisfatto/a di questa lezione ed hai imparato nuove cose? Ringraziaci con un like,  per te è solo un click, per noi è molto importante, grazie ancora. 🙂

Lezione 11: Istruzione condizionale IF <—> Lezione 13: Ciclo iterativo For

Prima di andar via, se ti siamo stati d'aiuto, che ne dici di lasciarci un like su Facebook? Per noi è importante 🙂

Related posts

Linguaggi Compilati e Linguaggi Interpretati: quale scegliere

Andrea Chiera

Liste – Corso Python per principianti – Lezione 6

Andrea Chiera

Console degli sviluppatori: cos’è e come attivarla

Simone Rossi