Forum >> Principianti >> Problema Funzione e liste

Pagina: 1

Ciao,
mi sto rimettendo dopo alcuni anni a programmare ed ho scelto python come linguaggio.

Sto svolgendo alcuni esercizi e non riesco a comprendere un valore in uscia ad una funzione che mi dovrebbe generare una lista.




Traduco, ho creato una funzione divisore che immettendo in ingresso un valore intero mi calcola la lista di tutti i fattori primi che lo dividono.

Inserendo manualmente il valore tutto funziona correttamente.

Creando invece un loop nella funzione main l'output è il seguente:

Come mai appare l'ultimo valore in rosso e cosa significa? :confused: :confused: :confused:

Grazie

valore totale immesso: 20
valore totale immesso: 10
valore totale immesso: 5
valore totale immesso: 1
lista divisori [1, 2, 2, 5, 1, [...]]


def divisore(tot,list_divisori):
print('valore totale immesso:',tot)
list_num_primi=[2, 3, 5, 7, 11, 13, 17, 19]
if tot!=1:
for x in list_num_primi:
if tot%x == 0:
tot =int(tot/x)
#print('nuovo tot',tot)
list_divisori.append(x)
divisore(tot, list_divisori)
break
else:
list_divisori.append(1)

return (list_divisori)



def main():
for i in range(2,21):
lista_divisori=[]
lista_divisori.append(divisore(i,lista_divisori))
print('lista divisori', lista_divisori)


if __name__ == '__main__':
main()


Per cortesia, quando posti il codice usa il pulsante "code" (quello con le "<>") per formattarlo... così possiamo vedere i rientri e capire dove sta il problema....
risolto in facebook grazie... lo avevo usato ma lo ha formattato male... ecco il codice corretto:
https://repl.it/@BrunoDel/WiltedShabbyWordprocessor?fbclid=IwAR270DkMedrKVuddaPA9HS68MP-GqdgwiDjhFRBtShulolQcCZ9m2jhlOko






def divisore(tot,list_divisori):

list_num_primi=[2, 3, 5, 7, 11, 13, 17, 19]

if tot != 1:

for x in list_num_primi:

if tot % x == 0:

tot =int(tot/x)

list_divisori.append(x)

divisore(tot, list_divisori)

break

return list_divisori


def main():

lista_divisori=[]

for i in range (2,20):

lista_divisori.append(divisore(i,1))


print (lista_divisori)


if __name__ == '__main__':

main()





Pagina: 1



Esegui il login per scrivere una risposta.