1.4 Comandi “fuori ordine” e condizionati

I codici che abbiamo visto fin ora procedono dall’inizio alla fine eseguendo in maniera ordinata tutte le istruzioni scritte. Questi sono detti programmi lineari, lineari come una lunga strada dritta.

Molto più utile è poter cambiare il percorso, a seconda della condizione prendere una diramazione diversa.
Vedremo come far decidere una diramazione diversa a seconda della condizione

se(<testa di una condizione>) allora
    <istruzioni>
altrimenti
    <istruzioni>

IN PYTHON SI TRADUCE

if (test condizione): #a==5(Uguale?) a!=5(diverso?) < <= > >=
    <istruzione/i>
else: #opzionale
    <istruzione/i>

La nostra condizione a 3 parti, 2 obbligatorie e una opzionale:
– “if (test condizione):” prima c’è la parola if seguita da un test di una condizione (normalmente un’espressione) che tornera i valori True o False;
– “<istruzione/i>”, uno o più comandi (un blocco di codice) che viene eseguito se la condizione è True;
– “else: <istruzione/i>”, un blocco alternativo di codice, che viene eseguito se la condizione è False. Questa parte non è obbligatoria ma opzionale.

Passiamo ad un esempio pratico, controlliamo se il valore inserito è maggiore di 5:

# Controlliamo se un valore è > di 5

n = eval(input("Ins. un valore: "))
if n>5:
  print(n,"> 5")
else:
  print(n,"non è > di 5")

Se inseriamo 2 il nostro output sarà:

Ins. un valore: 2
2 non è > di 5

Cosa posso testare? Posso fare dei confronti “matematici” con i simboli:
== , controllo se i valori numerici, booleani o testi sono uguali a destra e sinistra del simbolo “==”;
!= , controllo se i valori numerici, booleani o testi non sono uguali a destra e sinistra del simbolo “!=”
< , controllo se il valore a sinistra è minore di quello a destra del simbolo “<“
<=, controllo se il valore a sinistra è minore o uguale di quello a destra del simbolo “<=”  
> , controllo se il valore a sinistra è maggiore di quello a destra del simbolo “>”
>=, controllo se il valore a sinistra è maggiore o uguale rispetto quello a destra del simbolo “>=”
in, controllo se il valore a sinistra è contenuto in quello a destra della parola “in”

Python usa l’indentazione (gli spazzi bianchi all’inizio della riga di codice) per definire i blocchi di istruzioni e la struttura del nostro codice. Altri linguaggi usano caratteri per indicare l’inizio e la fine dei blocchi, ad esempio il C usa { e }.

# Il codice senza indentazione non funziona
# L'interprete Python non riesce a capire dove
# finiscono le istruzioni da fare se l'if è True o False

n = eval(input("Ins. un valore: "))
if n>5:
  print(n,"> 5")
else:
  print(n,"non è > di 5")


# Il codice con l'indentazione funziona
# L'interprete Python riesce a capire dove
# finiscono le istruzioni da fare se l'if è True o False
# grazie a rientri

n = eval(input("Ins. un valore: "))
if n>5:
  print(n,"> 5") #Dentro if
else:
  print(n,"non è > di 5") # Dentro else
print("Fine") #fuori da if e da else

Esercizi ed approfondimenti: LINK

Per approfondire if: https://www.w3schools.com/python/python_conditions.asp

Per approfondire in: https://stackoverflow.com/questions/19775692/use-and-meaning-of-in-in-an-if-statement

Video su if in Python: