Программа "Угадай число"
Напишите программу, которая предлагает пользователю отгадать "загаданное компьютером" (случайно сгенерированное) число. После каждой неудачной попытки программа выводит сообщение о том, больше или меньше введенное человеком число, чем загаданное. Программа должна подсчитывать количество попыток, за которые человек угадывает число.
Решение задачи на языке программирования Python
Пример выполнения программы:
Отгадай число от 1 до 100 1-я попытка: 50 Много 2-я попытка: 25 Мало 3-я попытка: 37 Много 4-я попытка: 31 Мало 5-я попытка: 34 Правильно. Я загадал 34
Чтобы отгадать число за как можно меньшее число попыток, надо диапазон допустимых чисел всегда делить на 2. Так, если неизвестное число лежит в диапазоне от 1 до 100, то его середина - это 50. Если становится известно, что число меньше 50-ти, значит, оно лежит в диапазоне от 1 до 50, середина которого - это 25.
Поскольку человек должен вводить числа до тех пор, пока не угадает "загаданное", задача решается через цикл, который будет выполняться, пока числа не станут равны друг другу.
В теле цикла необходимо увеличивать счетчик попыток и сравнивать числа между собой, чтобы определять, какое из них больше.
from random import randint secret_number = randint(1, 100) print('Отгадай число от 1 до 100') user_number = 0 try_count = 0 while user_number != secret_number: try_count += 1 user_number = int(input(f'{try_count}-я попытка: ')) if user_number > secret_number: print('Много') elif user_number < secret_number: print('Мало') else: print(f'Правильно. Я загадал {secret_number}')
Если одно число не больше и не меньше, чем другое, значит, числа равны между собой. Поэтому в условном операторе мы можем использовать ветку else
. Однако цикл мог бы выглядеть и так:
while user_number != secret_number: try_count += 1 user_number = int(input(f'{try_count}-я попытка: ')) if user_number > secret_number: print('Много') elif user_number < secret_number: print('Мало') elif user_number == secret_number: print(f'Правильно. Я загадал {secret_number}')
Теперь обратим внимание, что так или иначе мы два раза сравниваем числа между собой: в заголовке цикла и последней ветке вложенного в него условного оператора. Если числа станут равны друг другу, то цикл завершит свою работу. С другой стороны, поток выполнения программы не сможет выйти из цикла, пока числа не равны. Поэтому задачу можно решить немного проще:
from random import randint secret_number = randint(1, 100) print('Отгадай число от 1 до 100') user_number = 0 try_count = 0 while user_number != secret_number: try_count += 1 user_number = int(input(f'{try_count}-я попытка: ')) if user_number > secret_number: print('Много') elif user_number < secret_number: print('Мало') print(f'Правильно. Я загадал {secret_number}')