Esercizio 80, problemi con il test

v
veniero (290 points)
0 2 4
asked Jan 25, 2020 in Eserciziario Python by veniero (290 points)
closed Jan 25, 2020 by andrea.sterbini

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

193 views
closed with note: risolto

1 Answer

Tommaso Sgroi (12990 points)
6 11 91
answered Jan 25, 2020 by Tommaso Sgroi (12,990 points)
In che modo cambi dir?

Usi os.chdir o passi direttamente la stringa del path?
v
veniero (290 points)
0 2 4
commented Jan 25, 2020 by veniero (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)
6 11 91
commented Jan 25, 2020 by Tommaso Sgroi (12,990 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)
6 11 91
commented Jan 25, 2020 by Tommaso Sgroi (12,990 points)
Prova anche a lanciare più test contemporaneamente da program.py
v
veniero (290 points)
0 2 4
commented Jan 25, 2020 by veniero (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 (172780 points)
513 935 1789
commented Jan 25, 2020 by andrea.sterbini (172,780 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
commented Jan 25, 2020 by veniero (290 points)
Perfetto,

ora mi è chiaro.

Grazie