errore di return nell homework 2

nick98 (700 points)
3 11 14
asked Oct 25, 2020 in HW2 obbligatorio by nick98 (700 points)
recategorized Nov 5, 2020 by andrea.sterbini
buonasera, lavorando sull homework 2 quando eseguo i test mi ritorna questo errore in 4 test su 17, ovvero che il mio return non è una lista anche se il mio unico return è effettivamente una lista e non ho altri modi di fare tornare al mio codice qualcosa di diverso da una lista.sapete come risolvere?

self = <test_01.Test testMethod=test_json4_00002_test_1000000_15_eng>
g1 = ['heartier', 'blenheim', 'forge', 'dopier', 'russell', 'majoring', ...]
g2 = ['seawards', 'draggles', 'goodman', 'stranglehold', 'obtention', 'revolutions', ...]
g3 = ['ragouts', 'fireplaces', 'vegetated', 'abbey', 'defrayable', 'senior', ...]
g4 = ['devolve', 'knelt', 'acclimatization', 'absenteeism', 'supposedly', 'hose', ...], hand_size = 15
num_letters = 1000000, expected = [408875, 407575, 406780, 408854]

    @file_data("test_1M.json")
    def test_json4(self, g1, g2, g3, g4, hand_size, num_letters, expected):
>       return self.do_test(g1, g2, g3, g4, hand_size, num_letters, expected)

test_01.py:74:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
test_01.py:39: in do_test
    self.assertEqual(type(result), list,
E   AssertionError: <class 'NoneType'> != <class 'list'> : The output type should be: list
E   [Il tipo di dato in output deve essere: list]
211 views
closed with note: solved

3 Answers

Best answer
C
ChristianSt (1790 points)
3 9 25
answered Oct 25, 2020 by ChristianSt (1,790 points)
selected Oct 25, 2020 by nick98
Sembra che la funzione, per qualche motivo non sia riuscita a costruire una lista e abbia ritornato None, controlla come crea la lista e vedi se ci sono casi in cui non la crea. Cio' puo' capitare quando per esempio metti nel return il rsultato di una funzione e quest'ultima per vari motivi, (magari ci si dimentica di mettere un return a fine funzione), non ti ritorna niente.
nick98 (700 points)
3 11 14
commented Oct 25, 2020 by nick98 (700 points)
il problema è che la lista la creo all inizio del programma, quindi anche se non facesse nessun calcolo dovrebbe comunque ritornare una lista
1
1914925 (3070 points)
1 4 23
commented Oct 25, 2020 by 1914925 (3,070 points)
Prova a creare una lista con quattro zeri all'inizio, nel caso tu creassi una lista vuota all'inizio. E vedi se magari in questi casi invece di none ritorna la lista con solo i quattro zeri.
g
giacomo_venturini (6680 points)
2 5 39
answered Oct 25, 2020 by giacomo_venturini (6,680 points)
Potrebbe essere che il codice s'interrompe senza arrivare al return della lista, soprattutto se questo return è dentro una condizione, e quindi non c'è effettivamente nulla di ritornato dalla funzione nel caso di condizione non verificata.
andrea.sterbini (172680 points)
511 927 1776
answered Oct 25, 2020 by andrea.sterbini (172,680 points)
controlla di aver eseguito in ogni caso la istruzione return.

Se non viene eseguita la funzione torna None
nick98 (700 points)
3 11 14
commented Oct 25, 2020 by nick98 (700 points)
ok grazie , c' era un caso in cui il ciclo si interrompeva per un errore di sintassi e quindi non ritornava alcun valore.