[Python] typeError: missing 1 required positional argument
salve, non riesco a capire perché python restituisce un errore nel mio codice. riporto la traccia dell'esercizio:
"Data una matrice restituire la somma delle righe ma considerando le sole righe che non presentano elementi pari"
io ho sviluppato due funzioni, ecco il codice:
il problema è nella seconda funzione, perché se eseguo segnala il seguente errore:
ho cominciato da poco tempo a programmare ma mi sembra che l'errore di sopra segnali il fatto che non è presente la variabile "somma" nella seconda funzione, ma io l'ho dichiarata. significa questo l'errore "missing 1 required positional argument"? e se sì potreste aiutarmi a capire dove ho sbagliato?
grazie mille in anticipo
"Data una matrice restituire la somma delle righe ma considerando le sole righe che non presentano elementi pari"
io ho sviluppato due funzioni, ecco il codice:
def sommaRigaDispari (a): cont=0 for i in a: if i%2==0: return 0 else: cont+=i return cont def sommaTotale(mat, somma): if len (mat)==1: somma += sommaDispari (mat[0]) return somma else: somma += sommaRigaDispari (mat[0]) return sommaTotale(mat[1:]) mat= [[1,1,1],[2,5,7],[4,6,8]] somma=0 sommaTotale(mat, somma)
il problema è nella seconda funzione, perché se eseguo segnala il seguente errore:
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-39-cd94d5f1e263> in <module>() 21 mat= [[1,1,1],[2,5,7],[4,6,8]] 22 summ=0 ---> 23 sommaTotale(mat, summ) <ipython-input-39-cd94d5f1e263> in sommaTotale(mat, somma) 17 else: 18 somma += sommaRigaDispari (mat[0]) ---> 19 return sommaTotale(mat[1:]) 20 21 mat= [[1,1,1],[2,5,7],[4,6,8]] TypeError: sommaTotale() missing 1 required positional argument: 'somma'
ho cominciato da poco tempo a programmare ma mi sembra che l'errore di sopra segnali il fatto che non è presente la variabile "somma" nella seconda funzione, ma io l'ho dichiarata. significa questo l'errore "missing 1 required positional argument"? e se sì potreste aiutarmi a capire dove ho sbagliato?
grazie mille in anticipo
Risposte
La funzione [tt]sommaTotale[/tt] ha due argomenti, la matrice e la somma. Nella chiamata ricorsiva tu hai passato solo un argomento, il primo. Avresti anche dovuto passare la somma.
Grazie infinite
)
