python-3.x - 带参数的函数。RecursionError:比较超过最大递归深度
问题描述
我正在使用函数和参数,甚至在内部调用函数时使用简单的代码我收到如下错误:第 7 行,如果 ask == 'yes': RecursionError: maximum recursion depth exceeded in comparison
如果我输入:是的答案,是的,它工作正常,但是当我输入:否并且函数在 else 语句下面被调用时,我得到错误:第 5 行,有问题 if ask == 'yes': RecursionError: maximum recursion depth exceeded相比下
我做错了什么?顺便说一句,我搜索了这个问题并没有解决问题 sys.setrecursionlimit(5000) 并且仍然出现错误:
ask = input("Are you OK?:").lower()
asked = ask
def question(n):
if ask == 'yes':
return n
else:
question(n)
print (question(asked))
我尝试了另一种方式:
def question():
ask = input("Are you OK?:").lower()
if ask != 'yes':
question()
else:
return ask
print(question())
但在这段代码中,它只有在我立即回答“是”时才有效,如果我第一次回答“否”,它会按预期再次询问,当我第二次回答“是”时,它会返回并打印:NONE。
解决方案
question()
在每次通话中都提出一个新问题。print(question())
只关心第一个问题的答案。当您输入No
第一个问题时,question()
称为询问第二个问题,然后返回None
您的第一个问题。之后的任何答案都只是提出新问题if ask != yes
或返回该问题的结果,if ask == yes
但不影响第一个问题的None
返回。
除了不断提出新问题,您可以使用 while 循环不断为同一个问题提出新的答案,直到满足条件:
def question():
ask = input("Are you OK?:").lower()
while ask != 'yes':
ask = input("Are you OK?:").lower()
return ask
print(question())
推荐阅读
- python - Pyramid:根据用户状态覆盖路由规则
- wpf - 在自定义 XamDataGrid 上应用控件模板
- windows-10 - Powershell GPO 启动脚本不适用于删除 Microsoft 商店应用程序
- python - Rasa 处理多个时间实体
- php - 算法:如何生成 2 个滑块数组避免重复
- ruby-on-rails - case 语句在 erb 部分中不起作用
- database - Moodle成绩册导出
- elasticsearch - 在 Elasticsearch Head Extension 中查询 Elasticsearch 以仅返回 1 个数据
- javascript - 在弹出窗口中定位尚未在 dom 中的元素
- node.js - 如何以简单的方式强制结束 Response() ExpressJS?(NodeJS)