【发布时间】:2013-07-22 00:29:02
【问题描述】:
我有这个调用自己的函数:
def get_input():
my_var = input('Enter "a" or "b": ')
if my_var != "a" and my_var != "b":
print('You didn\'t type "a" or "b". Try again.')
get_input()
else:
return my_var
print('got input:', get_input())
现在,如果我只输入“a”或“b”,一切正常:
Type "a" or "b": a
got input: a
但是,如果我输入其他内容,然后输入“a”或“b”,我会得到:
Type "a" or "b": purple
You didn't type "a" or "b". Try again.
Type "a" or "b": a
got input: None
我不知道为什么get_input() 会返回None,因为它应该只返回my_var。这个None 来自哪里?如何修复我的功能?
【问题讨论】:
-
递归调用时需要
return Dat_Function()。 -
提示:
my_var != "a" and my_var != "b"条件的惯用方式是my_var not in ('a', 'b') -
@gonz 不一定。现在你在堆上分配一个元组只是为了做一个简单的比较。在关键路径上可能会很痛苦,而且它的可读性并不高,真的。
标签: python function recursion return