Das mag eine einfache Frage zu beantworten sein, aber ich kann dieses einfache Programm nicht funktionieren und es macht mich verrückt. Ich habe dieses Stück Code:Warum gibt meine Funktion None zurück?
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()
Nun, wenn ich nur Eingang „a“ oder „b“, alles in Ordnung ist. Die Ausgabe lautet:
Type "a" or "b": a
a -from Dat_Function
a -From main()
Aber, wenn ich etwas anderes und dann "a" oder "b" eingeben, bekomme ich diese:
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()
Ich weiß nicht, warum Dat_Function()
ist None
Rückkehr da es nur my_var
zurückgeben sollte. Die print-Anweisung zeigt an, dass my_var
der richtige Wert ist, aber die Funktion gibt diesen Wert aus irgendeinem Grund nicht zurück.
Sie müssen 'Dat_Function()' zurückgeben, wenn Sie es rekursiv aufrufen. –
Nur ein Tipp: Der idiomatische Weg dieser 'my_var! =" A "und my_var! =" B "' Bedingung wäre 'my_var nicht in ('a', 'b')' – gonz