我是编程的新手,所以我要问的更多是关于如何处理特定问题的建议/指导,而不是要求特定的代码建议。
我正在尝试创建一个软件,当从控制台运行该软件时,它会询问用户是否选择“ a”,“ b”或“ c”。做出选择后,它将结果保存到一个空列表(将使用.append),并根据之前做出的选择,将为用户分支/呈现新选项供您选择。当他们到达决策过程的最后时,它将打印列表,以便用户可以看到他们的选择。
我一直把它像决策树一样思考,并为我制作了一个相当糟糕的图表,以帮助概念化它的结构和规则(例如,选项/选择流入什么)。
如果您单击链接,则可以看到该图。基本上,我在考虑创建一个非常长且丑陋的if-elif-else链,其中包含一些嵌套的if语句,该链将使用条件逻辑,这些条件逻辑将根据用户先前选择的内容为用户提供某些选项。例如,要进入“ c3”,您需要做的就是在开始处选择C,然后遵循c1-> c2-> c3的链。这是一个非常线性的过程。但是,如果您想到达“ ab2”,则用户可以通过以下两种方式到达那里:A-> a2-> ab1-> ab2 或 B-> b1-> ab1-> ab2;具有更多动态变化。
您将如何构建它?我应该考虑是否有任何特定的事物/概念,例如在While循环的函数中创建此事物/概念,或者可能使用字典而不是空的List?
我知道这种问题在这里是否不是标准问题,因此被否决。但这是一个基于我的想法的程序设计项目,任何使我思考正确的信息都将受到赞赏。
答案 0 :(得分:0)
我会用字典来组织它,将每个位置与您可以在其中做出的选择联系起来:
exits = {'A' : {'a' : 'A1',
'b' : 'A2'},
'B' : {'a' : 'b1',
'b' : 'b2'}
...
}
对于每个位置,您都提供了可能的选择以及该选择将您带到何处,您可以使用地方词典中的键确定下一步可以做什么。
在每次迭代中,您都向用户展示他当时可以做的选择
choices = exits[current_location]
然后您更新职位
current_location = exits[current_location][user_choice]