![](https://www.valcon.it/pp/wp-content/uploads/ciclo12.png)
Il ciclo while ripete l’esecuzione del blocco di istruzioni finché una certa condizione (espressione logica) è vera
Osserva
- prima di entrare si controlla il valore di A
- si eseguono un certo numero di istruzioni (un blocco)
- alla fine il controllo torna su per ripetere eventualmente l’esecuzione del blocco
- se il controllo non viene superato il controllo passa all’istruzione immediatamente successiva al ciclo while
- se il valore di A non viene modificato dalle istruzioni interne si ottiene un ciclo senza fine…
while(a > 0):
istr_1
istr_2
In alcuni casi è utile avere un ciclo senza fine: si scrive direttamente True come valore dell’espressione logica!
while(True):
istr_1
istr_2
Indice
La situazione in cui il valore di una variabile controlla il ciclo è molto frequente
a=0 # 1. Inizializzazione
while(a < 10): # 2. Controllo
istr_1 # 3. Utilizzo di a
istr_2 # ...
... # ...
a=a+1 # 4. Aggiornamento con passo 1
La variabile è gestita fino a 4 volte
- inizializzata prima che il ciclo inizi
- controllata prima di ogni entrata
- utilizzata all’interno del blocco di istruzioni
- aggiornata dopo aver svolto le operazioni del blocco
Se la variabile assume valori numerici progressivi diventa un indice.
Il valore utilizzato per aggiornare l’indice è il passo (step), la ragione della progressione.
L’uso del while è necessario se
- i valori dell’indice sono numeri decimali (la funzione range() di Python genera solo sequenze di numeri interi)
- il numero di ripetizioni (la durata) non è noto a priori
Esempio 1
i=5.0
while(i <= 10.0):
print(i, end=" ")
i += 0.5
5.0 5.5 6.0
... 9.5 10.0
Da 5.0 a 10.0, con i mezzi
Esempio 2
i=5.0
while(i < 10.0):
print(i, end=" ")
i += 0.25
5.0 5.25 5.5
... 9.5 9.75
Da 5.0 a 10.0 (escluso), con i quarti
Esempio 3
p=2
while(p <= 1000):
print(p, end=" ")
p *= 2
2 4 8 16 32 64
128 256 512
Le potenze di 2 che non superano 1000
Esempio 4
import random
dado=0
while(dado != 6):
dado=random.randint(1,6)
print(dado)
... ... 6
Lancio del dado finché non esce 6