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

andrea.sterbini (172680 points)
511 927 1776
asked Dec 10, 2018 in Es3 by andrea.sterbini (172,680 points)
edited Dec 10, 2018 by andrea.sterbini

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

619 views

3 Answers

_andrea_ (45670 points)
2 39 297
answered Dec 10, 2018 by _andrea_ (45,670 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)
0 24 116
answered Dec 10, 2018 by Xriuk (13,590 points)
edited Dec 10, 2018 by Xriuk
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 (172680 points)
511 927 1776
commented Dec 10, 2018 by andrea.sterbini (172,680 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)
1 54 165
commented Dec 10, 2018 by a.capobianco1 (16,770 points)
Quindi l'ordine dei dizionari letti dal file Json cambia di volta in volta?
Xriuk (13590 points)
0 24 116
commented Dec 10, 2018 by Xriuk (13,590 points)
@a.capobianco1 No, però potrebbero essere forniti dizionari diversi, l'esercizio deve andare bene per tutte le istanze
a.capobianco1 (16770 points)
1 54 165
commented Dec 10, 2018 by a.capobianco1 (16,770 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)
0 24 116
commented Dec 11, 2018 by Xriuk (13,590 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)
1 54 165
commented Dec 11, 2018 by a.capobianco1 (16,770 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)
1 54 165
answered Dec 10, 2018 by a.capobianco1 (16,770 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)
2 39 297
commented Dec 10, 2018 by _andrea_ (45,670 points)
Cosa significa ciclare all'incontrario una cosa che non è ordinata?
andrea.sterbini (172680 points)
511 927 1776
commented Dec 10, 2018 by andrea.sterbini (172,680 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)
1 54 165
commented Dec 10, 2018 by a.capobianco1 (16,770 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)
2 39 297
commented Dec 10, 2018 by _andrea_ (45,670 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)
1 54 165
commented Dec 10, 2018 by a.capobianco1 (16,770 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)
1 54 165
commented Dec 10, 2018 by a.capobianco1 (16,770 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.