Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Esercizio 80, problemi con il test

v
veniero (290 points)
0 2 4
in Eserciziario Python by (290 points)
closed by

buongiorno,

sto lanciando i test dell'esercizio 80 (Dati un path ad una directory e un insieme di parole ( stringhe di caratteri tra 'a' e 'z'), la funzione ricerca nella directory e nelle sue sub-directory eventuali file .txt con all'interno parole contenute nell'insieme passato in input, restituisce un dizionario delle parole trovate.), ma 2 su 3 test falliscono.

Quello che noto è che mi viene riportato nel Result dello iesimo test mi trovo anche il Result dei test precedenti

TEST1

 [ 33%] EXPECTED {'aw': [13, 5]}   RESULT {'aw': [13, 5]}

TEST 2

resutlt {'aw': [13, 5], 't': [420, 5], 'g': [360, 5], 'op': [12, 5], 'gc': [15, 5]}
expected {'op': [12, 5], 'g': [360, 5], 'gc': [15, 5], 't': [420, 5]}

TEST 3

resutlt {'aw': [13, 5], 't': [420, 5], 'g': [360, 5], 'op': [12, 5], 'gc': [15, 5], 'y': [379, 5], 'r': [418, 5], 'gg': [16, 5], 'uz': [10, 5], 'xx': [12, 5], 'zz': [15, 5], 'il': [13, 5], 'zzn': [2, 4], 'qaiqgnys': [1, 5], 'ssfb': [1, 3], 'cbjzrbhdds': [1, 4]}
expected {'gg': [16, 5], 'cbjzrbhdds': [1, 4], 'zzn': [2, 4], 'xx': [12, 5], 'il': [13, 5], 'y': [379, 5], 'zz': [15, 5], 'ssfb': [1, 3], 'r': [418, 5], 'uz': [10, 5], 'qaiqgnys': [1, 5]}

Succede anche a voi?

Ciao

403 views
closed with the note: risolto

1 Answer

Tommaso Sgroi (12990 points)
10 11 91
by (13.0k points)
In che modo cambi dir?

Usi os.chdir o passi direttamente la stringa del path?
v
veniero (290 points)
0 2 4
by (290 points)
premessa:

lanciando i test singolarmente, i test passano.

È quando li lancio in sequenza che non funziona. È pytest test.py che mi genera errore.

Comunque, passo la stringa del path.
Tommaso Sgroi (12990 points)
10 11 91
by (13.0k points)
Ok, perché io ho avuto dei problemi simili ma con os.chdir.

Btw, se mi passi il link dell'esercizio posso farlo e provare a risolverlo. Così magari esce fuori se è un problema di implementazione o effettivo nei test.
Tommaso Sgroi (12990 points)
10 11 91
by (13.0k points)
Prova anche a lanciare più test contemporaneamente da program.py
v
veniero (290 points)
0 2 4
by (290 points)

Ho risolto!

Ho cambiato la firma del metodo principale da

def es80(dirs, parole, result=dict(), profondita=0):
a
def es80(dirs, parole):
result = dict()
profondita = 0
andrea.sterbini (207920 points)
750 1267 2373
by (208k points)

L'errore deriva dal fatto che in Python il valore di default result=dict(), viene istanziato NEL MOMENTO DELLA DEFINIZIONE e viene CONDIVISO tra tutte le chiamate della funzione.

Il modo corretto di scrivere la funzione è:

def es80(dirs, parole, result=None, profondita=0):
    if result=None: result = {}
v
veniero (290 points)
0 2 4
by (290 points)
Perfetto,

ora mi è chiaro.

Grazie