Python Создаю текстовую игру, питон всё равно ругается ошибка происходит если выбираю сначала 1 ответ затем 2 или 3, дальше диалог ломается

print("Хотите начать игру? (Да/Нет)")
play = input("")

if(play == 'Да'):
    print()

    print("Я видел какой-то сон, кто-то тянулся к синему кристалу")
    print("Потом стало темно")
    print("Мне кажется я здесь не один...")
    print()

    print("S.T.A.L.K.E.R")

    while True:
        print()
        print("Диалог")
        print("{")
        print("       Вадим: Мда, интересно как тебя сюда занесло")
        print()
        print("/// Выберете ответ(1/2/3...) ///")
        print("/// 1.Где я? ///")
        VadikDialogStarted1 = input("")
        print()

        while True:
            if (VadikDialogStarted1 == "1"):
                print("       Вы: Где я?")
                print("       Вадим: Ты в Зоне. Как тебя звать?")
                print()
                print("/// Выберете ответ(1/2/3...) ///")
                print("/// 1.В какой зоне? ///")
                print("/// 2.А как тебя? ///")
                print("/// 3.Я не помню своего имени.")
                VadikDialogStarted2 = input("")
                print()
            else:
                break

            while True:
                if (VadikDialogStarted2 == "1"):
                    print("       Вы: В какой зоне?")
                    print("       Вадим: Всмысле в какой? В Зоне Очуждения.")
                    print()
                    print("/// Выберете ответ(1/2/3...) ///")
                    print("/// 1.В ЗОНЕ ОЧУЖДЕНИЯ?! ///")
                    VadikDialogStarted3 = input("")
                    print()

                elif (VadikDialogStarted2 == "2"):
                    print("       Вы: А как тебя?")
                    print("       Вадим: Вадим.")
                    print()
                    print("/// Выберете ответ(1/2/3...) ///")
                    print("/// 1.Приятно позакомится. ///")
                    Vadik_Dialog_Nice_to_meet_you = input("")
                    print()

                elif (VadikDialogStarted2 == "3"):
                    print("       Вы: Я не помню своего имени.")
                    print(
                        "       Вадим: Мда, плохи дела. Ну нечего, следуй за мной. Я покажу тебе дорогу в уромное местечко. Отсюда недалеко.")
                    print()
                    print("/// Выберете ответ(1/2/3...) ///")
                    print("/// 1.Ну пойдём. ///")
                    Vadik_dialog_Idem_to_the_village = input("")
                    print()
                else:
                    break

                while True:
                    if (VadikDialogStarted3 == "1"):
                        print("       Вы: В ЗОНЕ ОЧУЖДЕНИЯ?!")
                        print("       Вадим: Ну да.")
                        print()
                        print("/// Выберете ответ(1/2/3...) ///")
                        print("/// 1.Во попал! ///")
                        VadikDialogStarted4 = input("")
                        print()

                    elif (Vadik_Dialog_Nice_to_meet_you == "1"):
                        print("       Вы: Приятно познакомится")
                        print("       Вадим: Так как тебя зовут?")
                        print()
                        print("/// Выберете ответ(1/2/3...) ///")
                        print("/// 1.Не помню! ///")
                        print("/// 1.Я помню только 3 первых буквы 'Бро...'")
                        Vadik_Dialog_I_dont_remember = input("")
                        print()

                    elif (Vadik_dialog_Idem_to_the_village == "1"):
                        print("       Вы: Ну пойдём")
                        print("       Вадим: Следуй за мной")
                        print("}")
                        print()
                        print("A.Следовать за Вадиком")
                        print("B.Поговорить")
                        QuestStarted1 = input("Действие:")
                    else:
                        break

                    while True:
                        if (VadikDialogStarted4 == "1"):
                            print("       Вы: Во попал!")
                            print("       Вадим: Пошли за мной. Покажу укромное местечко.")
                            print()
                            print("/// Выберете ответ(1/2/3...) ///")
                            print("/// 1.Ну пойдём ///")
                            VadikDialogStarted5 = input("")
                            print()

                        elif (Vadik_Dialog_I_dont_remember == "1"):
                            print("       Вы: Не помню!")
                            print("       Вадим: Какой-то ты раздражительный.")
                            print()
                            print("/// Выберете ответ(1/2/3...) ///")
                            print("/// 1.А ты как думал? Голова пухнет, нечего не помню. ///")
                            print("/// 2.... ///")
                            Vadik_Dialog_is_Irritable = input("")
                        else:
                            break

                        while True:
                            if (VadikDialogStarted5 == "1"):
                                print("       Вы: Ну пойдём")
                                print("}")
                                print()
                                print("A.Следовать за Вадиком")
                                print("B.Поговорить")
                                QuestStarted1 = input("Действие:")

                            elif (Vadik_Dialog_is_Irritable == "1"):
                                print("       Вы: А ты как думал? Голова пухнет, нечего не помню.")
                                print("       Вадим: Ну ладно. Пойдём за мной, я знаю место где можно отдохнуть.")
                                print()
                                print("/// Выберете ответ(1/2/3...) ///")
                                print("/// 1.Пойдём. ///")

                            elif (Vadik_Dialog_is_Irritable == "2"):
                                print("       Вы: ...")
                                print("       Вадим: Пойдём за мной, я знаю место где можно отдохнуть.")
                                print()
                                print("/// Выберете ответ(1/2/3...) ///")
                                print("/// 1. Пошли. ///")
                                Vadik_Dialog_Idem_to_the_village2 = input("")
                            else:
                                break

                                while True:
                                    if (Vadik_Dialog_Idem_to_the_village2 == "1"):
                                        print("       Вы: Пошли")
                                        print("}")
                                        print()
                                        print("A.Следовать за Вадиком")
                                        QuestStarted1 = input("Действие:")
                                    else:
                                        break

