1 回答

TA貢獻1785條經驗 獲得超8個贊
因此,我認為,將您的選擇打包到字典中,類似于下面所示的那樣,應該會更容易管理這里的選擇(幾乎肯定有比這更好的方法)。然后每次做出選擇時添加到空字符串并嘗試訪問字典。如果選擇在字典中,那么它將恢復一個文本字符串和一個結束狀態,這將使我們能夠在需要時結束游戲。
這種方法還可以生成所有可能的狀態組合,從而使測試變得更加容易itertools,以便您可以找出缺少的狀態。如果找到 end_state(元組第二個位置的值為 1),那么您將收到游戲結束消息并關閉循環。如果該元素不在字典中,則刪除最后一個選擇并invalid_input調用該函數。
def test():
choice_dict = {"a": (dP_lvl1.path_a, 0),
"b": (dP_lvl1.path_b, 0),
"c": (dP_lvl1.path_c, 1)
"bb": (dP_lvl2.path_bb, 0),
"aa": (dP_lvl2.path_aa, 0),
"ba": (dP_lvl2.path_ba, 0),
"ab": (dP_lvl2.path_ab, 0),
"aaa": (dP_lvl3.path_aaa, 0),
"aab": (dP_lvl3.path_aab 0),
"aba": (dP_lvl3.path_aba, 0),
"abb": (dP_lvl3.path_abb, 0),
"bab": (dP_lvl3.path_bab, 0),
"bba": (dP_lvl3.path_bba} 0),
"bbb": (dP_lvl3.path_bbb, 0),
"aaaa": (dP_lvl4.path_aaaa, 0),
"abaa": (dP_lvl4.path_abaa, 0),
"aaba": (dP_lvl4.path_aaba, 0),
"aaab": (dP_lvl4.path_aaab, 1),
"bbba": (dP_lvl4.path_bbba, 0),
"bbab": (dP_lvl4.path_bbab, 0),
"babb": (dP_lvl4.path_babb, 0),
"abbb": (dP_lvl4.path_abbb, 0),
"abba": (dP_lvl4.path_abba, 1),
"abab": (dP_lvl4.path_abab, 0),
"aabb": (dP_lvl4.path_aabb, 0),
"baab": (dP_lvl4.path_baab, 0),
"bbaa": (dP_lvl4.path_bbaa, 1),
"baba": (dP_lvl4.path_baba, 0),
"baaa": (dP_lvl4.path_baaa, 0),
"bbbb": (dP_lvl4.path_bbbb, 0),}
# etc. you get the idea
decisions = ""
playing = True
while playing:
decision = input("choose an option 'a' or 'b':")
decisions += decision
try:
data, end_state = choice_dict[decisions]
print(data)
if end_state:
playing = False
print("Game over")
else:
continue
except KeyError:
decisions = decisions[:-1]
invalid_input()
添加回答
舉報