Image default
Corsi Programmazione Python

Istruzione condizionale IF – Corso Python per Principianti – Lezione 11

Ed ecco che ci stiamo addentrando sempre più nel mondo della programmazione in Python.

Finora abbiamo imparato insieme ad installare l’IDLE di Python, conoscere i tipi primitivi e studiato le strutture più importanti quali le stringhe, liste e tuple che ci serviranno tantissimo per programmare, quindi, mi raccomando, se c’è qualcosa che non è chiara studia di nuovo la lezione e fammi domande sui tuoi dubbi, è inutile andare avanti senza avere buone basi sulle lezioni precedenti.

Nella lezione precedente abbiamo imparato cosa è un’espressione booleana, vedrai che ora con l’introduzione del costrutto if ci tornerà molto utile.

Finora abbiamo fatto esercizi di programmazione molto semplici, adesso dobbiamo fare il salto di qualità, sei pronto/a?

Come ben sai il programma che tu scrivi sul tuo file .py viene eseguito dalla prima riga fino all’ultima, in ordine.
Con l’istruzioni condizionale if potrai valutare appunto una condizione e, quindi, variare il flusso di esecuzione in base al risultato che questa otterrà.

If: istruzione fondamentale nella programmazione

L’if (in inglese “se”) è proprio l’istruzione condizionale più semplice ed utilizzata ed è cosi rappresentata:

if (espressione booleana è True):

#corpo dell’if (può essere formato da 1 o più istruzioni)

#resto del programma

Come hai potuto imparare dalla lezione precedente un espressione booleana può essere vera o falsa.
Se l’espressione booleana è vera verrà eseguito il corpo dell’if, altrimenti il corpo non viene eseguito ed il programma ripartirà dalla riga successiva al termine del corpo dell’if.

Ricorda sempre che il corpo dell’if deve essere indentato, proprio come vedi nell’esempio qui sopra, altrimenti ti genererà un errore expected an indented block.

Un esempio pratico è il seguente:

x=2
if x>1:

print(“Ottimo lavoro”)

Cosa farà secondo te questo programma?

Essendo 2>1 per la matematica, la condizione (x>1) è True, quindi il programma stamperà “Ottimo lavoro”.
E se x=0? Cosa succedeva? Veniva stampato “Ottimo lavoro” o no?

If-Else

Esiste anche un’altra forma dell’if, questa la sintassi in Python:

if(espressione booleana è True):

#esegui il corpo dell’if

else:

#esegui il corpo dell’else

In inglese else vuol dire proprio “altrimenti”. Utilizzando questa condizione hai 2 scelte, se l’espressione booleana è vera, allora il programma eseguirà il corpo dell’if, saltando il corpo dell’else e poi continuando normalmente nello svolgimento delle altre istruzioni, altrimenti, se l’espressione booleana è falsa, salterà il corpo dell’if, eseguendo direttamente il corpo dell’else per poi continuare con le altre istruzioni fuori dal blocco if-else.

Ricorda che all’else non devi affiancare nessuna condizione, ti basta scrivere else: ed in automatico esso coprirà tutti i casi che non sono stati trattati nell’if.

Hai capito come funziona? Ti faccio subito un esempio:

x=2
if x>1:

print(“Ottimo lavoro”)

else:

print(“Pessimo lavoro”)

print(“Altre istruzioni”)

Il seguente codice stamperà prima “Ottimo lavoro” poiché 2>1, poi stamperà “Altre istruzioni”, saltando appunto il corpo dell’else.

x=2
if x>5:

print(“Ottimo lavoro”)

else:

print(“Pessimo lavoro”)

print(“Altre istruzioni”)

In questo caso invece 2 non è più grande di 5, quindi si entrerà nel corpo dell’else stampando “Pessimo lavoro” e poi, come sempre, continuando con le istruzioni fuori dal blocco, stamperà “Altre istruzioni”.

If-Elif-Else

Abbiamo anche un’altra variante del classico if, adesso te la mostrerò subito.

x=10
if x>10:

print(“Corpo if”)

elif x=10:

print(“Corpo elif”)

else:

print(“Corpo else”)

Cosa farà questo codice?
E’ molto semplice, ti stamperà “Corpo elif” in quanto controlla prima la condizione dell’if, se è falsa continua a scendere valutando l’elif (ricorda che puoi mettere quanti elif vuoi) e cosi via.

Appena una condizione è vera verrà eseguito il corpo indentato della condizione e poi, in automatico, vengono saltati tutti i restanti elif e l’else finale, per continuare con il programma dalla riga di codice dopo il blocco else.

x=10
if x>=20:

print(“corpo if”)

elif x>15 and x<20:

print(“corpo del primo elif”)

elif x>=10 and x<=15:

print(“corpo del secondo elif”)

elif x==10:

print(“corpo del terzo elif”)

else:
print(“corpo dell’else”)

y=0

Il programma viene cosi eseguito:

  1. Si assegna ad una variabile intera x il numero 10.
  2. Nella riga successiva troviamo un blocco if-elif-else. Per prima cosa viene eseguita la condizione dell’if (10>=20) che risulta essere falsa, quindi si scala al primo elif.
  3. Al primo elif si verifica la condizione (10>15 e 10<20) che, ancora una volta risulta esser falsa. (NB. c’è l’operatore logico and).
  4. Adesso si controlla la condizione del secondo elif (10>=10 e 10<=15) che risulta essere vera, quindi verrà stampata la stringa “corpo del secondo elif“.
  5. Adesso si salta automaticamente all’altro assegnamento y=0, quindi sia la condizione dell’ultimo elif, sia le condizioni restanti dell’else non vengono proprio controllate. Quindi, anche se la condizione dell’ultimo elif è vera, non verrà eseguito il suo corpo.

Quindi ricorda, le condizioni vengono sempre controllate nell’ordine in cui sono state scritte. 

Se la prima è falsa viene provata la seconda e così via fin quando una condizione è verificata.
Di questa si esegue il suo corpo e il programma riprende dalla fine del blocco totale.

E’ evidente che puoi utilizzare queste condizioni indentate come ad esempio:

x=3
if x>0:

if x==1:

print(“x è uguale ad 1”)

elif x==2:

print(“x è uguale a 2”)

elif x==3:

print(“x è uguale a 3”)

else:

print(“x è un numero maggiore di 3, positivo”)

else:

print(“x è un numero negativo”)

Come funzionerà in questa occasione? E se x=-3? Prova a riflettere…

Hai capito bene l’istruzione if?

Testalo subito con questo esercizio:

Hai una lista a=[1,2,3,4,5]. Controlla se la somma del primo elemento ed ultimo elemento di questa lista risulta essere maggiore o uguale a 10. Se questo fosse vero stampa “Condizione corretta, la somma è maggiore o uguale a 10”, altrimenti stampa “la somma è minore”.

E’ bene che tu capisca bene questa istruzione in quanto è fondamentale per poter diventare un buon programmatore.
Per qualsiasi dubbio fermati, chiedi tramite un commento e cercherò di chiarirti ogni problema.

Mi raccomando, capisci a fondo questo argomento, esercitati con esercizi molto semplici stile quello che ti ho proposto qui sopra. Solo dopo aver capito al 100% il funzionamento dell’if nella programmazione passa alla lezione successiva per poter imparare la tua prima istruzione iterativa.

Esercizio – versione difficile:
Crea una funzione controllaInEFin(lista) che riceve come parametro una lista e, controlla se il primo elemento (in posizione 0) e l’ultimo elemento della lista ( in posizione len(lista)-1) sommati siano maggiori o uguali di 10. Se questo è vero stampa “Condizione corretta, la somma è maggiore o uguale a 10”, altrimenti stampa “la somma è minore”.

In parole povere il seguente esercizio in versione più “difficile” ti aiuta ad applicare ciò che hai studiato sulla lezione sulle funzioni e ti prepara a risolvere problemi nel caso generale e non nel particolare. (Creata questa funzione, indipendentemente dalla lunghezza della lista, puoi fare questo test sempre e comunque).

C’è qualcosa che non è molto chiara? Lascia un commento, sono a tua completa disposizione.

Sei soddisfatto/a di questa lezione ed hai imparato nuove cose? Ringraziaci con un +1,  per te è solo un click, per noi è molto importante, grazie ancora. 🙂

Lezione 10: Algebra di Boole e Operatori Logici <—> Lezione 12: Ciclo iterativo While

Prima di andar via, se ti siamo stati d'aiuto, che ne dici di lasciarci un like su Facebook? Per noi è importante 🙂

Related posts

Liste – Corso Python per principianti – Lezione 6

Andrea Chiera

Algebra di Boole e Operatori Logici – Corso Python per principianti – Lezione 10

Andrea Chiera

Linguaggi Compilati e Linguaggi Interpretati: quale scegliere

Andrea Chiera