Игра «Быки и коровы»
Игрок отгадывает загаданное число: «бык» — верная цифра на своём месте, «корова» — верная, но не на своём. Отличная задача на строки и циклы.
Что считаем
Сравниваем догадку с загаданным числом посимвольно. Совпала цифра и позиция — бык. Цифра есть в числе, но на другом месте — корова.
secret = '4271'
guess = '4127'
Считаем быков и коров
Идём по позициям через enumerate. Если символы на одной позиции равны — бык; иначе, если цифра вообще встречается в числе, — корова.
bulls = cows = 0
for i, c in enumerate(guess):
if c == secret[i]:
bulls += 1
elif c in secret:
cows += 1
print(bulls, 'быков', cows, 'коров')
Цикл до победы
Повторяем ввод догадки в цикле while, пока быков не станет столько же, сколько цифр в числе. Загадать случайное число помогает random.
Частые вопросы
Почему числа как строки? Со строкой удобно сравнивать по позициям и проверять «есть ли цифра» через in.
Как избежать повторов цифр в загадке? Соберите число из random.sample('0123456789', 4) — там цифры уникальны.
Начать игру бесплатно