elif(play == 'да'):
    print()

    print("Я видел какой-то сон, кто-то тянулся к синему кристалу")
    print("Потом стало темно")
    print("Мне кажется я здесь не один...")
    print()

    print("S.T.A.L.K.E.R")

    while True:
        print()
        print("Диалог")
        print("{")
        print("       Вадим: Мда, интересно как тебя сюда занесло")
        print()
        print("/// Выберете ответ(1/2/3...) ///")
        print("/// 1.Где я? ///")
        VadikDialogStarted1 = input("")
        print()

        while True:
            if(VadikDialogStarted1 == "1"):
                print("       Вы: Где я?")
                print("       Вадим: Ты в Зоне. Как тебя звать?")
                print()
                print("/// Выберете ответ(1/2/3...) ///")
                print("/// 1.В какой зоне? ///")
                print("/// 2.А как тебя? ///")
                print("/// 3.Я не помню своего имени.")
                VadikDialogStarted2 = input("")
                print()
            else:
                break

            while True:
                if (VadikDialogStarted2 == "1"):
                    print("       Вы: В какой зоне?")
                    print("       Вадим: Всмысле в какой? В Зоне Очуждения.")
                    print()
                    print("/// Выберете ответ(1/2/3...) ///")
                    print("/// 1.В ЗОНЕ ОЧУЖДЕНИЯ?! ///")
                    VadikDialogStarted3 = input("")
                    print()

                elif (VadikDialogStarted2 == "2"):
                    print("       Вы: А как тебя?")
                    print("       Вадим: Вадим.")
                    print()
                    print("/// Выберете ответ(1/2/3...) ///")
                    print("/// 1.Приятно позакомится. ///")
                    Vadik_Dialog_Nice_to_meet_you = input("")
                    print()

                elif (VadikDialogStarted2 == "3"):
                    print("       Вы: Я не помню своего имени.")
                    print("       Вадим: Мда, плохи дела. Ну нечего, следуй за мной. Я покажу тебе дорогу в уромное местечко. Отсюда недалеко.")
                    print()
                    print("/// Выберете ответ(1/2/3...) ///")
                    print("/// 1.Ну пойдём. ///")
                    Vadik_dialog_Idem_to_the_village = input("")
                    print()
                else:
                    break

                while True:
                    if (VadikDialogStarted3 == "1"):
                        print("       Вы: В ЗОНЕ ОЧУЖДЕНИЯ?!")
                        print("       Вадим: Ну да.")
                        print()
                        print("/// Выберете ответ(1/2/3...) ///")
                        print("/// 1.Во попал! ///")
                        VadikDialogStarted4 = input("")
                        print()

                    elif (Vadik_Dialog_Nice_to_meet_you == "1"):
                        print("       Вы: Приятно познакомится")
                        print("       Вадим: Так как тебя зовут?")
                        print()
                        print("/// Выберете ответ(1/2/3...) ///")
                        print("/// 1.Не помню! ///")
                        print("/// 1.Я помню только 3 первых буквы 'Бро...'")
                        Vadik_Dialog_I_dont_remember = input("")
                        print()

                    elif (Vadik_dialog_Idem_to_the_village == "1"):
                        print("       Вы: Ну пойдём")
                        print("       Вадим: Следуй за мной")
                        print("}")
                        print()
                        print("A.Следовать за Вадиком")
                        print("B.Поговорить")
                        QuestStarted1 = input("Действие:")
                    else:
                        break

                    while True:
                        if (VadikDialogStarted4 == "1"):
                            print("       Вы: Во попал!")
                            print("       Вадим: Пошли за мной. Покажу укромное местечко.")
                            print()
                            print("/// Выберете ответ(1/2/3...) ///")
                            print("/// 1.Ну пойдём ///")
                            VadikDialogStarted5 = input("")
                            print()

                        elif (Vadik_Dialog_I_dont_remember == 1):
                            print("       Вы: Не помню!")
                            print("       Вадим: Какой-то ты раздражительный.")
                            print()
                            print("/// Выберете ответ(1/2/3...) ///")
                            print("/// 1.А ты как думал? Голова пухнет, нечего не помню. ///")
                            print("/// 2.... ///")
                            Vadik_Dialog_is_Irritable = input("")
                        else:
                            break

                        while True:
                            if (VadikDialogStarted5 == "1"):
                                print("       Вы: Ну пойдём")
                                print("}")
                                print()
                                print("A.Следовать за Вадиком")
                                print("B.Поговорить")
                                QuestStarted1 = input("Действие:")

                            elif (Vadik_Dialog_is_Irritable == "1"):
                                print("       Вы: А ты как думал? Голова пухнет, нечего не помню.")
                                print("       Вадим: Ну ладно. Пойдём за мной, я знаю место где можно отдохнуть.")
                                print()
                                print("/// Выберете ответ(1/2/3...) ///")
                                print("/// 1.Пойдём. ///")

                            elif (Vadik_Dialog_is_Irritable == "2"):
                                print("       Вы: ...")
                                print("       Вадим: Пойдём за мной, я знаю место где можно отдохнуть.")
                                print()
                                print("/// Выберете ответ(1/2/3...) ///")
                                print("/// 1. Пошли. ///")
                                Vadik_Dialog_Idem_to_the_village2 = input("")
                            else:
                                break

                                while True:
                                    if (Vadik_Dialog_Idem_to_the_village2 == "1"):
                                        print("       Вы: Пошли")
                                        print("}")
                                        print()
                                        print("A.Следовать за Вадиком")
                                        QuestStarted1 = input("Действие:")
                                    else:
                                        break

