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.

HW4: il log del test mi dice che non faccio il return di una lista quando invece facendo il debugging ritorno una lista

T
THESHADOW2030 (1070 points)
4 7 15
in HW4 obbligatorio by (1.1k points)
recategorized by
Come da titolo, i test mi danno errore dicendo che non ritorno una lista quando poi, verificando, ritorno una lista. Qualche suggerimento su come posso risolvere il problema? (ho già provando a mettere int agli elementi della lista e a fare return list(listaFinale)
1.1k views

6 Answers

Christian (15220 points)
3 4 77
by (15.2k points)
Potresti incollare una print della variabile che fai ritornare al programma?
T
THESHADOW2030 (1070 points)
4 7 15
by (1.1k points)
Ho provato a fare anche così e ritorno una lista anche col print. (L'ho messa alla riga prima del return)
E
Edward (25950 points)
4 4 172
by (26.0k points)

verificando, ritorno una lista

Hai verificato con gli stessi input dei test che non passi, sì?

I test ti assicuro che sono corretti.

T
THESHADOW2030 (1070 points)
4 7 15
by (1.1k points)
Sì... Ho verificato usando lo stesso file di testo
E
Edward (25950 points)
4 4 172
by (26.0k points)
Guarda senza analizzare il codice (che è vietato scambiarsi) credo sia difficile analizzare il problema.

I test sono corretti, potresti provare a fare una funzione fantoccia e fare return [1] per verificarlo.

Edit: potresti andare dentro il file test_01.py e commentare la riga 25, in questo modo dovrebbe fare il compare anche se quello che restituisci non è una lista, ed avrai una descrizione più dettagliata
T
THESHADOW2030 (1070 points)
4 7 15
by (1.1k points)
Ci ho appena provato e, prendendo d'esempio il test che usa ft1.txt, mi dice che la lista restituita non è corretta nonostante mettendo un print della variabile che ritorno quest'ultima è esattamente quella che dice il log.
Inoltre il log mi dice che None!= [1,5,3,0,5,1] (ma il print mi dà una lista)
E
Edward (25950 points)
4 4 172
by (26.0k points)
Vuol dire che in qualche modo ritorni None.
AndreaGasparini (18850 points)
7 12 120
by (18.9k points)

Prima del return prova a fare una print del tipo della variabile che stai ritornando così ti togli ogni dubbio. La funzione che te lo permette è type(), ovviamente prende come parametro la variabile da analizzare.

Qui trovi degli esempi.

T
THESHADOW2030 (1070 points)
4 7 15
by (1.1k points)
Ho appena provato e quel print mi dà <class 'list'> ... Perciò davvero non riesco a capire dove sia il problema
E
Edward (25950 points)
4 4 172
by (26.0k points)

Ho modificato il mio commento, prova a fare quello.

AndreaGasparini (18850 points)
7 12 120
by (18.9k points)
edited by

Non vorrei sbagliarmi ma non credo che sia normale <class 'list'>, di norma se lo fai su una lista ti dovrebbe restituire solo list che è il tipo effettivo, almeno è così che funziona sulla mia console (lo sto provando in questo momento).

E
Edward (25950 points)
4 4 172
by (26.0k points)

A me dice <class 'list'> facendo il type di una lista

AndreaGasparini (18850 points)
7 12 120
by (18.9k points)
Allora dipende dall'interprete, perché su IPython ritorna semplicemente list, ma provando ora su idle è come dite voi. My bad.
a
a.pietroluongo (11250 points)
20 39 131
by (11.3k points)
Su IPython 7.6.1  ritorna list
andrea.sterbini (207940 points)
756 1270 2377
by (208k points)
Se consegni posso dare un'occhiata all'errore.
T
THESHADOW2030 (1070 points)
4 7 15
by (1.1k points)
edited by
Va bene prof, grazie mille. Consegno subito
Edit: consegnato
Edit2: sulla VM mi dice che ho passato un solo test... A questo punto credo che il problema sia nel mio PC
andrea.sterbini (207940 points)
756 1270 2377
by (208k points)
Da quello che vedo in genere torni lista vuota. Altre volte una lista sbagliata.
T
THESHADOW2030 (1070 points)
4 7 15
by (1.1k points)
Uh...  Strano...  Provo a riscrivere nuovamente il codice. Grazie mille prof del disturbo
S
Shad87 (740 points)
7 9 11
by (740 points)
edited by
Penso di avere avuto lo stesso problema. Nel mio caso, la lista diventava None dopo un append, scoprendo che spesso la sintassi che usavo generava proprio l'errore in cui mi imbattevo. Spulciando sul web ho scoperto che l'errore è abbastanza comune per chi è alle prime armi spiegando che .append modifica la lista che stai passando come input e che quindi non è necessario fare "lista = lista.append()", ma scrivere direttamente lista.append(). Io ho risolto così :) !
l
leonardoberti (1220 points)
3 4 12
by (1.2k points)
A me dava lo stesso identico errore, alla fine mi sono arreso e ho riscritto il codice da capo.