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('Попытки кончились. =(')