elif(play == 'Нет'):
    print()
    print("Конец игры")

elif (play == 'нет'):
    print()
    print("Конец игры")

else:
    print()
    print("Конец Игры")

Ответы (1 шт):

Автор решения: GrAnd

Ну вот примерно так это может выглядеть.
В словаре описываются стадии квеста: какой текст выводить, тип действия, варианты ответов и метки перехода (ключи словаря) куда надо перейти в случае выбора конкретного ответа.
Ну а в функции происходит централизованная обработка текущей стадии квеста: анимированный вывод, нумерация списка ответов, проверка на корректность ввода номера ответа, повтор вашего ответа, переход к следующей стадии квеста.

import time

QUEST = {
"intro"         : ("""
Я видел какой-то сон, кто-то тянулся к синему кристалу
Потом стало темно
Мне кажется я здесь не один...

S.T.A.L.K.E.R
""", "goto", "meet_vadim"
),
"meet_vadim"    : ("""
\tВадим: Мда, интересно как тебя сюда занесло
""", "question", {"Где я?"                  : "vadik1"}
),
"vadik1"        : ("""
\tВадим: Ты в Зоне. Как тебя звать?
""", "question", {"В какой зоне?"           : "vadik2",
                  "А как тебя?"             : "vadik3",
                  "Я не помню своего имени.": "vadik4"}
),
"vadik2"        : ("""
\tВадим: Всмысле в какой? В Зоне Очуждения.
""", "question", {"В ЗОНЕ ОЧУЖДЕНИЯ?!"      : "vadik5"}
),
"vadik3"        : ("""
\tВадим: Вадим.
""", "question", {"Приятно позакомится."    : "vadik6"}
),
"vadik4"        : ("""
\tВадим: Мда, плохи дела. Ну нечего, следуй за мной. 
\t       Я покажу тебе дорогу в уромное местечко. Отсюда недалеко.
""", "question", {"Ну пойдём."              : "vadik7"}
),
"vadik5"        : ("""
\tВадим: Ну да.
""", "question", {"Во попал!"               : "vadik8"}
),
"vadik6"        : ("""
\tВадим: Так как тебя зовут?
""", "question", {"Не помню!"               : "vadik9",
                  "Я помню только 3 первых буквы 'Бро...'" : "vadik11"}
),
"vadik7"        : ("""
\tВадим: Следуй за мной.
""", "action",   {"Следовать за Вадиком"    : "go_vadik",
                  "Поговорить"              : "speak_vadik"}
),
"vadik8"        : ("""
\tВадим: Пошли за мной. Покажу укромное местечко.
""", "question", {"Ну пойдём"               : "vadik_go_act"}
),
"vadik9"        : ("""
\tВадим: Какой-то ты раздражительный.
""", "question", {"А ты как думал? Голова пухнет, нечего не помню." : "vadik12",
                  "...."                    : "vadik13"}
),
"vadik_go_act"   : ("""
""", "action",   {"Следовать за Вадиком"    : "go_vadik",
                  "Поговорить"              : "speak_vadik"}
),
"vadik11"        : ("""
\tВадим: Сочувствую. Ну ладно. Пойдём за мной, я знаю место где можно отдохнуть. 
\t       Может и имя своё вспомнишь.
""", "question", {"Ну пойдём"               : "vadik_go_act"}
),
"vadik12"        : ("""
\tВадим: Ну ладно. Пойдём за мной, я знаю место где можно отдохнуть.
""", "question", {"Пойдём"                  : "vadik_go_act"}
),
"vadik13"        : ("""
\tВадим: Пойдём за мной, я знаю место где можно отдохнуть.
""", "question", {"Пошли"                   : "vadik_go_act"}
),
"go_vadik"        : ("""
Все ушли в закат.
""", "goto", "outro"
),
"speak_vadik"     : ("""
Вы попытались заговорить с Вадимом, но тут яркая вспышка озарила небо.
""", "goto", "outro"
),
"outro"           : ("""
КОНЕЦ.
""", "exit", ""
)
}

def slow_print(text):
    for letter in text:
        print(letter, end="", flush=True)
        time.sleep(0.025)
    print()

def go(quest, stage="intro"):
    while True:
        text, type, action = quest[stage]
        slow_print(text.lstrip("\n"))
        if type == "goto":
            stage = action
            time.sleep(1)
        elif type in ("question", "action"):
            while True:
                time.sleep(0.5)
                print(f"/// Выберете {'ответ' if type == 'question' else 'действие'} ({'/'.join(map(str, range(1, len(action)+1)))}) ///")
                variants = list(action.items())
                for i, question in enumerate(variants, 1):
                    print(f"/// {i}. {question[0]}")
                answer = input()
                if answer.isdigit():
                    answer = int(answer)
                    if 0 < answer <= len(action):
                        if type == "question":
                            slow_print(f"\tВы: {variants[answer-1][0]}")
                        stage = variants[answer-1][1]
                        break
                print("Ваш ответ не ясен. Повторите.")
        elif type == "exit":
            return

go(QUEST)
→ Ссылка