Что не так с блоков 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
, на всякий случай.