Python знаменит тем, что в нем доступно большое количество стандартных библиотек — так называют модули и пакеты, в которых уже реализованы тысячи разных функций. Разработчику полезно разбираться в этих стандартных библиотеках, ведь это знание позволяет экономить время и силы.
В этом уроке мы познакомимся с одной из стандартных библиотек — модулем random
.
При разработке программ иногда возникает потребность сгенерировать случайное число. С этой целью в Python можно использовать модуль random. Он предоставляет множество функций, но мы пока остановимся на двух:
randint
— сгенерировать целое число в заданном диапазонеchoice
— выбрать случайный элемент из заданного набораЧтобы сгенерировать случайное число, нужно импортировать функцию randint
из модуля random
:
from random import randint
Для примера попробуем сгенерировать число от 1 до 100:
random_number = randint(1, 100)
Обратите внимание, что обе границы диапазона включены — значит, randint
может выдать любое значение в диапазоне, в том числе 1 и 100.
Перейдем к более сложному примеру:
string = 'abcde'
random_index = randint(0, len(string) - 1)
char = string[random_index]
Здесь программа должна выбрать случайный символ из строки string
. При этом:
string
имеет длину 5Если мы попробуем сгенерировать число через randint(0, 5)
, то в какой-то момент получим значение 5. Тогда программа выдаст ошибку IndexError
: она не сможет выдать пятый символ из четырех.
Как это предотвратить? Нужно не просто задать верхнюю границу диапазона, а вычислить ее — то есть вычесть единицу из длины строки. Именно так и сделано в примере кода выше.
Выше мы рассмотрели пример, в котором выбирался случайный символ строки. Эта задача возникает достаточно часто, поэтому в модуле random
существует функция choice
.
Если использовать эту функцию, выбор символа из строки будет выглядеть так:
from random import choice
string = 'abcde'
char = choice(string)
Используя choice
, не нужно думать о границах диапазона — функция сама определяет, как правильно выбирать элементы. При этом важно, чтобы строка для выбора не была пустой. Иначе мы получим ошибку IndexError: Cannot choose from an empty sequence
: «Нельзя выбрать из пустой строки».
В основе модуля random
лежит генератор псевдослучайных чисел — на самом деле, число выбирается не случайно, а на основе сложных математических вычислений. Из-за этого random
не принято использовать в сферах, где нужна повышенная безопасность.
В криптографии, шифровании и других подобных сферах используют модуль secrets, в основе которого менее предсказуемый механизм случайной генерации.
Вам ответят команда поддержки Хекслета или другие студенты.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
Наши выпускники работают в компаниях:
С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.
Зарегистрируйтесь или войдите в свой аккаунт