Controllo di flusso 4 Challenges -

Scarica zip esercizi

Naviga file online

Proponiamo ora degli esercizi senza soluzione, accetti la sfida?

Sfida - Alla corte di re Artù

✪ Alla corte di re Artu’ ci sono tantissimi veri cavalieri. Lancillotto, Rinaldo, etc… E’ perfino arrivato Orlando in visita da oltremanica.Però non tutti sono convinti del fatto che Ginevra, Merlino e Morgana siano veri cavalieri.

Viene ideato un test a cui vengono sottoposti questi tre e in base a se riusciranno nell’impresa verranno dichiarati. Per lo svolgimento del test vengono portati in una parte tranquilla del castello e, ognuno in una stanza diversa, dovrà rispondere alla domanda:

Un vero cavaliere protegge i deboli e gli oppressi?

Noi siamo stati incaricati di correre nella sala del banchetto dove Artu’ passeggia nervoso e di comunicare l’esito del test.

Scrivi del codice che:

  • SE TUTTI e tre hanno passato il test stampa "Sono tutti veri cavalieri"

  • SE ALMENO uno di loro ha passato il test, stampa "C'è almeno un vero cavaliere"

  • SE invece NESSUNO di loro ha passato il test, stampa "Non c'è nessun vero cavaliere")

[1]:
# Assegnazioni di esempio (NON MODIFICARE!)
# Scommentarne solo una alla volta per provare se funziona la tua soluzione

ginevra = False; merlino = False; morgana = False
#ginevra = False; merlino = False; morgana = True
#ginevra = False; merlino = True; morgana = False
#ginevra = False; merlino = True; morgana = True
#ginevra = True; merlino = False; morgana = False
#ginevra = True; merlino = False; morgana = True
#ginevra = True; merlino = True; morgana = False
#ginevra = True; merlino = True; morgana = True



# scrivi qui


Non c'è nessun vero cavaliere

Sfida - Ascensore a due piani

✪ Requisiti: if annidati

Dobbiamo installare l’ascensore in un palazzo di due piani. Esistono il piano 'terra' e il piano 'rialzato'. Il nostro compito è quello di programmare la centralina dell’ascensore, affinche mostri sul display al piano dell’utente dove si trova l’ascensore

Gli input che abbiamo sono:

  • piano_utente, il piano a cui l’utente ha appena chiamato l’ascensore

  • piano_ascensore, il piano a cui si trova l’ascensore

Se l’ascensore si trova allo stesso piano dell’utente si dovranno aprire le porte, e stamperemo sul display l’output 'DING!' per simulare il suono che farebbe un ascensore che è appena arrivato.

L’output della centralina deve essere l’ordine di azioni da effettuare per portare l’ascensore al piano dell’utente.

Esempio 1 - dati:

piano_utente = 'terra';
piano_ascensore = 'rialzato'

stampa:

rialzato
terra
DING!

perchè l’utente mentre aspetta al piano terra che arrivi l’ascensore vedrà sul display la scritta rialzato, poi terra e infine sentirà il suono DING! (non devi far produrre nessun suono a python, semplicemente stampa la scritta!)

Esempio 2 - dati:

piano_utente = 'rialzato'
piano_ascensore = 'rialzato'

stampa:

DING!

perchè l’ascensore è allo stesso piano dell’utente e produce direttamente il suono per invitare l’utente ad entrare nell’ascensore.

[2]:

piano_utente = 'terra'; piano_ascensore = 'rialzato'     # rialzato, terra, DING!
#piano_utente = 'rialzato'; piano_ascensore = 'terra'    # terra, rialzato, DING!
#piano_utente = 'terra'; piano_ascensore = 'terra'       # DING!
#piano_utente = 'rialzato'; piano_ascensore = 'rialzato' # DING!

# scrivi qui


[3]:
list(range(8,2,-1))
[3]:
[8, 7, 6, 5, 4, 3]

Sfida - ascensore a 10 piani

✪✪ Requisiti: if annidati, cicli for

