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.

[AVVISO] BENEDETTI REMAKE (FILM CON STESSO TITOLO ED ANNO DIVERSO)

andrea.sterbini (207920 points)
749 1267 2373
in Es3 by (208k points)
edited by

CHE CASINO!

Nel preparare lo HW3 non ho pensato alla presenza di remake nell'elenco dei film, ed avendo stabilito che la chiave del catalogo_film è il solo titolo, il dizionario dei film da produrre non tiene conto della possibilità di film con titolo uguale e tiene solo l'ultima versione.
Ora, se tolgo dal file o ignoro i film doppioni mi cambia il numero di registi creati.

Per evitare errori nei test controllate che, in leggi_archivio_film:

  • costruite TUTTI gli oggetti Film
  • nel catalogo_films da tornare mettete solo il film più recente
  • ma create lo stesso TUTTI i registi dei film (anche dei più vecchi) collegandoli al film istanziato
  • e collegate lo stesso al film vecchio i suoi Attori

<cross_fingers>Spero che questo sia sufficiente</cross_fingers>

NEI TEST SEGRETI STARÒ ATTENTO A NON USARE REMAKE

PS per gli attori il nome è la chiave del dizionario e dovrebbero essere unici.
PPS per i registi c'è solo il nome, quindi non esistono omonimi

1.6k views

3 Answers

_andrea_ (45670 points)
11 42 297
by (45.7k points)
Cosa cambia praticamente per chi ha già consegnato e gli funziona? Io non avevo previsto il doppio film ma funziona lo stesso, crea tutte le istanze ma alcune le sovrascrive, solo che non so quale viene prima e quale la sovrascrive. In ogni caso supero sempre tutti i test. C'è qualcosa da modificare?
Xriuk (13590 points)
6 24 116
by (13.6k points)
edited by
Io ho semplicemente sostituito i film secondo l'ordine delle chiavi del dizionario in input (creando i registi di conseguenza), e non ho avuto errori nei test.

È cambiato qualcosa nei file? Devo comunque creare tutti i film e i registi, anche i più vecchi?
andrea.sterbini (207920 points)
749 1267 2373
by (208k points)
Non ci dovrebbe essere niente da modificare, ma visto che il dizionario che viene tornato da json.load() potrebbe dare i film in ordine diverso non si sa mai.
a.capobianco1 (16770 points)
11 54 165
by (16.8k points)
Quindi l'ordine dei dizionari letti dal file Json cambia di volta in volta?
Xriuk (13590 points)
6 24 116
by (13.6k points)
@a.capobianco1 No, però potrebbero essere forniti dizionari diversi, l'esercizio deve andare bene per tutte le istanze
a.capobianco1 (16770 points)
11 54 165
by (16.8k points)
Non mi sto fissando. Voglio solo capire.
1. Se per ultima edizione si intende l'ultima occorrenza dello stesso film letta nel Catalogo dei film
2. Se l'ordine di quanto estrapolato dal file Json non cambia.
Con le premesse sopra mi fai capire quali problemi potrebbero esserci se lo leggo al contrario (quindi l'ultima ed. Diventa la prima) nel caso in cui venissero inseriti nuovi input?
Xriuk (13590 points)
6 24 116
by (13.6k points)

@a.capobianco1 Sì ma non ti devi basare sul JSON fornito, il quale non necessariamente deve essere ordinato, l'input potrebbe essere totalmente diverso: metti che hai 2 coppie di film con titolo uguale A e B:

  1. A più vecchio
  2. A più recente
  3. B più recente
  4. B più vecchio

Come li leggi/ordini? Devi necessariamente controllare gli anni e inserirli di conseguenza.

a.capobianco1 (16770 points)
11 54 165
by (16.8k points)
Sai.. Secondo me come 'film più recente'  il prof intendeva proprio l'ultimo ad apparire sul file Json... E so che in tal caso potrebbe non essere la versione più recente... Comunque oramai i giochi sono fatti... E x fortuna il prof ha detto che non inserirà doppioni nei test segreti
a.capobianco1 (16770 points)
11 54 165
by (16.8k points)
Basta ciclare all'incontrario il dizionario di dizionari del file Json e ignorare tutte le volte che una chiave è già presente...
_andrea_ (45670 points)
11 42 297
by (45.7k points)
Cosa significa ciclare all'incontrario una cosa che non è ordinata?
andrea.sterbini (207920 points)
749 1267 2373
by (208k points)
Non esattamente.

Vanno creati i registi anche per i film che secondo te "vanno ignorati" e vanno collegati sia i registi che gli attori.
a.capobianco1 (16770 points)
11 54 165
by (16.8k points)
Boh non so che dire... Io appena scarico il file Json leggo tutti i dizionari partendo dall'ultimo e contemporaneamente assegno gli oggetti... E tutto funziona... È un caso?
_andrea_ (45670 points)
11 42 297
by (45.7k points)
Ma che significa che parti dall'ultimo? Il dizionario non dovrebbe avere un primo elemento e nemmeno un ultimo elemento
a.capobianco1 (16770 points)
11 54 165
by (16.8k points)
Allora quello che faccio io è questo:
Variabile= load file di json
For x in variabile[::-1]
Fai lo scambio di oggetti solo se la chiave non è già nel dizionario.

E funziona
a.capobianco1 (16770 points)
11 54 165
by (16.8k points)

commented 6 hours ago by andrea.sterbini (83,780 points)

Non esattamente.

Vanno creati i registi anche per i film che secondo te "vanno ignorati" e vanno collegati sia i registi che gli attori.

Professore in effetti e vero che ciclo al contrario e lascio nel dizionario solo prima occorrenza (ultima di json) tuttavia, facendo debug, ho visto che gli oggetti Film, Attore e Regista sono comunque correttamente scambiati tra loro… anche per i film ignorati nel Dizionario. Quindi è per questo che non ho errori. Insomma c'è tutto dappertutto tranne che nel catalogo.