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.

[HW8] Errore nei Test Segreti

p
petrux_96 (300 points)
0 5 7
in HW8 by (300 points)
edited by
Buongiorno, ho scritto anche in privato al prof Sterbini ma magari è successo anche ad altri e quindi ho deciso di aprire questo topic.

Al momento della consegna dell'hw8 il mio codice passava tutti i test, dopo l'introduzione di quelli segreti passava solo 17/21 e di preciso non passava i seguenti test: "minimal" , "minimalW" , "minimalB" e "empty".

L'errore rilevato è un AssertionError: Tuples differ quindi un risultato sbagliato, allora, perplesso dalla cosa, ho provato ad eseguire il programma dando "a mano" come input i file dei test segreti e il risultato tornato dalla console è corretto come l'expected.

Cosa potrebbe essere?

PS. Ovviamente il codice non ha subito modifiche e per sicurezza ho anche ricreato un nuovo file .py copiando esattamente il source code del mio upload e il risultato è il medesimo.

Grazie per gli eventuali chiarimenti e buon lavoro
492 views

5 Answers

m
mecostagliola (2480 points)
2 4 18
by (2.5k points)
Ti ringrazio per questo post perchè anche io fallisco gli stessi test segreti, proverò a fare anche io un check in locale, ma se hai notizie dal prof per piacere tieni aggiornato questo thread
N
Nim (3520 points)
0 2 27
by (3.5k points)
dovrebbe dirti anche cosa  c'è di sbagliato, quale elemento della tupla è diverso
andrea.sterbini (208020 points)
756 1270 2377
by (208k points)
In due funzioni usi un argomento con valore di default mutevole.

In python il valore di default viene instanziato al momento della sua definizione e viene condiviso tra tutte le chiamate della funzione, creando un effetto di memoria delle chiamate precedenti.

Ne ho parlato a lezione parecchie volte
m
mecostagliola (2480 points)
2 4 18
by (2.5k points)
grazie del chiarimento professore
d
domenico.muti (420 points)
1 2 4
by (420 points)
Ok tutto chiaro grazie, in effetti anche io ho messo un valore di default su un argomento.
p
petrux_96 (300 points)
0 5 7
by (300 points)
Grazie mille professore del chiarimento, mi sento veramente un idiota!...E' che passando tutti i test classici non mi ero posto il problema. Vabbè, appreso l'errore, mi sarà da lezione. Grazie ancora per il chiarimento
d
domenico.muti (420 points)
1 2 4
by (420 points)
Idem, a me dice che non passa i test: minimal, minimalW, minimalB, empty e 100x1, ma se li faccio girare con il programma a mano ottengo su tutti e 5 gli input i risultati richiesti. Aspetto anche io chiarimenti, grazie!
andrea.sterbini (208020 points)
756 1270 2377
by (208k points)

Ci sono vari modi per creare errori difficili da scoprire per via di un effetto "memoria" che ricorda valori di test precedenti nei test successivi facendoli fallire:

  • Usare argomenti di default mutevoli (che Python crea al momento della DEFINIZIONE e condivide tra tutte le chiamate) 
  • Usare variabili globali (che sono proibite proprio per evitare errori o trucchetti) 
  • Usare attributi di classe come se fossero variabili globali (proibite anche queste)