Keywords: easytut-it

Next: Debugging Up: Tutorial per principianti in Previous: Conta da 1 a Indice
Subsections

- L'istruzione If
- Esempi
- Esercizi

# Decisioni

# L'istruzione If

Credo sia meglio iniziare il capitolo con un esempio a caldo: ecco quindi un programma che calcola il valore assoluto di un numero:

    n = input("Number? ")
    if n < 0:
            print "The absolute value of",n,"is",-n
    else:
            print "The absolute value of",n,"is",n

Output di due esecuzioni:

    Number? -34
    The absolute value of -34 is 34

    Number? 1
    The absolute value of 1 is 1

Quindi cosa fa il computer quando esegue questo codice? Prima di tutto chiede all'utente un numero grazie alla linea `n = input("Number? ")` dopodiché legge la linea `if n < 0:`, se `n` è minore di zero, Python esegue la linea `print "The absolute value of",n,"is",-n`, altrimenti (cioè se il numero è maggiore di zero) esegue la linea `print "The absolute value of",n,"is",n`.

Più semplicemente, Python decide se l'affermazione `n < 0` è vera o falsa. Un'istruzione `if` è sempre seguita da un blocco di altre istruzioni indentate che vengono eseguite nel caso l'affermazione sia vera. In caso contrario vengono eseguiti i comandi indentati sotto l'istruzione `else`, ovvero quando l'affermazione `if` risulta falsa.

Python presenta svariati operatori associabili al confronto di una variabile, eccone una lista completa:

Operatore | Funzione
`<` | minore di
`<=` | minore o uguale a
`>` | maggiore di
`>=` | maggiore o uguale a
`==` | uguale
`!=` | diverso da
`<>` | variante di diverso da

Un'altra proprietà dell'istruzione `if` è la funzione `elif` . È un'abbreviazione di else if e significa: esegui il blocco di istruzioni tabulato sotto elif se la condizione necessaria al primo `if` è falsa e la condizione `elif` è vera. Ecco un esempio:

    a = 0
    while a < 10:
            a = a + 1
            if a > 5:
                    print a," > ",5
            elif a <= 7:
                    print a," <= ",7
            else:
                    print "Neither test was true"

Questo è l'output:

    1  <=  7
    2  <=  7
    3  <=  7
    4  <=  7
    5  <=  7
    6  >  5
    7  >  5
    8  >  5
    9  >  5
    10  >  5

Osservate come la linea `elif a <= 7` entri in azione solamente quando la prima istruzione `if` risulta falsa. Come potete vedere, l'istruzione `elif` consente di effettuare test multipli all'interno di una singola istruzione if.

# Esempi

High_low.py

    # Giocate ad indovinare il numero alto-basso
    # (originariamente scritto da Josh Cogliati, migliorato da Quique)

    # Questo dovrebbe attualmente essere qualcosa che è semi casuale, come
    # l'ultimo carattere del tempo o qualcos'altro, ma dovrete aspettare
    # i prossimi capitoli (Esercizio supplementare, modificate con random,
    # come richiesto nel capitolo sull'uso dei moduli).

    number = 78
    guess = 0

    while guess != number :
        guess = input ("Guess a number: ")

        if guess > number :
            print "Too high"

        elif guess < number :
                print "Too low"

    print "Just right"

Esecuzione:

    Guess a number:100
    Too high
    Guess a number:50
    Too low
    Guess a number:75
    Too low
    Guess a number:87
    Too high
    Guess a number:81
    Too high
    Guess a number:78
    Just right

even.py

    # Chiedi un numero.
    # Stampa se è pari o dispari.

    number = input("Tell me a number: ")
    if number % 2 == 0:
        print number,"is even."
    elif number % 2 == 1:
        print number,"is odd."
    else:
        print number,"is very strange."

Esecuzione:

    Tell me a number: 3
    3 is odd.

    Tell me a number: 2
    2 is even.

    Tell me a number: 3.14159
    3.14159 is very strange.

average1.py

    # Continua a chiedere numeri finché non viene immesso 0.
    # Stampa la media dei valori.

    count = 0
    sum = 0.0
    number = 1 # imposta un valore, altrimenti il ciclo
               # while terminerebbe immediatamente.

    print "Enter 0 to exit the loop"

    while number != 0:
        number = input("Enter a number:")
        count = count + 1
        sum = sum + number

    count = count - 1 # Togli un'unità all'ultimo numero.
    print "The average was:",sum/count

Esecuzione:

    Enter 0 to exit the loop
    Enter a number:3
    Enter a number:5
    Enter a number:0
    The average was: 4.0

    Enter 0 to exit the loop
    Enter a number:1
    Enter a number:4
    Enter a number:3
    Enter a number:0
    The average was: 2.66666666667

average2.py

    # Continua a chiedere numeri finché count li richiede.
    # Stampa la media dei valori.

    sum = 0.0

    print "This program will take several numbers than average them"
    count = input("How many numbers would you like to sum:")
    current_count = 0

    while current_count < count:
        current_count = current_count + 1
        print "Number ",current_count
        number = input("Enter a number:")
        sum = sum + number

    print "The average was:",sum/count

Esecuzione:

    This program will take several numbers than average them
    How many numbers would you like to sum:2
    Number  1
    Enter a number:3
    Number  2
    Enter a number:5
    The average was: 4.0

    This program will take several numbers than average them
    How many numbers would you like to sum:3
    Number  1
    Enter a number:1
    Number  2
    Enter a number:4
    Number  3
    Enter a number:3
    The average was: 2.66666666667

# Esercizi

Scrivete un programma che chieda all'utente di indovinare una password, ma che dia al giocatore solamente 3 possibilità, fallite le quali il programma terminerà, stampando ``È troppo complicato per voi''.

Scrivete un programma che chieda due numeri. Se la somma dei due numeri supera 100, stampate ``Numero troppo grande''.

Scrivete un programma che chieda all'utente il nome. Se viene inserito il vostro nome, il programma dovrà rispondere con un ``Questo è un bel nome'', se il nome inserito è "John Cleese" o "Michel Palin" il programma dovrà rispondere con una battuta ;) mentre in tutti gli altri casi l'output del programma sarà un semplice ``Tu hai un bel nome!''.

Next: Debugging Up: Tutorial per principianti in Previous: Conta da 1 a Indice