mercoledì 31 ottobre 2012

Mission Python: L'istruzione if - esecuzione condizionale

Normalmente lo script viene eseguito sequenzialmente, dalla prima istruzione all'ultima. Questo non è sempre vero, tra breve vedremo le funzioni, ma siamo ancora agli script semplici.
Anche senza funzioni ci sono casi in cui l'esecuzione di un'istruzione o un blocco di esse può essere eseguita solo se si verificano certe condizioni. Un esempio semplicissimo: ricordate, vero, l'operatore % (modulo) cioè resto della divisione fra interi? Eccolo all'opera: (i0.py)



#!/usr/bin/python
# -*- coding: utf-8 -*-

n = int(raw_input('dammi un numero: '))

resto = n % 2
pari = resto == 0

if pari:
    print n, 'è pari'

OK, si può fare meglio, sapere anche cosa capita se il numero è dispari, ecco: (i1.py)

#!/usr/bin/python
# -*- coding: utf-8 -*-

n = int(raw_input('dammi un numero: '))

resto = n % 2
pari = resto == 0

if pari:
    print n, 'è pari'
else:
    print n, 'è dispari'

Adesso rischio con i matematici. Ma in ossequio alla norma salva Sallusti sono disponibile a smentirmi, fin da subito, anzi considerate la cosa già fatta. Sì perché ci metto dentro anche una condizione, tutta per il numero zero. Secondo Wikipedia non dovrei qui

#!/usr/bin/python
# -*- coding: utf-8 -*-

n = int(raw_input('dammi un numero: '))

resto = n % 2
pari = resto == 0

if n == 0:
    print n, 'è zero'
elif pari:
    print n, 'è pari'
else:
    print n, 'è dispari'

L'unica cosa da notare è che elif sta per else if, Guido van Rossum, il creatore di Python, ha pensato che si potevano risparmiare tre caratteri.

Se poi volessimo testare più numeri potremmo inserire tutto in un ciclo (come abbiamo visto nel post precedente). Ecco i3.py

#!/usr/bin/python
# -*- coding: utf-8 -*-

t = True
while t:
    n = int(raw_input('dammi un numero: '))

    resto = n % 2
    pari = resto == 0

    if n == 0:
        print n, 'è zero'
        t = not t # si poteva scrivere anche t = False
    elif pari:
        print n, 'è pari'
    else:
        print n, 'è dispari'

Uh! Un blocco dentro un blocco! Troppo difficile? Lasciate un commento che dissiperemo eventuali dubbi.

Il caro Juhan

Alla prossima!

P.S. Vi ricordo che l'indice a "Mission Python" lo potete trovare qui


2 commenti:

  1. Juhan, il concetto di if mi è chiaro, quello di ciclo un po' meno.

    RispondiElimina
    Risposte
    1. Fai un ciclo cioè ripeti più volte un'istruzione o un blocco in cui cambia solo qualche valore di variabile. Ritorna al post dei cicli e dimmi là cosa non ti torna.

      Elimina