Cicli for 5 - iterare insiemi
Scarica zip esercizi
Dato un insieme, possiamo esaminare la sequenza di elementi con un ciclo for
.
Ordine di iterazione
ATTENZIONE: l’ordine di iterazione negli insiemi non è prevedibile !
Per capire meglio il perchè, puoi rivedere la guida sugli insiemi
[2]:
for elemento in {'questo', 'è', 'un', 'insieme'}:
print(elemento)
è
un
questo
insieme
Domande - insiemi
Guarda i seguenti frammenti di codice, e per ciascuno cerca di indovinare quale risultato produce (o se da errore):
s = set() s.add('pan') s.add('de') s.add('mo') s.add('nio') print(s)
for x in {'a',12,'34',56,34}[2:4]: print(x)
for x in set(['a']) | set(['b']): print(x)
for x in set(['a']) & set(['b']): print(x)
Esercizio - Avvitati
La multinazionale ToxiCorp produce elettrodomestici che sono progetti di proposito per rompersi dopo due anni d’uso. Quando questo succede, i loro componenti richiedono strumenti molto speciali che solo la corporazione possiede. I clienti sono forzati a recarsi presso centri di riparazione affiliati a ToxiCorp, e pagare soldi extra. Nel tempo la corporazione ha sviluppato così tante forme speciali per le viti che adesso i suoi centri hanno dei problemi a gestire tutti i cacciaviti, perciò ti chiedono di sviluppare un software per indicare alle officine quali cacciaviti mancano. Lo trovi questionabile, ma pagano bene, perciò accetti.
Ogni vite ha una forma a stella, ed è definita da un raggio e un certo numero di punte. Possiamo rappresentarla come una lista di due elementi, per es. [3,7]
dove 3
è il raggio e 7
il numero di punte. Ogni cacciavite è anche definito come una lista di due elementi con i valori del raggio e le punte che può avvitare.
Un officina ha nel magazzino una lista di viti e una lista di cacciaviti: scrivi del codice che stampa una lista ordinata di cacciaviti che mancano per poter gestire tutti i tipi di vite.
Esempio - dati:
viti = [[5,8], [7,4], [2,9], [8,2], [7,4],[2,6], [8,3], [2,6], [8,3], [8,3], [5,8]]
cacciaviti = [[8,2], [1,3], [5,8], [2,5], [1,3]]
Il tuo codice deve stampare:
Cacciaviti richiesti: [(2, 6), (2, 9), (7, 4), (8, 3)]
Nota che le liste di input possono avere duplicati
NON usare metodi di liste o operatori che effettuano ricerche
perciò niente
.index
,.find
,in
… sono lenti!
NON USARE cicli annidati… sarebbero probabilmente lenti!
[3]:
viti = [[5,8], [7,4], [2,9],[8,2], [7,4],[2,6], [8,3],
[2,6], [8,3], [8,3], [5,8]]
cacciaviti = [[8,2], [1,3], [5,8], [2,5], [1,3]]
#Cacciaviti richiesti: [(2, 6), (2, 9), (7, 4), (8, 3)]
#viti = [[7,2],[3,5],[1,9],[3,5]]
#cacciaviti = [[8,4],[3,5]]
#Cacciaviti richiesti: [[1, 9], [7, 2]]
# scrivi qui
Prosegui
Continua con for e dizionari
[ ]: