To może być łatwe pytanie, ale nie mogę uruchomić tego prostego programu i doprowadza mnie to do szału. Mam ten fragment kodu:Dlaczego moja funkcja zwraca Brak?
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()
Teraz, jeśli wprowadzę tylko "a" lub "b", wszystko jest w porządku. Wyjście jest:
Type "a" or "b": a
a -from Dat_Function
a -From main()
Ale jeśli wpisuję coś innego, a następnie "A" lub "B", mam to:
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()
nie wiem dlaczego Dat_Function()
wraca None
, ponieważ powinien zwracać tylko my_var
. Instrukcja print pokazuje, że my_var
jest poprawną wartością, ale funkcja nie zwraca tej wartości z jakiegoś powodu.
Powinieneś zrobić 'return Dat_Function()' podczas wywoływania go rekursywnie. –
Tylko wskazówka: idiomatyczny sposób tego warunku 'my_var! =" A "i my_var! =" B "' byłby następujący: my_var nie jest ("a", "b") ' – gonz