Do you need any 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

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)
2 7 15
asked Nov 10, 2019 in HW4 obbligatorio by THESHADOW2030 (1,070 points)
recategorized Nov 10, 2019 by andrea.sterbini
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)
650 views

6 Answers

Christian (15220 points)
2 4 77
answered Nov 10, 2019 by Christian (15,220 points)
Potresti incollare una print della variabile che fai ritornare al programma?
T
THESHADOW2030 (1070 points)
2 7 15
commented Nov 10, 2019 by THESHADOW2030 (1,070 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)
2 4 172
answered Nov 10, 2019 by Edward (25,950 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)
2 7 15
commented Nov 10, 2019 by THESHADOW2030 (1,070 points)
Sì... Ho verificato usando lo stesso file di testo
E
Edward (25950 points)
2 4 172
commented Nov 10, 2019 by Edward (25,950 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)
2 7 15
commented Nov 10, 2019 by THESHADOW2030 (1,070 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)
2 4 172
commented Nov 10, 2019 by Edward (25,950 points)
Vuol dire che in qualche modo ritorni None.
AndreaGasparini (18730 points)
6 12 118
answered Nov 10, 2019 by AndreaGasparini (18,730 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)
2 7 15
commented Nov 10, 2019 by THESHADOW2030 (1,070 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)
2 4 172
commented Nov 10, 2019 by Edward (25,950 points)

Ho modificato il mio commento, prova a fare quello.

AndreaGasparini (18730 points)
6 12 118
commented Nov 10, 2019 by AndreaGasparini (18,730 points)
edited Nov 10, 2019 by AndreaGasparini

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)
2 4 172
commented Nov 10, 2019 by Edward (25,950 points)

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

AndreaGasparini (18730 points)
6 12 118
commented Nov 10, 2019 by AndreaGasparini (18,730 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)
15 38 131
commented Nov 10, 2019 by a.pietroluongo (11,250 points)
Su IPython 7.6.1  ritorna list
andrea.sterbini (172780 points)
514 935 1789
answered Nov 10, 2019 by andrea.sterbini (172,780 points)
Se consegni posso dare un'occhiata all'errore.
T
THESHADOW2030 (1070 points)
2 7 15
commented Nov 10, 2019 by THESHADOW2030 (1,070 points)
edited Nov 10, 2019 by THESHADOW2030
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 (172780 points)
514 935 1789
commented Nov 10, 2019 by andrea.sterbini (172,780 points)
Da quello che vedo in genere torni lista vuota. Altre volte una lista sbagliata.
T
THESHADOW2030 (1070 points)
2 7 15
commented Nov 10, 2019 by THESHADOW2030 (1,070 points)
Uh...  Strano...  Provo a riscrivere nuovamente il codice. Grazie mille prof del disturbo
S
Shad87 (740 points)
5 9 11
answered Nov 12, 2019 by Shad87 (740 points)
edited Nov 12, 2019 by Shad87
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)
1 4 12
answered Nov 12, 2019 by leonardoberti (1,220 points)
A me dava lo stesso identico errore, alla fine mi sono arreso e ho riscritto il codice da capo.