Почему IF-ELSE в Python так нелогичен?
1. Как проверял? Просто пытался угадать? Рандом - штука такая, могло просто не везти.
2. Если пользователь с первого раза введёт правильный key, условие цикла сразу будет False, и цикл не выполнится - а значит, не выполнятся и ifы.

Я бы посоветовал сделать так:
max_tries = 5  # число попыток
key = -1  # заведомо некорректное значение
for i in range(1, max_tries+1):
    key = int(input(f'Попытка №{i}: '))
    if key == lock:
        print(f'Угадал c {i}-й попытки!')
        break
else:  # этот else относится к for! 
    # он выполнится, если for НЕ БЫЛ прерван по break
    print('Попытки кончились. =(')
lock = 5
tries = 5
key = -1

while tries:
    tries -=1
    key = int(input('Введите число: '))  
    if key == lock:
        print(f"поздравляю, вы выиграли, потратив {5-tries} попыток!")
        break  
    print(f'осталось {tries} попыток')
else:
    print('проигрыш!')
Не подглядывая к Vindicar накарябал почти то же самое :)