Что не так с блоков elif и почему он выдает такое странное поведение?

while player.count_used_words() != basic_word.count_subwords():

        print(f"{player.count_used_words()} and {basic_word.count_subwords()}") # проверка длин

        user_word = input("Слово: ").lower()

        if player.check_used_word(user_word) == True:
            print("Это слово уже использовано")
        
        elif user_word == "stop" or "стоп":
            break

        else:
             
            if basic_word.check_word_in_list(user_word) == True:
                player.add_word(user_word)
                print("Верно!")

            else:
                print("Слово не верно!")
        
    print(f"Игра завершена, вы угадали {player.count_used_words()}")

Почему когда программа падает в блок elif игра заканчивается, хотя переменная user_word не имеет слова стоп или stop, а просто не правильное слово

Почему такое странное поведение, если переменная не имеет ничего общего со словами стоп/stop, почему вызывается Break

p.s я решил проблему, но все равно не понимаю почему этот блок срабатывал, хотя в теории не должен


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

Автор решения: Тим Муранов

Этот код, вроде, должен работать. Возможно, переменная user_word не обнулялась или не переписывалась а сохраняла "стоп" или "stop". В этом случае программа будет постоянно прерываться. Советую при падении в elif перед break обнулить user_word, на всякий случай.

→ Ссылка