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.

return dentro un else

M
Matt_Ruggiero (2380 points)
16 39 45
in Programmare in Python by (2.4k points)
closed by
è normale che un return non funzioni dentro un else? ho provato a mettere un print e quello funziona
782 views
closed with the note: (bastava togliere l'else)

2 Answers

Best answer
giorgio.belli (10140 points)
24 74 98
by (10.1k points)
selected by
Ciao, se lo stai implementando in una funzione ricorsiva prova a vedere se al livello superiore ti prima il return di quella funzione.
Non so se riesco a spiegarmi correttamente, però non credo che il problema sia al livello del return ma al livello prima di arrivare al return, dunque prova a scrivere print(funz_che_genera_return) e vedi se restituisce true o None. In caso di None il return non sta funzionando.
Spero tu abbia capito e risolverai il problema.
Buon code! (rofl)
M
Matt_Ruggiero (2380 points)
16 39 45
by (2.4k points)
effettivamente sto usando una ricorsiva ma la funzione è del tipo
codice
...
...
if condizione:
ricorsiva
else:
return

è questo che mi crea problemi?
andrea.sterbini (207940 points)
756 1270 2377
by (208k points)
ma return cosa?
e soprattutto, che ne fai del valore tornato dalla chiamata ricorsiva?
giorgio.belli (10140 points)
24 74 98
by (10.1k points)
ok prova ad aggiungere il print quando richiami la ricorsiva in questo modo:

if condizione:
print(ricorsiva)
else:
return True
M
Matt_Ruggiero (2380 points)
16 39 45
by (2.4k points)
il return è di un dizionario generato durante la funzione, adesso provo con il print
M
Matt_Ruggiero (2380 points)
16 39 45
by (2.4k points)
il risultato è una prima linea con il risultato che voglio ottenere dalla funzione e poi tre volte none
GeraldCaba (2920 points)
6 20 28
by (2.9k points)
sei sicuro di avere l indentazione corretta?:

else:

---- return()
M
Matt_Ruggiero (2380 points)
16 39 45
by (2.4k points)
sisi ho la controprova poichè sostituendo al return un print mi stampa correttamente il risultato
andrea.sterbini (207940 points)
756 1270 2377
by (208k points)
ma torni un valore?
che intendi che non funziona? esegue le istruzioni dopo la fine dell'if?