Cicli for 5 - iterare insiemi

Scarica zip esercizi

Naviga file online

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):

  1. s = set()
    s.add('pan')
    s.add('de')
    s.add('mo')
    s.add('nio')
    print(s)
    
  2. for x in {'a',12,'34',56,34}[2:4]:
        print(x)
    
  3. for x in set(['a']) | set(['b']):
        print(x)
    
  4. 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!

Mostra soluzione
[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

[ ]: