Ecco qui finalmente la nostra prima struttura di controllo. Solitamente il computer legge il nostro programma cominciando dalla prima linea per poi scendere da lì fino alla fine del codice. Le strutture di controllo influiscono sul programma cambiando l'ordine d'esecuzione dei comandi o decidendo se un determinato comando verrà eseguito o meno. A voi il sorgente di un primo esempio che utilizza la struttura di controllo while:
a = 0 while a < 10: a = a + 1 print a
Quindi il risultato dell'esecuzione:
1 2 3 4 5 6 7 8 9 10
Ecco un'altro esempio dell'uso di while:
a = 1 s = 0 print 'Enter Numbers to add to the sum.' print 'Enter 0 to quit.' while a != 0 : print 'Current Sum:',s a = input('Number? ') s = s + a print 'Total Sum =',s
Appena eseguito questo script l'output è stato questo:
File "sum.py", line 3 while a != 0 ^ SyntaxError: invalid syntax
^
. Dopo aver risolto il problema
il programma funziona a meraviglia ed ecco finalmente il risultato:
Enter Numbers to add to the sum. Enter 0 to quit. Current Sum: 0 Number? 200 Current Sum: 200 Number? -15.25 Current Sum: 184.75 Number? -151.85 Current Sum: 32.9 Number? 10.00 Current Sum: 42.9 Number? 0 Total Sum = 42.9
Come puoi vedere print 'Total Sum =',s è eseguito solamente alla fine. Questo perché la struttura di controllo while influisce solamente sulle istruzioni tabulate (rientrate, indentate). Il simbolo != significa diverso: while a != 0 : finché a è diverso da zero, vengono eseguite le istruzioni tabulate sotto il while.
Ora che abbiamo capito il ciclo while, possiamo programmare uno script che venga eseguito all'infinito. Una via molto facile per farlo è, ad esempio, questa:
while 1 == 1: print "Help, I'm stuck in a loop."
L'output di questo programma sarà una continua ripetizione della frase Help, I'm stuck in a loop. all'infinito, a meno che non lo fermiate premendo i tasti Control (o 'Ctrl') e 'c' (la lettera) contemporaneamente. Questo manderà un segnale di terminazione al programma (Nota: Talvolta è necessario premere anche enter dopo il Control-c).
Fibonacci.py
# Questo programma calcola la sequenza di Fibonacci. a = 0 b = 1 count = 0 max_count = 20 while count < max_count: count = count + 1 # Occorre tenere traccia finché ci sono cambiamenti old_a = a old_b = b a = old_b b = old_a + old_b # Attenzione che la virgola alla fine di un istruzione print # prosegue la stampa sulla stessa linea. print old_a, print
Output:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
Password.py
# Attende sino a quando non viene inserita la giusta password. # Usate Control-C per fermare il programma senza password. # Notate che se non viene inserita la giusta password, il ciclo # while prosegue all'infinito. password = "foobar" # Notate il simbolo != (diverso). while password != "unicorn": password = raw_input("Password:") print "Welcome in"
Esecuzione:
Password:auo Password:y22 Password:password Password:open sesame Password:unicorn Welcome in