В этой статье мы напишем программу «Угадай число», которая будет работать на основе генератора чисел. Если вы новичок в Python, тогда советуем сначала изучить статью «Циклы в Python» и потом возвращаться к этой статье.
Модуль random предоставляет функции для генерации случайных чисел, букв, случайного выбора элементов последовательности. Рассмотрим функции модуля:
random.seed([X], version=2) — инициализация генератора случайных чисел. Если X не указан, используется системное время.
random.getstate() — внутреннее состояние генератора.
random.setstate(state) — восстанавливает внутреннее состояние генератора. Параметр state должен быть получен функцией getstate().
random.getrandbits(N) — возвращает N случайных бит.
random.randrange(start, stop, step) — возвращает случайно выбранное число из последовательности.
random.randint(A, B) — случайное целое число N, A ≤ N ≤ B.
random.choice(sequence) — случайный элемент непустой последовательности.
random.shuffle(sequence, [rand]) — перемешивает последовательность (изменяется сама последовательность). Поэтому функция не работает для неизменяемых объектов.
random.sample(population, k) — список длиной k из последовательности population.
random.random() — случайное число от 0 до 1.
random.uniform(A, B) — случайное число с плавающей точкой, A ≤ N ≤ B (или B ≤ N ≤ A).
random.triangular(low, high, mode) — случайное число с плавающей точкой, low ≤ N ≤ high. Mode — распределение.
random.betavariate(alpha, beta) — бета-распределение. alpha>0, beta>0. Возвращает от 0 до 1.
random.expovariate(lambd) — экспоненциальное распределение. lambd равен 1/среднее желаемое. Lambd должен быть отличным от нуля. Возвращаемые значения от 0 до плюс бесконечности, если lambd положительно, и от минус бесконечности до 0, если lambd отрицательный.
random.gammavariate(alpha, beta) — гамма-распределение. Условия на параметры alpha>0 и beta>0.
random.gauss(значение, стандартное отклонение) — распределение Гаусса.
random.lognormvariate(mu, sigma) — логарифм нормального распределения. Если взять натуральный логарифм этого распределения, то вы получите нормальное распределение со средним mu и стандартным отклонением sigma. mu может иметь любое значение, и sigma должна быть больше нуля.
random.normalvariate(mu, sigma) — нормальное распределение. mu — среднее значение, sigma — стандартное отклонение.
random.vonmisesvariate(mu, kappa) — mu — средний угол, выраженный в радианах от 0 до 2π, и kappa — параметр концентрации, который должен быть больше или равен нулю. Если каппа равна нулю, это распределение сводится к случайному углу в диапазоне от 0 до 2π.
random.paretovariate(alpha) — распределение Парето.
random.weibullvariate(alpha, beta) — распределение Вейбулла.
В нашей программе мы будем использовать функцию randint(). Полный листинг программы:
Модуль random предоставляет функции для генерации случайных чисел, букв, случайного выбора элементов последовательности. Рассмотрим функции модуля:
random.seed([X], version=2) — инициализация генератора случайных чисел. Если X не указан, используется системное время.
random.getstate() — внутреннее состояние генератора.
random.setstate(state) — восстанавливает внутреннее состояние генератора. Параметр state должен быть получен функцией getstate().
random.getrandbits(N) — возвращает N случайных бит.
random.randrange(start, stop, step) — возвращает случайно выбранное число из последовательности.
random.randint(A, B) — случайное целое число N, A ≤ N ≤ B.
random.choice(sequence) — случайный элемент непустой последовательности.
random.shuffle(sequence, [rand]) — перемешивает последовательность (изменяется сама последовательность). Поэтому функция не работает для неизменяемых объектов.
random.sample(population, k) — список длиной k из последовательности population.
random.random() — случайное число от 0 до 1.
random.uniform(A, B) — случайное число с плавающей точкой, A ≤ N ≤ B (или B ≤ N ≤ A).
random.triangular(low, high, mode) — случайное число с плавающей точкой, low ≤ N ≤ high. Mode — распределение.
random.betavariate(alpha, beta) — бета-распределение. alpha>0, beta>0. Возвращает от 0 до 1.
random.expovariate(lambd) — экспоненциальное распределение. lambd равен 1/среднее желаемое. Lambd должен быть отличным от нуля. Возвращаемые значения от 0 до плюс бесконечности, если lambd положительно, и от минус бесконечности до 0, если lambd отрицательный.
random.gammavariate(alpha, beta) — гамма-распределение. Условия на параметры alpha>0 и beta>0.
random.gauss(значение, стандартное отклонение) — распределение Гаусса.
random.lognormvariate(mu, sigma) — логарифм нормального распределения. Если взять натуральный логарифм этого распределения, то вы получите нормальное распределение со средним mu и стандартным отклонением sigma. mu может иметь любое значение, и sigma должна быть больше нуля.
random.normalvariate(mu, sigma) — нормальное распределение. mu — среднее значение, sigma — стандартное отклонение.
random.vonmisesvariate(mu, kappa) — mu — средний угол, выраженный в радианах от 0 до 2π, и kappa — параметр концентрации, который должен быть больше или равен нулю. Если каппа равна нулю, это распределение сводится к случайному углу в диапазоне от 0 до 2π.
random.paretovariate(alpha) — распределение Парето.
random.weibullvariate(alpha, beta) — распределение Вейбулла.
В нашей программе мы будем использовать функцию randint(). Полный листинг программы:
import random
print("*" * 10, "Угадай число", "*" * 10)
print("Компьютер будет загадывать число от 1 до 100. Попробуйте угадать число. Для выхода введите 0")
answer = 1
score = 0
i = 0
while answer:
if answer == 0:
break
rand = random.randint(1, 100)
answer = int(input("Число загадано. Попробуйте отгадать: "))
if answer == rand:
score = score + 1
print("Красавчик!")
else:
print("Неудачник! Пробуй еще...")
i = i + 1
print("Всего ты отгадал чисел ", score, "из", i)
print("Приходи когда поумнеешь!")
input("Нажмите Enter для выхода")
Наша программа в цикле while проверяет введенное пользователем значение. Если оно совпадает со сгенерированным в начале итерации случайным значением, значит, выводится соответствующее сообщение и увеличивается значение переменной score.
Параллельно мы ведём счетчик итераций, чтобы знать, сколько попыток совершил пользователь (переменная i). также наша программа выводит статистику по окончанию игры.
rand = random.randint(1, 100) — используем функцию randint и задаем диапазон загадываемых чисел от 1 до 100. Диапазон можно изменить.
Нижеуказанная инструкция выполняет большую роль в нашей программе:
Параллельно мы ведём счетчик итераций, чтобы знать, сколько попыток совершил пользователь (переменная i). также наша программа выводит статистику по окончанию игры.
rand = random.randint(1, 100) — используем функцию randint и задаем диапазон загадываемых чисел от 1 до 100. Диапазон можно изменить.
Нижеуказанная инструкция выполняет большую роль в нашей программе:
if answer == 0:
break
Если пользователь введет 0, выполнение будет прервано.
В нашей программе есть небольшой недочет. При чтении данных мы не производим проверку их корректности.
Если пользователь введет строку вместо числа, то выполнение программы будет остановлено, а на консоли будет изображено сообщение об ошибке. Для обработки таких исключений используются блоки try..except.
Вы можете улучшить нашу программу и добавить исключения самостоятельно. В комментариях ждём ваших предложений по поводу улучшений данного кода.
Видео по разработке программы:
В нашей программе есть небольшой недочет. При чтении данных мы не производим проверку их корректности.
Если пользователь введет строку вместо числа, то выполнение программы будет остановлено, а на консоли будет изображено сообщение об ошибке. Для обработки таких исключений используются блоки try..except.
Вы можете улучшить нашу программу и добавить исключения самостоятельно. В комментариях ждём ваших предложений по поводу улучшений данного кода.
Видео по разработке программы: