Причина, по которой ваша функция не завершается, заключается в том, что цикл while содержит догадку.Если у вас есть второе предположение, и вы угадываете правильно, вы, как и ожидалось, введете оператор if для получения удара и выйдите.Однако, если вы ошиблись во втором предположении, вы оказались в ловушке в цикле while, потому что код предположения по-прежнему равен 2. Таким образом, условие, поддерживающее выполнение цикла while, все еще выполняется.Чтобы исправить отсутствие выхода, если они получают второе предположение неверно, вам нужно изменить значение guessnumber (на что угодно, кроме 1) следующим образом:
while guessnumber == 2:
attackguess = int(input())
if attackguess == hit:
enelives1 = enelives1 - damage
print("You hit the skeleton! It now has" ,enelives1, "lives.")
guessnumber = 3
global aord
aord == "defend"
else:
guessnumber = 0 #this will allow while loop to break
Теперь, если вы измените значение чека,все должно быть в порядке:
if lives >= 1 and guessnumber == 0: