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.

Uso del Grader

Auron (15880 points)
51 126 194
in Es1 by (15.9k points)
closed by
Salve, volevo sapere se per eseguire correttamente il test per program0x.py con grade0x.py basta debuggare (F5) il codice di grade0x.py.
A questo proposito, se così fosse, quando lo eseguo sul primo esercizio mi restituisce questo esito:

test_program01_1               lista di valori piccoli
        error -> AssertionError
        ([70, 154, 128], [293, 113] ) != [293, 113]
test_program01_2               lista di valori medi
        error -> AssertionError
         ([3125 ], []) != []
test_program01_3               lista di valori con divisori grandi
        error -> AssertionError
         ([], [26237927] ) != [26237927]

Ora, inserendo le lista e i "k" dei test presenti nel grader all'interno dei parametri della mia funzione, gira tutto perfettamente, mi restituisce i valori giusti sia per la lista con numero di divisori uguale a k, sia per la lista con soli numeri primi... Perciò mi chiedo, cosa significa "error -> AssertionError" seguito da " ([3125], []) != []"?
C'è qualcosa di sbagliato? Se sì, cosa e come lo correggo?
1.0k views
closed with the note: Answered

4 Answers

Best answer
andrea.sterbini (207940 points)
756 1270 2377
by (208k points)
selected by

Il grader controlla due cose:

  • che il risultato tornato dalla funzione sia una certa lista
  • che la lista passata come argomento sia stata modificata nel giusto modo

Se uno dei due test non viene superato viene lanciato un AssertionError che mostra la coppia valore ricevuto != valore atteso

Nei prossimi homework cercherò di rendere più chiari i messaggi di errore lanciati dai grader

Auron (15880 points)
51 126 194
by (15.9k points)
Grazie mille!
m
matteo91 (490 points)
2 10 15
by (490 points)

non sono un esperto in materia, io posso solo dirti che per esempio nel primo test ti dice che:questo è il risultato prodotto dalla tua funzione[70, 154, 128], [293, 113] 

mentre questo è ciò che dovrebbe venire per essere giusta[293, 113]

LeonardoEmili (35740 points)
14 65 155
by (35.7k points)

Buongiorno!

Da quanto ho capito dal testo dell'esercizio la funzione deve restiturti i numeri primi della lista e alla fine dell'esecuzione la lista dovrà essere modificata! Quindi quando il grader viene eseguito questo controlla se effettivamente tali modifiche sono state eseguite! Ogni volta che vedi un error -> AssertionError è perché ha trovato qualcosa che non corrisponde ai risultati. Il mio consiglio è quindi di leggere con attenzione i passaggi che hai fatto fare alla tua funzione e controlla che la lista ritornata sia stata modificata dalla funzione stessa! Potrebbe essere un problema di scope e la tua lista modificata solo a livello locale quindi se è così devi solamente rendere le modifiche "permanenti" ;)

Spero di averti aiutato!
Buona giornata

Leonardo Emili

Jury Francia (7520 points)
25 76 100
by (7.5k points)
Ho lo stesso identico problema, se eseguo io i test con i parametri del grade funziona perfettamente e mi restituisce il risultato proprio come dovrebbe essere,mentre se eseguo il grade no.

Io non elimino elementi dalla lista ls, perché mi dava problemi, ma semplicemente la rendo uguale ad un'altra che contiene i valori corretti
Jury Francia (7520 points)
25 76 100
by (7.5k points)
Io ho risolto passando al return della funzione solo la lista dei numeri primi e modificando la lista originale ls eliminando i valori con il metodo remove( )
c
czarbo2 (2400 points)
4 9 15
by (2.4k points)
Ho capito, quindi è necessario che la funzione restituisca solamente una nuova lista con i numeri primi, però modificando anche quella iniziale. Io facevo stampare sia quella dei numeri primi che quella modificata.

Adesso provo a seguire il tuo consiglio ;)
Grazie!

CZ
Jury Francia (7520 points)
25 76 100
by (7.5k points)
Esatto anche io passavo al return entrambe le liste e non funzionava. Modifica la lista ls nel programma con qualche ciclo e al return passa solo la lista dei numeri primi, a me ha funzionato, non so se sia corretta come cosa ma il test grade lo passa.
c
czarbo2 (2400 points)
4 9 15
by (2.4k points)
Perfetto!

Sei riuscito anche eseguire il test entro i 30 secondi consentiti? Perchè ho fatto un tentativo poco fà e praticamente ci impiegava minuti per terminare.

CZ
Jury Francia (7520 points)
25 76 100
by (7.5k points)
Si il mio impiega un secondo e qualcosa