Liste 5 - Challenges

Scarica zip esercizi

Naviga file online

Proponiamo ora degli esercizi senza soluzione, accetti la sfida?

Sfida - iniziamo!

1.1 verdure

✪ Che cosa viene stampato? Come mai?

[1]:

la = ['carote','peperoni','melanzane']
x = la.append('z')
print(x)
print(la)

1.2 scoiattoli

✪ Che cosa viene stampato? Come facciamo a far si che in lb venga salvata una copia di la che non viene poi riordinata?

[2]:


la = ['scoiattolo nano','scoiattolo volante','scoiattolo grigio']
lb = la
la.sort()
print(la)
print(lb)

1.3 alberi

✪ E in questo caso? Come facciamo a far modificare solo lb?

[3]:

la = ['pino marittimo','abete rosso','larice','sequoia']
lb = la
lb.sort()
print(la)
print(lb)

1.4 ascanio

✪ La faccenda cambia se usiamo reverse() invece di sort()? Perchè?

[4]:

la = ['giulia','ascanio','ernesto','camilla']
lb = la
la.reverse()
print(la)
print(lb)

1.5 ultimo

✪ Svincoliamo pure qui il contenuto di la da quello di lb. Cerca di usare un altro modo

[5]:

la = ['ultimo','last','final','letzte','sist']
lb = la
lb.reverse()
print(la)
print(lb)

1.6 colori

✪ Ci interessa mettere da parte solo gli ultimi colori. Come mai non vengono riordinati al contrario?

[6]:

la = ['rosso pomodoro','arancione','ambra','rosa-arancio','rosso mattone','lillà']
lb = la[2:10]
la.reverse()
print(la)
print(lb)

1.7 officina

✪ Abbiamo degli attrezzi maschili e degli attrezzi femminili (grammaticalmente parlando). Riuniamoli tutti. Come mai se li invertiamo le liste di partenza non cambiano?

[7]:

la = ['cacciavite','martello','mattarello']
lb = ['forbice','pinza','impastatrice']
lc = la + lb
lc.reverse()
print(la)
print(lb)
print(lc)

Sfida - Cantina

✪✪ Requisiti: liste

Data una stringa parola, creare una LISTA che contenga la parola seguita da sè stessa rovesciata

  • NOTA: l’ultima lettera NON deve essere duplicata

Esempio - dato:

parola = "cantina"

deve stampare:

['c', 'a', 'n', 't', 'i', 'n', 'a', 'n', 'i', 't', 'n', 'a', 'c']
[8]:

parola = "cantina"   #  ['c', 'a', 'n', 't', 'i', 'n', 'a', 'n', 'i', 't', 'n', 'a', 'c']
#parola = "armadio"  #  ['a', 'r', 'm', 'a', 'd', 'i', 'o', 'i', 'd', 'a', 'm', 'r', 'a']

# scrivi qui


Sfida - Rupert e Mortimer

✪✪ Requisiti: stringhe, liste

I riccastri Rupert e Mortimer hanno alle dipendenze due faccendieri dalla dubbia reputazione, e non vogliono risulti traccia della loro presenza. Ogni ingresso e uscita dal palazzo di Rupert e Mortimer viene registrato dal guardiano, il quale però è stato appena assunto e sbadatamente ha segnato nel registro anche i nomi dei faccendieri. Scrivi del codice che MODIFICA la lista eliminando i loro nomi.

  • I faccendieri si muovono sempre in coppia e oggi sono entrati e usciti esattamente 1 volta

  • Il tuo codice deve funzionare con qualsiasi lista avente 1 ingresso e uscita

  • NON scrivere costanti come "sonny" / "Sonny" nella soluzione

  • NON usare cicli nè if

Esempio - dati:

faccendiere1, faccendiere2 = 'Sonny', 'Lenny'
registro = ['mortimer','rupert', 'rupert','mortimer','sonny e lenny', 'mortimer','rupert','lenny e sonny',
      'mortimer', 'mortimer e rupert', 'rupert e mortimer']

dopo il tuo codice, deve risultare:

>>> print(registro)
['mortimer', 'rupert', 'rupert', 'mortimer', 'mortimer', 'rupert', 'mortimer', 'mortimer e rupert', 'rupert e mortimer']
[9]:

