Python 递归的替代方案?
我开始学习Python了。现在我正在创建一个CLI,它允许创建、查看或删除存储在SQLite 3DB中的联系人。问题是,每次我完成一项任务时,我都会再次调用main函数,以便用户可以做其他事情。代码如下所示:Python 递归的替代方案?,python,python-3.x,infinite-recursion,Python,Python 3.x,Infinite Recursion,我开始学习Python了。现在我正在创建一个CLI,它允许创建、查看或删除存储在SQLite 3DB中的联系人。问题是,每次我完成一项任务时,我都会再次调用main函数,以便用户可以做其他事情。代码如下所示: def main(self): print("What operation would you like to perform: Display contacts (1), add a new one (2), or remove one (3)?")
def main(self):
print("What operation would you like to perform: Display contacts (1), add a new one (2), or remove one (3)?")
option = int(input())
try:
if option == 1:
self.display()
self.main()
elif option == 2:
self.new()
self.main()
elif option == 3:
self.delete()
self.main()
except TypeError:
print("Please introduce a valid option")
sys.exit()
我很确定函数的连续调用会降低其性能,我认为递归函数的调用次数是有限制的,所以我应该如何再次调用main方法?在python中,没有“main function”或“main method”之类的东西。 如果你愿意的话,你可以读到,等等。 所以,如果我理解正确的话,您希望递归调用“main”方法。
您可以按如下方式计算此方法中的出现次数:
def main(self,count=):
在此之后,如果要调用此递归,请创建循环或仅求和“count”:
如果计数==:
返回
其他:
计数+=5
自主(计数)
关于递归调用,您是对的。它们可能很好,但迭代通常比递归好
要实现无限编程,您可以做很多事情,但对于cli来说,最简单的方法是将所有函数放在一个循环中
这有点难看,但是如果不每次都调用main()的话,它应该可以工作
def main(self):
again=True
while again:
print("What operation would you like to perform: Quit(0) Display contacts (1), add a new one (2), or remove one (3)?")
option = int(input())
if option == 0:
again=False
if option == 1:
self.display()
self.main()
elif option == 2:
self.new()
self.main()
elif option == 3:
self.delete()
self.main()
else:
print("Please introduce a valid option")
话虽如此,您仍然需要调用main()您可以使用参数库,如或 这里的主要目标是管理循环中的选项并一次调用所有选项。例:
$python3./script.py-123使用循环重复
main
的所有内容,而option==1
您的except
子句将永远不会被命中。您是否希望选项=int(input())
行位于try
内?你知道,你真的不需要承担例外的费用。如果option='1':则可以说并跳过到整数的转换。continue
是一个关键字,不能用作变量名或表达式。continue=True
是语法错误,continue
是一个关键字耶,忘了这一点。要编辑。你的代码中仍然有continue
关键字,在continue=False
我没有投反对票,但听起来OP的要求正好相反,即在这里如何不使用递归