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.

True and True      
>>> True

True and False
>>> False

False and False
>>> False

1 == 1 and 1 < 2
>>> True

1 < 2 and 3 < 1
>>> False

"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.

True or True
>>> True

True or False
>>> True

False or False
>>> False

1 < 2 or 3 < 1
>>> True

3 < 1 or 1 > 6
>>> False

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.

not True
>>> False

not False
>>> True

1 > 2
>>> False

not 1 > 2
>>> True

1 == 1
>>> True

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:
  # L'espressione è True
  print("Questo stringa viene stampata.")‍

if prova > 1000:
   # L'espressione è False
   print("Questo stringa non viene stampata.")

print("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")

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":
  # True
  print("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":
   # True
  print("Non sono uguali!")
 
val1 = 1
val2 = 2
 
if val1 != val2:
  print("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")

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)
# La variabile si_anno_bisestile è dichiarata dentro la funzione
except:
 print("Il tuo codice contiene un errore.")