Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

funzione leggi_archivio_film

f.cocci (650 points)
3 13 17
in Es3 by (650 points)
Salve, ho un dubbio su questa frase : "La funzione leggi_archivio_film deve fare in modo che:
    - all'interno di ciascun oggetto Film siano inseriti gli oggetti Attore in modo che:
        - ogni Attore contenga i Film in cui è comparso
        - ogni Film contenga gli Attori che ci hanno lavorato
    - all'interno di ciascun oggetto Film siano contenuti gli oggetti di tipo Regista in modo che:
        - ogni Film contenga i Registi che l'hanno diretto
        - ogni Regista contenga i Film che ha diretto"

la funzione riceve in input l'arichivio json dei film e il catalogo atto come dizionario fatto in questo modo: { 'Angela DeCorte': <__main__.Attore at 0x268181e32b0>,}, ditemi se fino qui vi trovate.

Similmente a quanto fatto per il catalogo attori mi creo il catalogo film del tipo: {'La haine': <__main__.Film at 0x268120cecc0>}

Catalogo registi non ho ben capito se ho fatto bene nel senso che a differenza dei primi cataloghi dove i valori sono le istanza i cui costruttori ricevono in input le informazioni di catalogo per intero, il costruttore di registri vuole SOLO in nome.

A ogni modo fata questa doverosa premessa vengo alla domanda vera e propria: come si fa ad aggiungere all'interno di una istanza di tipo film, un'altra istanza di tipo attore???

la classe film ha un metodo che se invocato, restituisce il set delle istanze degli attori che hanno partecipato al film, ma non e' quello che si chiede di implemetare nella funzione...

Stesso dubbio per Film e registi.

Grazie, F.
346 views
closed

1 Answer

Best answer
_andrea_ (45670 points)
13 42 297
by (45.7k points)
selected by
si la creazione dei registi va bene così. per quanto riguarda la domanda vera e propria, fai in modo che ogni film contenga un attributo in cui inserisci le istanze di tipo attore che vi hanno lavorato. lo stesso per gli attori, fagli un attributo che contenga i loro film. stessa cosa per i registi che devono contenere i film e i film che devono contenere i registi. visto che la funzione richiede di tornare l'insieme degli attori e l'insieme dei film ecc, ti conviene usare direttamente un attributo insieme in cui inserisci quello che ti interessa
f.cocci (650 points)
3 13 17
by (650 points)
concettualmente ti seguo a livello dati, nel senso che mi e' chiaro, nel senso che e' come se avessi una sorta di star schema e accedo dato il film all'attore, al regista e cosi via (perdona l'abuso di linguaggio).

Ma come implementare questi metodi all'interno di ciascuna classe mi torna difficile in questo momento.

Ed un'altra cosa che non capisco e' perche La funzione leggi_archivio_film riceve in input anche il catalogo attori e perche dice che e' la funzione che deve preoccuparsi dell'incapsulamento di un'istanza dentro l'altra.

Riesci a essere un po piu' esplicito per cortesia?

Grazie 1000, F.
_andrea_ (45670 points)
13 42 297
by (45.7k points)
perché quando crei un film, nel dizionario che usi ci sono tutti gli attori che ci hanno lavorato messi come stringhe in una lista. però sono pur sempre stringhe. l'esercizio dice che ti servono le istanze, e le istanze le hai già create e stanno dentro il dizionario ottenuto con la prima funzione. quindi per ogni film crei un set dentro quell'oggetto, e per ogni attore che ha lavorato in un film aggiungi la sua istanza (che sta nel dizionario attori) nel set del film. la stessa cosa la fai coi registi e gli attori, stando attendo a mettere sempre le istanze che trovi nei vari dizionari che stai usando perché devono essere proprio quelle, non altre
f.cocci (650 points)
3 13 17
by (650 points)
Forse, ho capito, infatti mi ero accorto di sta cosa di fare corrispondere le istanze da una parte all'altra e per questo che ho chiesto precisazioni.

Provo a lavorarci un attimo nel caso ti svergogno ancora visto la chiarezza con cui mi stai supportando.

Grazie, F.
f.cocci (650 points)
3 13 17
by (650 points)
Allora praticamente quello che ho fatto e' passare al costruttore della classe film il catalogo attori.

all'interno della classe Film ho creato un metodo attori che per ogni attore della lista attori del catalogo film, per ogni chiave valore del catalogo attori se attore e' uguale alla chiave(che e' sempre attore) mi restituisce il valore del catalogo attore che e' l'istanza dell'oggetto attore.

Corretto questo modo i procedere?
_andrea_ (45670 points)
13 42 297
by (45.7k points)
No perché all'inizio deve essere vuoto il set che ritorni
f.cocci (650 points)
3 13 17
by (650 points)
Forse mi sbagli ma mi sembra che questo test adesso venga superato.

Ho utilizzato list/ins/dict comprehention per creare l'insieme delle istanze, quindi non ho avuto bisogno di inizializzare l'insieme vuoto prima.

Prima ti confermo che avevo quel tipo di errore.

Se hai altri consigli sono bene accetti, mi stai aiutando tantissimo nel ragionamento.
_andrea_ (45670 points)
13 42 297
by (45.7k points)
Vabbè se te li supera allora va bene