Basi 4 - Challenges
Scarica zip esercizi
Proponiamo ora degli esercizi senza soluzione, accetti la sfida? Prova ad eseguirli sia in Jupyter che in un editor di testo come Spyder per familiarizzarti con entrambi gli ambienti.
Sfida - quali booleani 1?
✪ Trova la riga che assegnando valori a x
e y
faccia in modo che la stampa stampi True
. Esiste una sola combinazione o più di una?
[1]:
x = False; y = False
#x = False; y = True
#x = True; y = False
#x = True; y = True
print(x and y)
False
Sfida - quali booleani 2?
✪ Trova la riga che assegnando valori a x
e y
faccia in modo che la stampa stampi True
. Esiste una sola combinazione o più di una?
[2]:
x = False; y = False; z = False
#x = False; y = True; z = False
#x = True; y = False; z = False
#x = True; y = True; z = False
#x = False; y = False; z = True
#x = False; y = True; z = True
#x = True; y = False; z = True
#x = True; y =True; z =True
print((x or y) and (not x and z))
False
Sfida - Aereoporto
✪✪ Finalmente decidi di prenderti una vacanza e vai all’aereoporto, ma già sai che dovrai fare varie code. Fortunatamente hai solo il bagaglio a mano, quindi ti rechi subito ai controlli di sicurezza, dove puoi scegliere tra tre file di sic1
, sic2
e sic3
persone. Ogni persona in media ci mette 4 minuti ad essere esaminata, te incluso, e ovviamente scegli la fila più corta. Dopodichè vai al gate, dove trovi due file di ga1
e ga2
persone, e sai che ogni persona te incluso in
media ci mette 20 secondi a passare: di nuovo scegli la fila più corta. Fortunatamente l’aereo è prossimo al gate quindi puoi subito scegliere se salire dalla fila in testa all’aereo con bo1
persone o dalla fila in coda all’aereo con bo2
persone. Per salire ogni passeggero te incluso in media ci mette 30 secondi, e scegli la coda più corta.
Scrivi del codice per calcolare quanto tempo ci impieghi in totale ad entrare nell’aereo, mostrandolo in minuti e secondi
Esempio - dati:
sic1,sic2,sic3,ga1,ga2,bo1,bo2 = 4,5,8,5,2,7,6
il tuo codice deve stampare:
24 minuti e 30 secondi
[3]:
sic1,sic2,sic3,ga1,ga2,bo1,bo2 = 4,5,8,5,2,7,6 # 24 minuti e 30 secondi
#sic1,sic2,sic3,ga1,ga2,bo1,bo2 = 9,7,1,3,5,2,9 # 10 minuti e 50 secondi
# scrivi qui
24 minuti e 30 secondi
Sfida - Teoria del boccino
Vengono tirate delle bocce, con l’obiettivo di avvicinarsi il più possibile al boccino rosso.
Scrivi del codice che mostra
True
se una certa boccia è dentro la fascia scura,False
altrimentiScrivi del codice che mostra
True
se una certa boccia è dentro il cerchio,False
altrimenti (SUGGERIMENTO: avrai bisogno di calcolare la distanza dal boccino conmath.sqrt
…)
NON usare l’istruzione
if
[4]:
import math
h = 30
w = 20
r = 5
x=17; y=25 # a fascia: False cerchio: False
#x=19; y=36 # b fascia: True cerchio: False
#x=8; y=36 # c fascia: True cerchio: True
#x=16; y=32 # d fascia: True cerchio: False
#x=7; y=41 # e fascia: False cerchio: False
#x=12;y=33 # f fascia: True cerchio: True
# scrivi qui
x= 17 y= 25
Raggiunta la fascia? False
Entro il cerchio? False
Sfida - Space mining
✪✪ Un robot è atterrato sul pianeta Zorbon 5, con il compito di trivellare il terreno per estrarre il prezioso metallo Tiberium. La zona di ricerca ha lato d
ed è divisa in settori, con l’origine (0,0) al centro. I colori nella mappa rappresentano la densità di Tiberium:
rosso: 3
arancione: 2
giallo: 1
Il robot conosce le proprie coordinate x
e y
: scrivi del codice che stampa la densità di Tiberium corrispondente alla posizione del robot.
NON usare l’istruzione
if
SUGGERIMENTO: usa la funzione
abs(x)
per calcolare il valore assoluto
[5]:
d = 30
x,y = 0, 0 # 3
#x,y = 2, 2 # 3
#x,y = -2, -2 # 3
#x,y = 7, 0 # 2
#x,y = -7, 0 # 2
#x,y = 0, 8 # 2
#x,y = -12, 0 # 2
#x,y = 2, 13 # 2
#x,y = 2, 13 # 2
#x,y = 13, 13 # 1
#x,y = 14, -12 # 1
#x,y = -11, -13 # 1
#x,y = -10, 11 # 1
# scrivi qui
[5]:
3
Sfida - La fabbrica infinita
✪✪ Nel regno di Steamland esiste una fabbrica che si dice si estenda all’infinito.
La fabbrica è popolata da robot che in prossimità degli incroci dei corridoi grigio chiari e gialli hanno il compito di azionare i complessi meccanismi a vapore che governano la fabbrica. Ogni robot conosce la sua posizione x
, y
. L’origine è in basso a sinistra e ogni corridoio è largo m
.
Scrivi del codice che stampa True
quando i robot sono negli incroci, e False
altrimenti.
NON usare l’istruzione
if
Il tuo codice deve funzionare anche per qualsiasi valore di
x
ey
, anche enormi
[6]:
m = 10
x,y = 2.5 * m, 0.5 * m # True
#x,y = 2.5 * m, 1.5 * m # False
#x,y = 0.5 * m, 0.5 * m # False
#x,y = 5.5 * m, 0.5 * m # True
#x,y = 5.5 * m, 2.5 * m # True
#x,y = 7.0 * m, 4.5 * m # False
#x,y = 5.5 * m, 2.5 * m # True
#x,y = 299.5 * m, 200.5 * m # True
#x,y = 300.5 * m, 200.5 * m # False
# scrivi qui
[6]:
True
Sfida - L’Anello di Luce
✪✪✪ Il malvagio stregone Tenebron ha scagliato una maledizione contro il tuo regno, e Re Tribolatus corre trafelato nel tuo studio alchemico implorandoti di contrastare queste forze oscure. Per fortuna, leggendo i tuoi grimori scopri il rituale del RendeRing che è in grado di erigere un anello di forza intorno al regno. Il sortilegio prescrive di tracciare un anello con un’intensità che varia da 0.0
(buio) fino all’intensità massima 5.0
(bianco). L’intensità aumenta linearmente fino a
che si raggiunge il raggio r=5.0
, dopodichè descresce linearmente fino a raggiungere lo 0.0
Data la posizione x
,y
, scrivi del codice che calcola l’intensità di luce.
NON usare l’istruzione
if
NOTA: l’intensità non può mai essere negativa
SUGGERIMENTO: usa
math.sqrt
[7]:
import math
r = 5.0
x,y = 0,0 # 0.0
#x,y = 0,3 # 3.0
#x,y = -4,0 # 4.0
#x,y = 3,-3 # 4.242640687119285
#x,y = 3,4 # 5.0
#x,y = 4,-3 # 5.0
#x,y = -4,3 # 5.0
#x,y = 6,0 # 4.0
#x,y = 0,7 # 3.0
#x,y = 0,-8 # 2.0
#x,y = 10,0 # 0.0
#x,y = -6,7 # 0.7804555427071129
#x,y = -7,9 # 0.0 mai negativa ...
# scrivi qui
[7]:
0.0
[ ]: