亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在收到無效輸入后,如何阻止程序跳轉到不同的 if 語句?

在收到無效輸入后,如何阻止程序跳轉到不同的 if 語句?

鴻蒙傳說 2023-10-18 15:29:31
作為我自己的第一個程序,我編寫了一個文本游戲,您可以在其中輸入(a)或(b)并以這種方式決定您的角色做出哪個決定。效果很好,但我有一個問題。例如,如果用戶在第一個決策中輸入“a”,在第二個決策中輸入“b”,但在第三個決策中輸入無效的內容,則下一個有效輸入將再次觸發第一個決策,而不是第三個決策。我試圖制作一個簡短的版本來描述我的問題。任何幫助表示贊賞。def test():    while True:        input_zero = input("1. > ")        if input_zero == "a":            print("a")            input_a = input("2. > ")            if input_a == "a":                print("a, a")                break            elif input_a == "b":                print("a, b")                break            else:                print("Invalid input.")        elif input_zero == "b":            print("b")            input_b = input("2. > ")            if input_b == "a":                print("b, a")                break            elif input_b == "b":                print("b, b")                break            else:                print("Invalid input.")        else:            print("Invalid input.")test()
查看完整描述

1 回答

?
慕的地10843

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()

    


查看完整回答
反對 回復 2023-10-18
  • 1 回答
  • 0 關注
  • 102 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號