Booleani
Slide adattate da softpython
Clicca qui per la versione stampabile
Premi esc per l'overview generale
1. Introduzione 1/1
1. Introduzione 1-2
a | b | a and b |
---|---|---|
True | True | True |
True | False | False |
False | True | False |
False | False | False |
a | b | a or b |
---|---|---|
True | True | True |
True | False | True |
False | True | True |
False | False | False |
a | not a |
---|---|
True | False |
False | True |
1. Introduzione 2-1
Altri esercizi
1. Introduzione 2-2
1. Introduzione 2-3
1. Introduzione 2-4
1. Introduzione 2-5
2. De Morgan 1
Formula | Equivalente a |
---|---|
x or y | not(not x and not y) |
x and y | not(not x or not y) |
Queste leggi tornano spesso molto utili, cerca di ricordarle
2. De Morgan 2
Formula | Equivalente a |
---|---|
x or y | not(not x and not y) |
x and y | not(not x or not y) |
3. Conversioni 1
bool(1) -> True
bool(0) -> False
bool(72) -> True
bool(-5) -> True
int(True) -> 1
int(False) -> 0
3. Conversioni 2
4. Ordine di Valutazione 1
4. Ordine di Valutazione 2
4. Ordine di Valutazione 3
4. Ordine di Valutazione 4
5. Errori 1
5. Errori 2
5. Errori 3
6. Comparazione 1
Comparatore | Descrizione |
---|---|
a == b | True se e solo se a = b |
a != b | True se e solo se a ≠ b |
a < b | True se e solo se a < b |
a > b | True se e solo se a > b |
a <= b | True se e solo se a ≤ b |
a >= b | True se e solo se a ≥ b |
Con gli operatori di comparazione puoi costruire espressioni che ritornano un valore booleano
6. Comparazione 2
3 == 5 -> False
3 != 5 -> True
3 != 3 -> False
a,b = 3,5
a == a -> True
a == b -> False
a == b-2 -> True
3 < 5 -> True
5 < 5 -> False
5 <= 5 -> True
6. Comparazione 3
Le comparazioni sono espressioni che producono booleani
⮕ possiamo assegnare il risultato ad una variabile
7. Congiungere Operazioni 1
Dato un paio di quantità x, y = 7, 5
Trova una espressione booleana che ci dice se x e y sono entrambe maggiori di zero
Attenzione! La scrittura x and y > 0 NON è corretta
Perché?
Apparentemente su alcuni input sembra funzionare...
Ma funziona proprio su tutti?
Qualcosa non va...
Python ha implicitamente considerato l'espressione come se fosse con queste parentesi
(x) and (y > 0)
Quindi Python sta rilevando il valore logico dell'intero -3, che essendo diverso da 0 viene considerato True
Se invece provassimo a mettere noi le parentesi: (x and y) > 0?
Ancora non funziona... prova a pensare bene a tutti i passi che Python farà per calcolare l'espressione
Vai avanti per la soluzione!
7. Congiungere Operazioni 2
Sia x che y vengono considerate singole espressioni booleane, quindi Python internamente ridurrà l'espressione nei seguenti passi:
Quindi qual è la soluzione corretta? x > 0 and y > 0
7. Congiungere Operazioni 3
7. Congiungere Operazioni 4
8. Esercizi 1
Il dottor Angelo possiede un prato di area quadrata di lato d=100 metri che viene accudito ogni settimana da Jobe il giardiniere. Jobe passa sempre meticolosomente il tagliarbe su tutta l’area del prato, ma un giorno il dottore decide di rendere più elaborato il giardino e chiede a Jobe di tagliare solo alcune zone. Purtroppo, Jobe non è molto forte in geometria e per agevolarlo il dottore inventa un sensore in grado di rilevare la posizione, collegato ad una spia che si illumina solo quando il tagliaerbe va azionato.
Scrivi un’espressione che date due coordinate x,y, produca True quando il tagliaerbe è nella zona verde chiaro, e False altrimenti.
Inserisci la tua espressione, usando x, y e d
8. Esercizi 2
Il dottor Angelo adesso richiede a Jobe di tagliare più zone…
Inserisci la tua espressione, usando x, y e d.
8. Esercizi 3
Il dottor Angelo si è stufato di giardini squadrati, e vuole dividere il prato in diagonale.
Inserisci la tua espressione, usando x e y
8. Esercizi 4
Altro giorno, altra diagonale per Jobe...
Inserisci la tua espressione, usando x, y e d
8. Esercizi 5
Durante i tuoi studi scopri una mappa di un antico tempio, ove sono custoditi mirabolanti tesori. Il tempio misura d=80 metri di lato ed è un labirinto di corridoi. Sai per certo che alcune aree mostrate in rosso contengono pavimento fragile sotto il quale scorrono fiumi di lava incandescente: per avvertirti del pericolo mentre cammini, ti costruisci un detector che emetterà un suono quando sarai in zone rosse.
Scrivi un’espressione booleana che restituisca True se sei in una zona di pericolo, False altrimenti.
Inserisci la tua espressione, usando x, y e d
8. Esercizi 6
Un idraulico italiano vede 3 tubi di altezza rispettivamente t1, t2, t3, sopra cui vi sono rispettivamente sono 10, 20, 30 monete. Esaltato, spicca un balzo di altezza h.
Scrivi del codice che stampa quante monete raccoglie (10, 20 o 30).
Inserisci la tua espressione, usando h, t1, t2, t3
8. Esercizi 7
La lancetta dell’orologio sulla prima Torre di Gradius ha compiuto finora una rotazione di n gradi. Scrivi del codice che mostra True se la lancetta si trova nelle zone evidenziate, False altrimenti.
Ci sono due modi di risolvere il problema:
Inserisci la tua espressione, usando n.
8. Esercizi 8
Le lancette dell’orologio sulla seconda Torre di Gradius hanno compiuto finora una rotazione rispettivamente di n e m gradi.
Scrivi del codice che mostri True se entrambe le lancette si trovano nella stessa zona tra quelle evidenziate, False altrimenti.
Inserisci la tua soluzione, usando n e m