Vai al contenuto

Prendere decisioni con if

In questa lezione impari a

  • far scegliere al programma cosa fare con if, elif ed else
  • indentare correttamente il codice
  • combinare più condizioni
  • generare numeri casuali con il modulo random

Finora i programmi eseguivano sempre le stesse istruzioni, dalla prima all'ultima. Con le strutture condizionali il programma può comportarsi in modo diverso a seconda della situazione, proprio come il blocco Se (il rombo) di Flowgorithm.

if: se la condizione è vera

voto = int(input("Che voto hai preso? "))

if voto >= 6:
    print("Sufficiente, bravo!")

Nota due cose: i due punti : alla fine della riga dell'if, e lo spazio all'inizio della riga sotto.

L'indentazione è obbligatoria

Gli spazi a inizio riga (si chiamano indentazione) non servono solo a rendere il codice ordinato: dicono a Python quali istruzioni appartengono all'if. Si usano 4 spazi, o il tasto Tab.

if voto >= 6:
    print("Sufficiente")    # fa parte dell'if
    print("Continua così")  # fa parte dell'if
print("Fine")               # viene eseguita sempre

Se dimentichi l'indentazione Python si ferma con l'errore IndentationError.

else: altrimenti

if voto >= 6:
    print("Sufficiente")
else:
    print("Insufficiente, recupera!")

elif: più possibilità

elif sta per "else if", cioè "altrimenti, se". Python controlla le condizioni dall'alto verso il basso ed esegue solo la prima vera.

if voto >= 9:
    print("Ottimo")
elif voto >= 7:
    print("Buono")
elif voto >= 6:
    print("Sufficiente")
else:
    print("Insufficiente")

Condizioni combinate

Con and, or e not (li hai visti nella lezione precedente) puoi controllare più cose insieme:

eta = int(input("Età: "))
if eta >= 14 and eta <= 19:
    print("Hai l'età delle superiori")

Numeri casuali con random

Il modulo random contiene funzioni già pronte per generare valori casuali. Per usarlo si scrive import random all'inizio del programma.

import random

dado = random.randint(1, 6)          # intero tra 1 e 6, estremi compresi
print("Hai tirato:", dado)

colore = random.choice(["rosso", "verde", "blu"])   # sceglie un elemento a caso
print("Colore estratto:", colore)

Esercizi

Esercizio 1 – Pari o dispari. Chiedi un numero e di' se è pari o dispari.

Mostra la soluzione
n = int(input("Scrivi un numero: "))
if n % 2 == 0:
    print(n, "è pari")
else:
    print(n, "è dispari")

Esercizio 2 – Che tempo fa? Chiedi la temperatura e dai un consiglio: sotto i 10 gradi "Prendi il cappotto", da 10 a 24 "Basta una felpa", da 25 in su "Maglietta!".

Mostra la soluzione
temp = float(input("Quanti gradi ci sono? "))
if temp < 10:
    print("Prendi il cappotto")
elif temp < 25:
    print("Basta una felpa")
else:
    print("Maglietta!")

Esercizio 3 – Il più grande. Chiedi due numeri e stampa il maggiore, oppure "Sono uguali".

Mostra la soluzione
a = int(input("Primo numero: "))
b = int(input("Secondo numero: "))
if a > b:
    print("Il maggiore è", a)
elif b > a:
    print("Il maggiore è", b)
else:
    print("Sono uguali")

Esercizio 4 – Indovina il numero (un tentativo). Il computer pensa un numero tra 1 e 10. L'utente prova a indovinarlo: il programma dice se ha vinto, oppure se il numero segreto era più alto o più basso.

Mostra la soluzione
import random

segreto = random.randint(1, 10)
tentativo = int(input("Indovina il numero (1-10): "))

if tentativo == segreto:
    print("Hai indovinato!")
elif tentativo < segreto:
    print("Troppo basso! Era", segreto)
else:
    print("Troppo alto! Era", segreto)

Nella prossima lezione, con i cicli, darai all'utente più tentativi.

Da fare da solo

  1. Chiedi l'età e di' se l'utente può guidare il motorino (da 14 anni) e l'auto (da 18).
  2. Chiedi un voto da 1 a 10: se è fuori da questo intervallo stampa "Voto non valido".
  3. Morra cinese: il computer sceglie a caso tra sasso, carta e forbici con random.choice(), l'utente scrive la sua mossa, il programma dice chi ha vinto.