Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2021-22 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 2021-22 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.

VIDEOLEZIONI DEL CORSO DI FONDAMENTI DI PROGRAMMAZIONE AA20-21

PROGRAMMING COURSE VIDEOCONFERENCES AY20-21

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

197 views
closed with the note: risolto

1 Answer

Tommaso Sgroi (12990 points)
7 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)
7 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)
7 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 (173640 points)
516 941 1795
by (174k 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