Controllo del flusso

In Python il tuo programma (o anche chiamato script) verrà eseguito dall'alto verso il basso, fino a quando non ci sarà più nulla da eseguire.

Il tuo compito è quello di includere istruzioni condizionali per dire al computer quando deve eseguire determinati blocchi di codice.

In poche parole comandi il sistema in modo imperativo "Se queste condizioni sono soddisfatte, allora esegui queste cose!".

Tipo di dato boolean

I valori booleani sono un tipo di dato in Python ed hanno solo due valori: True e False (vero e falso).

In particolare, questi due valori sono del tipo bool.
Poiché i booleani sono un tipo di dato, creare una variabile con un valore booleano non si differenzia dagli altri tipi di dato.

vero = True
falso = False

print (type(vero))
<class 'bool'>

Operatore logico and

In Python l'operatore and esegue un confronto booleano tra due valori, variabili o espressioni booleane.

Se entrambi i valori dell'operatore sono True, allora l'operatore restituisce True. Se uno dei due valori (o entrambi) è False, allora l'operatore restituisce False.

Un valore non booleano (o una variabile che memorizza un valore) sarà sempre True quando viene usato con l'operatore and.

print (True and True)
>>> True
print (True and False)
>>> False
print (False and False)
>>> False
print (1 == 1 and 1 < 2)
>>> True
print (1 < 2 and 3 < 1)
>>> False
print ("Vero" and 100)
>>> True

Operatore logico or

L'operatore logico or esegue un confronto tra due espressioni booleane e rende True se almeno una delle espressioni è True. Altrimenti, se entrambe le espressioni sono False, allora l'intera espressione è False.

print (True or True)
>>> True
print (True or False)
>>> True
print (False or False)
>>> False
print (1 < 2 or 3 < 1)
>>> True
print (3 < 1 or 1 > 6)
>>> False
print (1 == 1 or 1 < 2)
>>> True

Operatore logico not

L'operatore not è usato in un'espressione booleana per valutare l'espressione al suo valore inverso.
Se l'espressione originale è True, inserendo l'operatore not renderebbe l'espressione False e viceversa.

print (not True)
>>> False
print (not False)
>>> True
print (1 > 2)
>>> False
print (not 1 > 2)
>>> True
print (1 == 1)
>>> True
print (not 1 == 1)
>>> False

Istruzione if

In Python l'istruzione if viene utilizzata per determinare l'esecuzione del codice in base alla valutazione di un'espressione booleana.

Se l'espressione if è True, viene eseguito il codice indentato che segue l'istruzione.

Se invece è False, allora il codice indentato che segue l'if viene saltato e il programma esegue la riga di codice successiva che è allo stesso livello di indentazione dell'if.

prova = 100

if prova > 1:
 print ("Questo stringa viene stampata.")
 if prova > 1000:
   print ("Questo stringa non viene stampata.")
print ("A questo punto il programma continua.")
Questo stringa viene stampata.
A questo punto il programma continua.

Istruzione else

L'istruzione else fornisce del codice alternativo da eseguire se l'espressione in un'istruzione if è False.

La parola chiave else deve essere seguita dai due punti.

Nell'if la porzione di codice indentato viene eseguito se l'espressione è True. Il codice indentato immediatamente successivo all'altro viene eseguito solo se l'espressione è False.

Per segnare la fine dell'altro blocco, il codice indentato dell'istruzione else deve essere allo stesso livello dell'if iniziale.

a = 50‍
if a < 10:
   print ("Il numero è minore di 10")
else:
   print ("Il numero è maggiore di 10")
Il numero è maggiore di 10

Operatore uguale ==

L'operatore uguale == è usato per confrontare due valori, variabili o espressioni per determinare se sono uguali.

Se i valori confrontati sono gli stessi, l'operatore restituisce True, altrimenti restituisce False.

L'operatore tiene conto del tipo di dati quando effettua il confronto, quindi una stringa "2" non è considerato uguale ad un valore numerico 2.

if "Uno" == "Uno":
  print ("Sono uguali")
Sono uguali

Operatore non uguale !=

L'operatore != è usato per confrontare due valori, variabili o espressioni per determinare se NON sono uguali.

Se NON sono uguali, l'operatore restituisce True. Se sono uguali, allora ritorna False.

L'operatore tiene conto del tipo di dato quando effettua il confronto in modo che un valore 10 NON sia uguale al valore della stringa "10" e l'operatore restituisce True.

if "Si" != "No":
   print ("Non sono uguali!")
 
val1 = 1
val2 = 2
 
if val1 != val2:
  print ("Non sono uguali!")
Non sono uguali!
Non sono uguali!

Operatori di confronto

Gli operatori relazionali confrontano due valori o espressioni. I più comuni sono:

  • < meno di
  • > maggiore di
  • <= inferiore o uguale a
  • >= maggiore o uguale a
a = 1
b = 2
a < b  
>>> True

a > b
>>> False

a >= b
>>> False

a <= b
>>> True

a <= a
>>> True

Istruzione elif

L'istruzione in Python elif permette di fare ulteriori controlli dopo una prima istruzione if.

Una istruzione elif si differenzia dall'else perché viene fornita un'altra espressione (condizione) da verificare, proprio come accade per l'if iniziale.

È possibile utilizzare più istruzioni elif dopo l'if per eseguire una serie di controlli. Una volta che un'espressione elif è True, non vengono eseguite ulteriori istruzioni elif.

num = 4.4

if num > 0:
   print ("Numero positivo")
elif num == 0:
   print ("Zero")
else:
   print ("Numero negativo")
Numero positivo

Gestire le eccezioni

Il codice delimitato dalle istruzioni try ed except può essere usato per gestire errori in quel blocco del codice.

Il codice che, probabilmente, genera un errore può essere scritto nel blocco try. Durante l'esecuzione, se quel blocco di codice crea un errore, il resto del blocco in try cesserà di essere eseguito e il blocco di codice except verrà così eseguito.

def anno_bisestile(anno):
   si_anno_bisestile = False
   if anno % 4 == 0:
      si_anno_bisestile = True
   
try:
 anno_bisestile(2018)
 print (si_anno_bisestile)
except:
 print ("Il tuo codice contiene un errore.")
Il tuo codice contiene un errore.