python - Python:单击所有可能(更改)的菜单组合
问题描述
我有 3 个菜单,每个菜单取决于后续菜单选择(menu_3
取决于menu_2
选择,menu_2
取决于menu_1
选择)。我试图通过单击最后一个菜单来获得所有可能的组合,然后遍历选项。然后返回menu_2
,选择下一项,并遍历所有新menu_3
选项。我不断地创建一个无限循环/无限递归,或者我完成一次迭代并停止。
(我在一个网站上这样做,所以我没有继续向该网站发送请求,而是尝试在本地完成它。)
这是我目前所处的位置,它正在创建无限递归:
menu_1 = ['apple', 'orange', 'banana']
menu_2 = ['cat', 'dog', 'bird', 'fish']
menu_3 = ['red', 'orange', 'yellow', 'green', 'blue']
menu_names = ['menu 1', 'menu 2', 'menu 3']
menus = [menu_1, menu_2, menu_3]
def recursion_testing(depth = len(menus) - 1, count = 0):
for i in range(depth):
print('count: ' + str(count))
if count == depth:
print('menu: ' + menu_names[count])
for j in range(len(menus[count])):
print(menus[count][j])
count = 0
else:
return recursion_testing(depth, count+1)
recursion_testing()
最终,我的输出将是当您单击 、 等时显示的列表red
。orange
如果我可以让这个小测试输出类似这样的内容,我可以找出最后一点:
'apple'
'cat'
'red'
'orange'
'yellow'
'green'
'blue'
'apple'
'dog
'red'
'orange'
'yellow'
'green'
'blue'
...ETC。
解决方案
您不需要递归来获得这些菜单的所有可能性,因为它们的数量是有限的:
allOptions = []
for mi1 in menu_1:
for mi2 in menu_2:
for mi3 in menu_3:
allOptions.append( (mi1, mi2, mi3) )
这为您提供了所有可能的长度为 3 的菜单组合。
推荐阅读
- java - Selenium Chrome WebDriver - 如何在重定向登录站点上登录“您的连接不是私有的”
- laravel - wkhtmltopdf + Highcart 导出问题
- javascript - 对象的反应过滤器数组
- c# - 我正在尝试索引字典,但我不知道如何。我正在尝试以“费率”访问数据,但似乎无法进入
- java - stripAccents 上的泰语
- canvas - 画布路由错误(未初始化的常量 Lti::Ims::NamesAndRolesController::Concerns)
- python - 如何将 OpenCV 导入 python
- angular - 将时间戳日期转换为带有月份名称的正确日期格式
- android - PagedList 已弃用
- html - 使用传单彼此之间的三个按钮