If 1: introduzione¶

Riferimenti: SoftPython - liste 1

  • visualizza al meglio in
  • versione stampabile: clicca qua
  • per navigare nelle slide: premere Esc


Summer School Data Science 2023 - Modulo 1 informatica: Moodle

Docente: David Leoni david.leoni@unitn.it

Esercitatore: Luca Bosotti luca.bosotti@studenti.unitn.it

Controllo di flusso - if¶

Riferimenti: SoftPython - if

Come eseguire codice solo se una condizione è vera?

In [2]:
fatto_colazione, lavato_denti = True, True

if fatto_colazione and lavato_denti:
    print("fatto tutto !")
    print("posso uscire di casa.")
    
print("Fine.")    
fatto tutto !
posso uscire di casa.
Fine.

Sintassi:

if ESPRESSIONE_BOOLEANA:
    BLOCCO COMANDI

Cosa fare se la condizione è falsa?

In [3]:
fatto_colazione, lavato_denti = True, False

if fatto_colazione and lavato_denti:
    print("fatto tutto !")
    print("posso uscire di casa.")
else:
    print("NON posso uscire di casa.")

print("Fine.")
NON posso uscire di casa.
Fine.
if ESPRESSIONE_BOOLEANA:
    BLOCCO COMANDI
else:
    ALTRO BLOCCO COMANDI

if: Attenzione¶

RICORDATI I DUE PUNTI : ALLA FINE DELLA LINEA DELL'IF !!!

Per indentare, usa SEMPRE 4 spazi bianchi

Sequenze di 2 soli spazi per quanto consentite non sono raccomandate.

Il comportamento di TAB dipende dal tuo editor

A seconda dell'editor che usi, premendo TAB potresti ottenere:

  • una sequenza di spazi bianchi (4 in Jupyter)
  • ...oppure un carattere speciale di tabulazione (da evitare)!

Esercizio - qualche test¶

✪ prova a scrivere in Python Tutor il programma di prima. Prova a cambiare i valori da True a False e guarda che succede.

NON fare copia e incolla, scrivi a mano!

Assicurati di provare tutti i casi:

  • True True
  • True False
  • False True
  • False False

ATTENZIONE: Ricordati i : alla fine della riga con if !!!!

In [4]:
fatto_colazione, lavato_denti = True, False

if fatto_colazione and lavato_denti:
    print("fatto tutto !")
    print("posso uscire di casa.")
else:
    print("NON posso uscire di casa.")

print("Fine.")

valori logici¶

In Python, gli oggetti 'vuoti' hanno valore logico False:

  • numero 0, oggetto None, la stringa vuota "", lista vuota [], ...

Tutto ciò che non è 'vuoto' è considerato True:

if ['Che', 'tempo', 'farà', 'domani?']:    
    print("Sole!")
else:
    print("Pioggia")
Sole!

Blocchi comandi¶

In [5]:
if 2 != 2:
    'PERBACCO'
else:
    'PERGIOVE'

<non stampa nulla!>

In [6]:
if 2 != 2:
    print('PERBACCO')
else:
    print('PERGIOVE')

PERGIOVE

if annidati¶

Si può anche mettere un if dentro l'altro (nested if).

Esempio (funziona esattamente come il precedente):

In [7]:
fatto_colazione, lavato_denti = True,True

if fatto_colazione:
    if lavato_denti:                        # NOTA: Questo blocco è indentato
        print("fatto tutto !")              #       rispetto all'if esterno
        print("posso uscire di casa!")      #
    else:
        print("NON posso uscire di casa")
else:
    print("NON posso uscire di casa")
fatto tutto !
posso uscire di casa!

Esercizio: tutticasi¶

✪ Modifica il programma di prima in Python Tutor per riportare lo stato delle varie azioni compiute. Elenchiamo qui i possibili casi e i risultati attesi:

True False:
ho fatto colazione
non ho lavato i denti
NON posso uscire di casa
False True
False False:
non ho fatto colazione
NON posso uscire di casa
True True:
ho fatto colazione
ho lavato i denti
fatto tutto !
posso uscire di casa!
In [8]:
fatto_colazione, lavato_denti = True,True
if fatto_colazione:
    if lavato_denti:                        
        print("fatto tutto !")              
        print("posso uscire di casa!")      
    else:
        print("NON posso uscire di casa")
else:
    print("NON posso uscire di casa")

Esercizio: Latte intero/scremato¶

✪✪ Prova a fare un programma in Python Tutor che ti dice se puoi uscire di casa solo se hai fatto colazione (per cui devi avere almeno un tipo di latte) e lavato i denti

In [9]:
ho_latte_intero = False
ho_latte_scremato = True
lavato_denti = False


# scrivi qui

Esercizio: nuotare¶

✪✪ prova a fare un programma in Python Tutor che ti dice se puoi nuotare se NON hai fatto colazione E hai il salvagente

Assicurati di provare tutti i casi:

  • True True
  • True False
  • False True
  • False False
In [10]:
hai_salvagente = True
fatto_colazione = True

# scrivi qui

if in cascata: elif 1/2¶

In [11]:
caramelle = 3

if caramelle > 10:
    print('tante caramelle!')
elif caramelle > 5:
    print('abbastanza caramelle!')
elif caramelle > 0:
    print('poche caramelle!')    
else:
    print('Non ci sono caramelle!')
poche caramelle!

if in cascata: elif 2/2¶

In [12]:
caramelle = 0

if caramelle > 10:
    print('tante caramelle!')
elif caramelle > 5:
    print('abbastanza caramelle!')
elif caramelle > 0:
    print('poche caramelle!')    
else:
    print('Non ci sono caramelle!')
Non ci sono caramelle!

Operatore ternario¶

Se abbiamo fatto tanta spesa, ci faranno uno sconto, altrimenti no.

In [13]:
# con if normale...
spesa = 200
sconto = 0

if spesa > 100:
    sconto = 0.1
else:
    sconto = 0    # necessario?

print("spesa:", spesa, "  sconto:", sconto)
spesa: 200   sconto: 0.1

Più brevemente...¶

VARIABILE = VALORE if CONDIZIONE else ALTRO_VALORE

In [14]:
spesa = 200
sconto = 0.1 if spesa > 100 else 0
print("spesa:", spesa, "  sconto:", sconto)
spesa: 200   sconto: 0.1
In [15]: