Keywords: easytut-it

Next: Decisioni Up: Tutorial per principianti in Previous: Chi va là? Indice
Subsections

- Cicli While
- Esempi

# Conta da 1 a 10

# 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 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).

# Esempi

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

Next: Decisioni Up: Tutorial per principianti in Previous: Chi va là? Indice