").upper() if ans-6ren">
gpt4 book ai didi

python - 函数递归

转载 作者:太空宇宙 更新时间:2023-11-04 03:24:32 25 4
gpt4 key购买 nike

此处为初级程序员,使用 Python 2.7.10。我有这段代码:

def yesno():
answer = raw_input("(Y/N) > ").upper()
if answer == "Y":
return True
elif answer == "N":
return False
else:
yesno()

if yesno():
print("Yes")
else:
print("No")

如果不满足条件,我会尝试在自身内部调用该函数以“重新启动”它。我遇到的问题是,当我不止一次重新启动它时,它不会返回应有的值。比如我第一次输入“X”,第二次输入“Y”,最后还是打印“No”。有没有更好的方法在自身内部重启一个函数?

最佳答案

试试这个:

def yesno():
answer = raw_input("(Y/N) > ").upper()
if answer == "Y":
return True
elif answer == "N":
return False
else:
return yesno() # CHANGE IN THIS LINE.

if yesno():
print("Yes")
else:
print("No")

它应该可以工作。我刚刚测试了它。

解释:

当 if 语句第一次调用该函数时,它期望返回一个值。当第一个输入是 X 时,函数的流程到达 else 部分并再次调用 yesno() 以请求另一个输入。当用户输入 Y 时,它不会向调用它的 if 语句而是向第一个函数调用返回 TRUE。

这就变成了这样:

if answer == "Y":
return True
elif answer == "N":
return False
else:
True # Notice that the function is NOT returning this True.

因为,函数的第一次调用永远不会返回任何东西,你的 if 语句不会变为真。希望这有助于理解!

关于python - 函数递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33512795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com