banree
@banree
oh I hate you :З

Почему не работает IF-ELSE?

Код небольшой игры с отгадыванием чисел:
spoiler
import random

lock = random.randint(1,10)
tries = 5
key = int(input())

while key != lock:
    tries -=1
    key=int(input())
    print('осталось', tries, 'попыток')
    
    if key == lock:
        print("поздравляю, вы выиграли, потратив", 5-tries, 'попыток!')
        break
           
    if tries == 1:
        print('проигрыш!')
        break


Часть, которая игнорируется интерпретатором.
if key == lock:
        print("поздравляю, вы выиграли, потратив", 5-tries, 'попыток!')
        break
  • Вопрос задан
  • 172 просмотра
Решения вопроса 2
Vindicar
@Vindicar
RTFM!
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('Попытки кончились. =(')
Ответ написан
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
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 накарябал почти то же самое :)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы