gpt4 book ai didi

python - 如何展平全部包含字符串的嵌套 IF 语句?

转载 作者:行者123 更新时间:2023-11-28 16:32:15 27 4
gpt4 key购买 nike

我正在制作一个“选择你自己的文字冒险”游戏,到目前为止,它包含太多的嵌套。示例代码如下 = 我的格式相同,只是嵌套更多——有时接近 10 层深。

我的问题是:有什么方法可以压平它?字符串意味着我需要每个 IF 语句在每次有效时打印一些内容,所以我不能像这样使用“AND”:

if A and B:
do something
elif C and D:
do something else

我考虑过将重复的部分放在它们自己的函数中,但在这种情况下这不会提高可读性 - 至少,我无法弄清楚。

帮忙吗?

print "First String"
choice = raw_input("Choose A or B")
if choice == "A":
print "You Chose A"
choice = raw_input("Choose C or D")
if choice == "C":
print "You Chose C"
choice = raw_input("Choose E or F")
if choice == "E" or choice == "F":
print "END"
elif choice == "D":
print "You Chose D"
choice = raw_input("Choose G or H")
if choice == "G" or choice == "H":
print "END"
elif choice == "B":
print "You Chose B"
choice = raw_input("Choose I or J")
if choice == "I":
print "You Chose I"
choice = raw_input("Choose C or D")
if choice == "C":
print "You Chose C"
choice = raw_input("Choose E or F")
if choice == "E" or choice == "F":
print "END"
elif choice == "D":
print "You Chose D"
choice = raw_input("Choose G or H")
if choice == "G":
print "END"
elif choice == "H":
print "You Chose H"
choice = raw_input("Choose K or L")
if choice == "K" or choice == "L":
print "END"

最佳答案

如果映射很简单,比如说,如果我先选择 A,我可以选择 C ​​或 D,如果我先选择 B,我可以选择 C ​​或 E。现在在 C 中,无论第一个是选择是A或B,你得到的选择是一样的。然后你可以使用递归和字典,比如 -

dict = {'-1':['A','B'], 'A' : ['C','D'] , 'B':['I','J'], 'C':['E','F'] ..}

然后是一个递归函数,比如 -

def choose(previousChoice, num):
print str(num) + " String"
choice = raw_input("Choose " + ' or '.join(dict[previousChoice]) + " :")
if dict.get(choice) != None and len(dict.get(choice)) > 0:
choose(choice, num + 1)

在上面的例子中,你开始于 -

choose('-1',1)

关于python - 如何展平全部包含字符串的嵌套 IF 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30748797/

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