Questa potrebbe essere una domanda facile a cui rispondere, ma non riesco a far funzionare questo semplice programma e mi sta facendo impazzire. Ho questo codice:Perché la mia funzione restituisce None?
def Dat_Function():
my_var = raw_input("Type \"a\" or \"b\": ")
if my_var != "a" and my_var != "b":
print "You didn't type \"a\" or \"b\". Try again."
print " "
Dat_Function()
else:
print my_var, "-from Dat_Function"
return my_var
def main():
print Dat_Function(), "-From main()"
main()
Ora, se inserisco solo "a" o "b", tutto va bene. L'output è:
Type "a" or "b": a
a -from Dat_Function
a -From main()
Ma, se digito qualcosa di diverso e quindi "a" o "b", ottengo questo:
Type "a" or "b": purple
You didn't type "a" or "b". Try again.
Type "a" or "b": a
a -from Dat_Function
None -From main()
non so il motivo per cui Dat_Function()
sta tornando None
, dal momento che dovrebbe restituire solo my_var
. L'istruzione print mostra che my_var
è il valore corretto, ma la funzione non restituisce quel valore per qualche motivo.
È necessario eseguire 'return Dat_Function()' quando lo si chiama in modo ricorsivo. –
Solo un suggerimento: il modo idiomatico di quella condizione 'my_var! =" A "e my_var! =" B "' sarebbe 'my_var non in ('a', 'b')' – gonz