Questa sfida è come la precedente, ma in questo caso le posizioni dell’ascensore e dell’utente sono memorizzate come interi da 0 a 10.

Esempio - dati:

piano_utente = 3; piano_ascensore = 7

STAMPA:

7
6
5
4
3
DING!
[4]:

piano_utente = 3; piano_ascensore = 7    # 7,6,5,4,3,DING!
#piano_utente = 5; piano_ascensore = 0   # 0,1,2,3,4,5,DING!
#piano_utente = 3; piano_ascensore = 3   # DING!
#piano_utente = 4; piano_ascensore = 6   # 6,5,4,DING!
#piano_utente = 6; piano_ascensore = 4   # 4,5,6,DING!

# scrivi qui


Sfida - testo storto

✪✪ Requisiti: stringhe, for, if

Dato un testo di caratteri con diversa capitalizzazione, metti nella variabile tradotto il testo con la capitalizzazione invertita e poi STAMPALO

  • SUGGERIMENTO: per verificare se un carattere è minuscolo, usa il metodo .islower()

Esempio - dato:

testo = "CiAo QuEsTo E' uN TeStO sToRto"

dopo il tuo codice dovrebbe risultare:

>>> print(tradotto)
cIaO qUeStO e' Un tEsTo StOrTO
[5]:

testo = "CiAo QuEsTo E' uN TeStO sToRto"
tradotto = ''

# scrivi qui


Sfida - Gita scolastica

✪✪✪ Requisiti: if, for, range, liste, stringhe

Siamo professori nel rinomato liceo della città. E’ giunto il periodo dell’anno in cui si devono organizzare le gite scolastiche. Quest’anno avremo l’incredibile opportunità di dormire nelle stanze di un vero castello medioevale!

Abbiamo quindi una lista di studenti sia maschi che femmine che parteciperanno alla gita e siccome durerà qualche giorno dobbiamo predisporre le stanze per l’albergo.

  • per i maschi abbiamo a disposizione stanze da 3 letti.

  • per le femmine abbiamo stanze da 3 letti

Assegneremo le persone nelle stanze in base all’ORDINE ALFABETICO.

  • i primi 3 maschi andranno nella prima stanza

  • i maschi dal quarto al sesto andranno nella seconda, etc

  • le prime 3 femmine, prima stanza

  • dalla 4 alla 6, seconda stanza, etc

SUGGERIMENTO: se abbiamo 14 studenti maschi da dividere in stanze da 3 vengono: 4 stanze da 3 più una da 2. Vale a dire, 14 // 3  = 4 (divisione intera, se non si mettesse // verrebbe 4.666666666666667)

Alla fine, l’ultima stanza potrebbe essere incompleta ma ci va bene così.

CONSEGNA:

1.a) Dividere la lista in due NUOVE liste di maschi e femmine

1.b) Togliere il prefisso "M_" e "F_" dai nomi

  1. Stampare (non serve memorizzare!) le stanze dei maschi

  2. Stampare (non serve memorizzare!) le stanze delle femmine

Esempio - dati:

[6]:
# Qui abbiamo una classe molto piccola, ma cerchiamo lo stesso di fare le stanze
studenti = ['M_Alessandro', 'F_Alessia', 'F_Alice', 'M_Andrea', 'F_Anna', 'F_Arianna',
            'F_Aurora', 'F_Beatrice', 'F_Bianca', 'F_Camilla', 'M_Federico', 'M_Francesco']

Il tuo codice dovrebbe STAMPARE:

1.a)  maschi = ['M_Alessandro', 'M_Andrea', 'M_Federico', 'M_Francesco']
      femmine = ['F_Alessia', 'F_Alice', 'F_Anna', 'F_Arianna', 'F_Aurora',
                 'F_Beatrice', 'F_Bianca', 'F_Camilla']

1.b)  maschi = ['Alessandro', 'Andrea', 'Federico', 'Francesco']
      femmine = ['Alessia', 'Alice', 'Anna', 'Arianna', 'Aurora', 'Beatrice',
                 'Bianca', 'Camilla']

2)    Stanza maschi 1: ['Alessandro', 'Andrea', 'Federico']
      Stanza maschi 2: ['Francesco']

3)    Stanza femmine 1: ['Alessia', 'Alice', 'Anna']
      Stanza femmine 2: ['Arianna', 'Aurora', 'Beatrice']
      Stanza femmine 3: ['Bianca', 'Camilla']
[7]:

studenti = ['M_Alessandro', 'F_Alessia', 'F_Alice', 'M_Andrea', 'F_Anna', 'F_Arianna', 'F_Aurora',
            'F_Beatrice', 'F_Bianca', 'F_Camilla', 'F_Chiara', 'M_Federico', 'M_Francesco', 'M_Gabriele',
            'F_Gaia', 'F_Ginevra', 'F_Giorgia', 'F_Giulia', 'M_Giuseppe', 'F_Greta', 'M_Leonardo', 'M_Lorenzo',
            'F_Ludovica', 'M_Matteo', 'M_Mattia', 'M_Merlino','F_Nicole', 'M_Nicolo', 'F_Noemi', 'M_Riccardo',
            'F_Sara', 'F_Sofia', 'M_Tommaso', 'F_Vittoria']

# scrivi qui:


Sfida - Se magna

✪✪ Requisiti: if, while

C’è una festa post-esame, e siamo affamati. Bisogna servire dei panini con hamburger. Abbiamo un certo numero di panini e dei burgers, non necessariamente nella stessa quantità. Dovremo servire panini fino a quando o il pane o i burger finiscono. Alla fine avviseremo se sono avanzati ingredienti.

Scrivi del codice che STAMPA la procedura

Esempio:

burgers,panini = 5, 3

STAMPA:

Servito un panino: 2 panini rimanenti, 4 burger rimanenti
Servito un panino: 1 panini rimanenti, 3 burger rimanenti
Servito un panino: 0 panini rimanenti, 2 burger rimanenti
Avanzano 2 burger
[8]:

burgers,panini = 5, 3   # ... avanzeranno 2 burger
#burgers,panini = 3,9   # ... avanzeranno 6 panini
#burgers,panini = 4,4   # ... alla fine stampa 'credenza vuota'

# scrivi qui


Sfida - Il Dungeon

✪✪✪ Requisiti: while, if, liste

Un cavaliere si inoltra in una caverna alla ricerca di oggetti preziosi. Appena trova quello che sta cercando, esulta e torna indietro.

Rappresentiamo la caverna come una lista di stringhe. L’oggetto da cercare è indicato nella variabile cerco.

Scrivi del codice che date le voci STAMPA il percorso.

  • NON USARE break !!

  • NON USARE il metodo .find !!

Esempio 1 - dati:

cerco = 'il tesoro'
caverna = ['un masso','una trappola','delle spade',
           'il tesoro','una ragnatela', 'un boleto delle tombe']

STAMPA:

Entro
Ho trovato un masso
Ho trovato una trappola
Ho trovato delle spade
Che fortuna! Ho trovato il tesoro
Torno indietro!
Ho trovato delle spade
Ho trovato una trappola
Ho trovato un masso
Esco

Esempio 2:

Una lista può anche non contenere l’oggetto cercato, in tal caso bisognerà mostrare un messaggio apposito:

cerco = 'il talismano del potere'
caverna = ['una trappola','un boleto delle tombe','una ragnatela']

STAMPA:

Entro
Ho trovato una trappola
Ho trovato un boleto delle tombe
Ho trovato una ragnatela
Purtroppo non c'è nessun tesoro!
Torno indietro!
Ho trovato una ragnatela
Ho trovato un boleto delle tombe
Ho trovato una trappola
Esco
[9]:

cerco = 'il tesoro'
caverna = ['un masso','una trappola','delle spade','il tesoro','una ragnatela', 'un boleto delle tombe']

cerco = 'il talismano del potere'
caverna = ['una trappola','un boleto delle tombe','una ragnatela']

# scrivi qui