faccendiere1, faccendiere2 = 'Sonny', 'Lenny'
registro = ['mortimer','rupert', 'rupert','mortimer','sonny e lenny', 'mortimer','rupert','lenny e sonny',
      'mortimer', 'mortimer e rupert', 'rupert e mortimer']

#faccendiere1, faccendiere2 = 'Joey', 'Vincent'
#registro = ['rupert','rupert', 'mortimer e rupert','mortimer', 'mortimer', 'vincent e joey', 'rupert','mortimer', 'joey e vincent','mortimer', 'mortimer e rupert', 'rupert e mortimer']

# scrivi qui


Sfida - La ricetta della nonna

✪✪ Requisiti: stringhe, liste, for, if

La nonna ci ha dato la sua miracolosa ricetta della pasta olive acciughe e capperi.

Dobbiamo andare a comprare gli ingredienti e dobbiamo capire quanti capperi, olive e pepe comprare. Ovviamente di pasta ne abbiamo già in quantità, quindi non ci interessa.

Per comprarli, dobbiamo sapere quanti prodotti comprare di ciascun tipo.

  • ATTENZIONE: la nonna ha la sua età ed è sempre stata pasticciona e quindi la ricetta è scritta in modo non consistente, e le parole vanno normalizzate

  • SUGGERIMENTO: trasforma prima la stringa in una lista con il metodo .split

Esempio - dati:

ricetta = "oliva\t, pepe,cappero ,detersivo, cappero, peperone, acciuga ,oliva , pepe\t, cappero , oliva,pasta\n"

stampa:

Servono:
   3 oliva
   2 pepe
   3 cappero
[10]:


#          0        1    2        3          4        5         6        7       8       9         10    11
ricetta = "oliva\t, pepe,cappero ,detersivo, cappero, peperone, acciuga ,oliva , pepe\t, cappero , oliva,pasta\n"
num_oliva   = 0
num_pepe = 0
num_cappero = 0

# scrivi qui


Sfida - Gioco dell’Ordine

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

Le regole del gioco dell’Ordine sono le seguenti: ci sono sul tavolo 24 gettoni, ognuno con una lettera diversa dell’alfabeto scritta sopra. Due giocatori si sfidano raccogliendo a caso un gettone e quando hanno cinque gettoni inizia la battaglia. Durante la battaglia ciascun giocatore gioca la pedina con la lettera più alta che possiede. Vince al gioco chi è il primo giocatore a posizionare tutte le pedine.

  1. In questo esercizio abbiamo in input le due liste di pedine. Dobbiamo aggiungere un etichetta che ci dice per ciascuna pedina a quale giocatore appartiene. Successivamente calcoliamo qual’è l’ordine delle giocate.

  2. Dopo aver trovato l’ordine delle giocate, prova anche a stampare quale giocatore ha vinto la battaglia!

Esempio - dati:

giocatore1 = ["h", "b", "f", "d", "x"]
giocatore2 = ["e", "c", "g", "a", "z"]

dopo il tuo codice, deve stampare:

['z_2', 'x_1', 'h_1', 'g_2', 'f_1', 'e_2', 'd_1', 'c_2', 'b_1', 'a_2']
[11]:

giocatore1 = ["h", "b", "f", "a", "x"]
giocatore2 = ["e", "c", "g", "d", "z"]

# scrivi qui


Sfida - Monte ordinato

✪✪ Requisiti: liste, sort, for

Data una lista monte con \(n\) numeri (supponi che \(n\) sia pari), scrivi del codice che MODIFICA monte, ordinando solo i numeri nella prima metà in ordine crescente e poi ordinando solo i numeri nella seconda metà in ordine inverso

SUGGERIMENTO: sort() funziona solo su tutta la lista, per ordinarne solo metà dovrai creare altre liste dove mettere i valori da ordinare, e poi copiarli nella lista originale

Esempio - data:

monte = [90,40,50,20,60, 7, 3, 4, 9, 8]

Dopo il tuo codice, scrivendo print(monte) deve risultare:

>>> print(monte)
[20, 40, 50, 60, 90, 9, 8, 7, 4, 3]
[12]:

monte = [90,40,50,20,60, 7, 3, 4, 9, 8]

# scrivi qui


[ ]: