Блог Портфолио Контакты Python уроки

Модули random и time

👈 перейти ко всем урокам

Содержание урока

В Python существует множество готовых инструментов. В том числе, функция, возвращающая случайное число. Чтобы лучше понять, какая палитра инструментов у нас имеется, нужно изучить возможности стандартной библиотеки Python.

Цель рабочего дня — изучить и применить расширенные возможности стандартной библиотеки Python.

Сегодня вы:

  1. узнаете, что такое стандартная библиотека Python и какие модули в ней содержатся;
  2. изучите и примените возможности модуля random (случайные величины);
  3. изучите и примените возможности модуля time (время).

Стандартная библиотека Python

Все возможности языка Python описаны в большом наборе python-файлов — библиотеке.

Многие программисты любят Python именно за широкий набор возможностей стандартной библиотеки и модулей.

Встроенные возможности (исполняются сразу)

Модуль random (работа со случайными величинами)

Модуль time (получение и подсчёт времени)

Модуль turtle (графические примитивы)

Модуль os (взаимодействие с системой ПК)

Модуль random

Модуль random содержит инструменты для генерирования случайных величин.

Полезные функции:

randint(a, b) # Сгенерировать случайное целое число больше или равное a и меньше или равное b
random() # Сгенерировать случайную десятичную дробь от 0 (включительно) до 1 (не включительно)

Подключение и использования модулей

Для подключение и использования модулей существует 3 способа:

Способ №1

Подключение всего модуля целиком.
При использовании команды нужно указать, из какого она модуля.

import random
number = random.randint(0, 9)

Способ №2

Подключение одной функции из модуля.
При вызове функции указывается просто её имя.

from random import randint
number = randint(0, 9)

Способ №3

Подключение всех функций модуля.
При вызове функции указывается просто её имя.

from random import *
number = randint(0, 9)

Пример использования модуля random

from random import randint
lottery_num = randint(1000, 9999)
print(lottery_num)

Задача по водному поло

Задача. Написать программу для жеребьёвки команд по водному поло. В результате должна печататься случайная пара номеров команд, которые встретятся в отборочном матче.

from random import randint

total = int(input("Число участвующих команд:"))
participant_1 = randint(1, total)
participant_2 = randint(1, total)
print("Команда", participant_1, "- команда", participant_2)

Задача с футболистами

Задача. Написать программу распределения футболистов по двум командам на время тренировки. Пользователь по одному вводит имена спортсменов («off» — остановить ввод) и для каждого программа печатает случайную команду.

from random import randint

name = input("Имя спортсмена (off - завершить):")
while name != "off":
    team_num = randint(1, 2)
    print(name, ", команда", team_num)
    name = input("Имя спортсмена (off - завершить):")

Перед тем, как продолжить:

  1. Можно ли оптимизировать код прошлой программы с помощью вложенных конструкций? Если да, то как?
  2. Возможно ли, чтобы для трёх последовательно введённых имён спортсменов программа вывела одну и ту же команду? Почему?
  3. Как доработать программу так, чтобы при завершении работы печаталось число спортсменов в каждой команде?

Модуль time

Модуль time содержит инструменты для работы с величинами, связанными со временем.

Полезные функции:

time() # Возвращает количество секунд, прошедшее с начала эпохи (для UNIX-систем это 1 января 1970 года)
sleep(seconds) # Приостановить выполнение программы на число секунд seconds
round(number, digits) # Округлить число до digits-знаков после точки

Изучим работу функций

from time import *

start = time()
print(start)
>> 1709568816.5108
sleep(5) # Приостановим выполнение программы на 5 секунд
end = time()
total = round(end - start, 2)
print(total)
>> 5.04

Задача с секундомером

Задача. Написать программу-секундомер для подсчёта времени заплыва кролем в секундах. При запуске программа предлагает ввести «1», чтобы начать отсчёт. При вводе «0» секундомер останавливается и выводится число секунд.

from time import time

stopwatch = input("1 - старт, 0 - стоп:")
while stopwatch != "0":
    if stopwatch == "1":
        start = time()
    else:
        print("Действие не найдено!")
    stopwatch = input("0 - стоп:")
end = time()
total = end-start
print("Общее время:", round(total, 2), "c")

Задача с шахматами

Задача. В быстрых шахматах на принятие решений для всех ходов игроку даётся 30 минут. Программа должна:

from time import time
        
rest = 30
move = ""
beginning = time()
while rest > 0 and move != "off":
    move = input("Ваш ход (off - сдаться):")
    end = time()
    rest = 30 - (end - beginning) / 60
    print("Осталось", int(rest), "минут из 30")

Перед тем, как продолжить:

  1. Как изменить программу, чтобы время отображалось не в минутах, а в секундах (целых)?
  2. По новому регламенту время для раздумий увеличилось с 30 минут до 1 часа. Как изменится программа?