Articolo originale: https://www.freecodecamp.org/news/python-do-while-loop-example/

I loop rappresentano una funzionalità molto utile e frequentemente usata in tutti i moderni linguaggi di programmazione.

Se vuoi automatizzare un'attività specifica e ripetitiva o evitare di dover scrivere del codice con ripetizioni nei tuoi programmi, usare un loop è l'opzione migliore che ci sia.

I loop sono un insieme di istruzioni che vengono eseguite ripetutamente finché una condizione è verificata. Impariamo di più sul modo in cui funzionano i loop in Python!

Loop in Python

Ci sono due tipi di loop integrati in Python:

  • loop for
  • loop while

Concentriamoci su come creare un loop while in Python e su come funziona.

Cos'è un loop while in Python?

La sintassi generica di un loop while in Python è la seguente:

while condizione:
    esegui il codice nel corpo del loop

Un loop while esegue un pezzo di codice quando la condizione del loop è True. La porzione di codice con le istruzioni desiderate continua ad essere eseguita finché la condizione non è più True.

Un loop while controlla sempre la condizione prima dell'esecuzione.

Se la condizione è valutata come True, allora viene eseguito il codice presente nel corpo del loop.

Ad esempio, questo loop viene eseguito finché numero è minore di 10:

numero = 0
while numero < 10:
    print(f"Il numero è {numero}!")
    numero = numero + 1

Output:

Il numero è 0!
Il numero è 1!
Il numero è 2!
Il numero è 3!
Il numero è 4!
Il numero è 5!
Il numero è 6!
Il numero è 7!
Il numero è 8!
Il numero è 9!

Qui, la variabile numero è inizialmente impostata a 0.

Prima che qualsiasi codice sia eseguito, Python controlla la condizione (numero < 10). Dato che la condizione è True, l'istruzione print è eseguita e Il numero è 0! viene stampato sulla console.

numero è incrementato di 1. La condizione è rivalutata ed è ancora True, quindi l'intera procedura si ripete finché il valore della variabile numero è uguale a 9.

Stavolta Il numero è 9! viene stampato sulla console e numero è incrementato, ma adesso numero è uguale a 10 e la condizione non è più verificata, quindi il loop termina.

È possibile che un loop while non venga mai eseguito se la condizione non è verificata, come in questo esempio:

numero = 50
while numero < 10 :
    print(f"Il numero è {numero}!")

Dato che la condizione è sempre False, le istruzioni nel corpo del loop non sono mai eseguite.

Non creare loop infiniti

Come hai visto nell'esempio qui sopra, i loop while sono tipicamente accompagnati da una variabile, il cui valore cambia durante la durata del loop e, alla fine, determina quando il loop finisce.

Se non aggiungi questa riga di codice, creerai un loop infinito.

Il valore di numero non sarà incrementato e aggiornato, restando sempre 0 e, di conseguenza, la condizione numero < 10 sarà sempre True. Ciò significa che il loop continuerà a iterare per sempre.


# non eseguire questo loop

numero = 0
while numero < 10:
    print(f"Il numero è {numero}!")

Output:

Il numero è 0!
Il numero è 0!
Il numero è 0!
Il numero è 0!
Il numero è 0!
Il numero è 0!
Il numero è 0!
...

Viene eseguito indefinitamente.

È equivalente a:


# non eseguire questo loop
while True:
    print("Sono sempre vero")

E se ti dovessi trovare in una situazione come questa?

Premi Ctrl + C per terminare l'esecuzione del loop.

Cos'è un loop do while?

La sintassi generica di un loop do while in altri linguaggi di programmazione è:

do {
  blocco di istruzioni del loop da eseguire;
  }
while(condizione);

Ad esempio, un loop do while in C:

#include <stdio.h>
 
int main(void)
 {
   int i = 10;
   do {
      printf("il valore di i: %i\n", i);
      i++;
      }
  while( i < 20 );
 }

Per i loop do while, è singolare il fatto che il codice nel blocco del loop viene eseguito almeno una volta.

Il codice viene eseguito una volta e la condizione è controllata soltanto dopo l'esecuzione.

Quindi il codice viene prima eseguito e poi la condizione viene controllata.

Se la condizione è verificata, il loop continua.

Ci sono dei casi in cui è necessario eseguire del codice almeno una volta, ed è qui che i loop do while si rivelano utili.

Ad esempio, se stai scrivendo un programma che prende un input dagli utenti, potresti chiedere solo un numero positivo. Il codice viene eseguito almeno una volta. Se il numero inserito dall'utente è negativo, il loop sarà eseguito di nuovo. Se è positivo terminerà.

Python non ha una funzionalità integrata per creare esplicitamente un loop do while come gli altri linguaggi, ma è possibile mimarne uno.

Come emulare un loop do while in Python

Per creare un loop do while in Python, hai bisogno di modificare leggermente il loop while, così da poter ottenere il comportamento di un loop do while in altri linguaggi.

Come abbiamo già detto, un loop do while viene eseguito almeno una volta. Se la condizione è verificata, viene eseguito di nuovo.

Il loop while, d'altro canto, può non essere mai eseguito, perché viene eseguito soltanto quando la condizione è verificata.

Quindi, vediamo un esempio in cui una riga di codice viene eseguita almeno una volta:

parola_segreta = "python"
counter = 0

while True:
    parola = input("Inserisci la parola segreta: ").lower()
    counter = counter + 1
    if parola == parola_segreta:
        break
    if parola != parola_segreta and counter > 7: 
        break

Il codice sarà eseguito almeno una volta, chiedendo l'input all'utente.

Con True è sempre garantita l'esecuzione almeno una volta, altrimenti si crea un loop infinito.

Se l'input dell'utente è la parola segreta corretta, il loop termina.

Se l'utente inserisce la parola segreta errata per più di 7 volte, il loop termina.

L'istruzione break ti permette di controllare il flusso di un loop while e non incappare in un loop infinito.

break termina immediatamente l'iterazione corrente e esce dal loop.

In questo modo puoi creare un effetto simile a un loop do while in Python.

Il loop sarà sempre eseguito almeno una volta. Continuerà a iterare se la condizione non è raggiunta e terminerà quando la condizione è verificata.

Conclusione

Adesso sai come creare un loop do while in Python.

Se sei interessato a imparare di più su Python, segui il corso gratuito di freeCodeCamp Calcolo scientifico con Python per avere una panoramica a tuttotondo sugli aspetti fondamentali del linguaggio.

Alla fine del corso dovrai realizzare cinque progetti di pratica su ciò che hai imparato per ottenere la certificazione.

Grazie per aver letto questo articolo e buono studio!