Capitolo 4. Conta da 1 a 10

4.1. Cicli While

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
Cosa fa il programma? Prima di tutto vede la linea 'a = 0' e assegna il valore zero alla variabile numerica a. Dopodiché vede il comando 'while a < 10:' che ordina a Python di controllare se la variabile a è minore di 10: in questo caso a corrisponde al valore zero quindi è minore di 10, per questo motivo Python eseguirà tutte le istruzioni rientrate sotto la struttura 'while'. In poche parole finché la variabile numerica a è minore di dieci Python esegue tutte le istruzioni tabulate sotto while.

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
Ho dimenticato il ':' dopo il while. Python avverte dell'errore e mostra all'utente dov'è il problema segnando la linea di codice incriminata con un utile ^. Dopo aver risolto il problema grazie all'aiuto di Python 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: finché a è diverso da zero esegui le istruzioni tabulate sotto while.

Ora che abbiamo capito la struttura di controllo '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 'Ctrl' e 'C' contemporaneamente. Questo manderà un segnale di terminazione al programma.

(Nota: a volte dovrete premere Invio oltre a 'Ctrl+c')