Problema nei test con 'r' mode di open() in HW4 rec

A
AlessandroPy (340 points)
0 4 5
asked Feb 10 in Avvisi by AlessandroPy (340 points)
le funzioni che calcolano le medie sono giuste e passano i test, ma il test mi dice comunque "opening file with mode 'r' is not allowed", ora esiste un altro modo per aprire i file da leggere oppure sto sbagliando qualcos'altro io?
164 views

2 Answers

Best answer
andrea.sterbini (172780 points)
514 935 1789
answered Feb 10 by andrea.sterbini (172,780 points)
selected Feb 11 by AlessandroPy
I test permettono di aprire solo i file dei dati indicati dal problema o dai parametri e non altro.
Probabilmente ne apri uno che non dovresti aprire,

BTW, se consegni il codice posso dargli un'occhiata
A
AlessandroPy (340 points)
0 4 5
commented Feb 11 by AlessandroPy (340 points)
Si ha ragione, "mea culpa" avevo capito male la proprietà della ricorsione.

Ho consegnato il programma (HW4rec) che passa i test delle funzioni scritte se la variabile DEBUG è settata a TRUE nel file test_01.py, se messa a FALSE sbaglia i test con il dbsize=medium e large...
andrea.sterbini (172780 points)
514 935 1789
commented Feb 12 by andrea.sterbini (172,780 points)
Nei test non esistono tabelle con nome italiano. Nello zip probabilmente ci sono dei vecchi file, ma le tabelle e i corrispondenti file json sono solo in inglese.
noemicalandro (8950 points)
0 0 2
answered Feb 10 by noemicalandro (8,950 points)
ciao, in teoria se devi solo leggerli non serve per forza la mode, basta "with open (file) as f:"
A
AlessandroPy (340 points)
0 4 5
commented Feb 10 by AlessandroPy (340 points)
Allora apposto, grazie anche a te, non avevo capito si potessero implementare funzioni esterne alle funzioni dell'HW..., Anche tu hai problemi con la funzione "with open()" per caricare i file ?
G
Gavino_Santu (140 points)
0 0 1
commented Feb 10 by Gavino_Santu (140 points)
No penso di avere pèroblemi solo con i timeout, ma alla fine ho capito che non dipende dalla media, bensì da due for annidati che ho implementato all'interno di una funzione che non so proprio come evitarli.

Però in passato ho avuto problemi simili sempre con with open() ma con la modalità 'w+'. Ho risolto utilizzando 'w' soltanto. Nel tuo caso non saprei...
A
AlessandroPy (340 points)
0 4 5
commented Feb 10 by AlessandroPy (340 points)
credo di aver capito di quali for annidate parli, prova a vedere se i for loop in questa maniera ti risolvono il problema del timeout:

invece di fare la for così -->  for el in lista:

                                                   x = el[...]

fai così --> x = [el[...] for el in lista], se ti serve mettere una condizione per il riempimento della lista, puoi metterla alla fine --> x = [el[...] for el in lista if el[...] > 10]

spero di essere stato utile :)
andrea.sterbini (172780 points)
514 935 1789
commented Feb 10 by andrea.sterbini (172,780 points)
La ricorsione c'è quando una funzione richiama se stessa (direttamente o indierettamente).

Gli esempi sopra non lo sono
G
Gavino_Santu (140 points)
0 0 1
commented Feb 11 by Gavino_Santu (140 points)
Si parli delle list comprhension, e ho già provato ad implementarle. Purtroppo oltre a non risolvere il problema  viene una riga lunghissima e illeggibile. Grazie lo stesso.