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.

HW2 Es.2 sub compiti

Jury Francia (7520 points)
23 76 100
in Es2 by (7.5k points)
closed by
Ciao ragazzi, mi sto chiudendo da oggi sull'esercizio due che è l'ultimo che mi manca, in pratica passa il primo test perché immagino ci siano meno sub compiti collegati tra loro. Il problema è che mi da, ad esempio sul secondo esercizio, meno valori di sub compiti collegati alla chiave che rappresenta il compito principale. I valori sono sempre gli stessi, lo so sicuramente è un errore nell'algoritmo, ho pensato che forse controlla i primi sub compiti inseriti e quando ne riceve di nuovi non fa di nuovo il controllo e quindi non aggiunge gli altri sub compiti dei rispettivi sub compiti inseriti.. è un complicato da spiegare purtroppo..

comunque ad esempio per il secondo test ho questo risultato:

TestRisultatoCorretto:

{"60": ["6114", "8279", "7495", "8245", "3601", "4116", "427", "629", "4869"], "50": ["3400", "8368", "546", "8142", "8021", "3916"], "40": ["9044", "2413"], "10": ["1210", "3166", "9624", "3405", "4298", "3895"], "20": ["1210", "1018", "402", "8594", "3249"], "70": ["2993", "648", "6621", "5881", "1224", "2012", "2414"], "30": ["4297", "8518", "1296", "8016", "9774", "1262", "5517", "2974"], "80": ["2804", "8364", "2546", "4111", "753", "8993", "2785", "1403", "7862", "4229", "4536", "5987"]}

MioTest:

{"30": ["2974", "5517"], "10": ["3895", "4298"], "40": ["2413", "9044"], "20": ["3249", "8594"], "70": ["2012", "2414"], "80": ["4536", "5987"], "60": ["4116", "427", "4869", "629"], "50": ["3916", "546", "8021", "8142", "8368"]}
641 views
closed with the note: deadline expired

2 Answers

Best answer
LeonardoEmili (35740 points)
13 65 155
by (35.7k points)
selected by

Buonasera!

Innanzitutto non preoccuparti perché se sei già arrivato qui hai quasi ultimato il tuo programma. Tornando al tuo problema possono essere molteplici le cause e non disponendo di dati dettagliati avanzo le ipotesi più plausibili:

  • il problema potrebbe stare nella ricerca chiave-valore. Mi spiego meglio, potrebbe darsi che quando vai a cercare il valore collegato alla chiave succede che per qualche condizione all'interno del tuo ciclo la sequenza "esce" dal ciclo e non ti permette di eseguire più il ciclo.
  • Altrimenti un altro motivo, che sembrerebbe avere più senso dato che non solo mancano alcuni sub ma in alcuni casi questi appaiono disordinati. La tua lista è ordinata ok, ma alcuni elementi sono fuori posto. Detto questo potrebbe essere un problema legato alla parte in cui tu inizializzi il tuo dizionario, creando un dizionario con dati mancanti o errati l'intera esecuzione del tuo programma è compromessa!
In ogni caso non dovrebbero essere problemi troppo difficili da trovare, il mio consiglio è quindi di "debuggare" il tuo codice attraverso l'uso di print() in modo tale da aiutarti nella ricerca del bug !
Spero che tu risolva,
buon code
.
Leonardo Emili
Jury Francia (7520 points)
23 76 100
by (7.5k points)
Si infatti penso sia un problema legato o all iterazione sul dizionario o proprio all inizializzazione di questo, ho provato con i print ma ancora non riesco a capire l errore. Provo a cambiare un po l algoritmo, forse potrei fare direttanente il controllo mentre leggo le righe
LeonardoEmili (35740 points)
13 65 155
by (35.7k points)
Si , questo metodo di debug è sicuramente noioso ma molto efficace. In ogni caso non appena riesci a scoprirne qualcosa in più postalo qui sul forum e saremo pronti ad aiutarti ;)
francesco.dev (33560 points)
21 51 129
by (33.6k points)
edited by

Ciao!

Piccolo consiglio: ricorda che ogni volta che hai il valore di un sub, devi cercare questo nell'intero file. Invece da come hai fatto tu credo vivamente che fai un controllo solo su una parte dell'intero file (ovvero quella subito dopo il comp che hai letto).

Esempio:
Avendo il file:
comp 3
sub 5
comp 7
sub 3
comp 5

Se devo cercare il comp7 una volta arrivato alla sua posizione mi accorgo che ha un sub, precisamente sub3;
Ora devo ripetere il ciclo affinché possa trovare il comp3 (compito corrispondente al sub3);
Trovato il comp3 noto che ha un sub annesso, il sub5;
Ricomincio il ciclo dall'inizio affinché possa trovare comp5
E così via se ci sono altri sub...

Quindi puoi ben vedere che ogni volta devo scorrere nuovamente la lista (o la struttura che stai utilizzando)!

Sperando sia questo il problema,
Qualsiasi cosa fammi sapere!
- Francesco Pio Scognamiglio

Jury Francia (7520 points)
23 76 100
by (7.5k points)
Io in realtà leggevo subito riga per riga e mettevo il compito come chiave di un dizionario e il sub come valore. E poi iteravo sui valori per vedere se passati come chiavi avevano a loro volta dei sub. Ma va bene al primo giro, quando ha troppi sub all interno non li vede. Sicuramente sbaglio qualcosa nell iterazione, proverò diversamente
francesco.dev (33560 points)
21 51 129
by (33.6k points)
Sì, sicuramente ci sarà qualche piccolo errore nell'algoritmo