1.74M
Category: programmingprogramming

Модули random и time

1.

Модули

2.

Тема:
Модули random и time

3.

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

4.

Стандартная библиотека Python
Все возможности языка Python описаны в
большом наборе python-файлов — библиотеке.
➔ Простейшие команды (например, вводвывод) интерпретатор сразу распознаёт и
исполняет.
➔ Другие команды (например, для генерации
случайных чисел) используются реже,
поэтому они хранятся в отдельных файлах
библиотеки — модулях.

5.

Стандартная библиотека Python
Многие программисты любят Python именно за широкий
набор возможностей стандартной библиотеки и модулей.
Стандартная библиотека Python
Встроенные
возможности
(исполняются
сразу)
Модуль random
(работа со
случайными
величинами)
Модуль time
(получение и
подсчёт
времени)
Модуль turtle
(графические
примитивы)
Модуль os
(взаимодействие
с системой ПК)
...

6.

Модуль random содержит
инструменты для генерирования
случайных величин
Полезные функции:
Функция
Назначение
randint(a, b)
Сгенерировать случайное целое число
больше или равное a и меньше или равное b
random()
Сгенерировать случайную десятичную дробь
от 0 (включительно) до 1 (не включительно)

7.

Подключение и использование модуля
Шаг 1
import random
Шаг 2
number = random.randint(0, 9)
Шаг 1
from random import randint
Шаг 2
number = randint(0, 9)
Шаг 1
from random import *
Шаг 2
number = randint(0, 9)
Подключение всего модуля
целиком. При использовании
команды нужно указать, из
какого она модуля.
Подключение одной функции
из модуля. При вызове функции
указывается просто её имя.
Подключение всех функций
модуля. При вызове функции
указывается просто её имя.

8.

Модуль random содержит
инструменты для генерирования
случайных величин
Полезные функции:
Функция
Назначение
randint(a, b)
Сгенерировать случайное целое число
больше или равное a и меньше или равное b
random()
Сгенерировать случайную десятичную дробь
от 0 (включительно) до 1 (не включительно)
Пример:
from random import randint
lottery_num = randint(1000, 9999)
print(lottery_num)

9.

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

10.

Вернёмся к задаче
Задача. Написать программу для жеребьёвки команд по водному поло. В
результате должна печататься случайная пара номеров команд, которые
встретятся в отборочном матче.
from random import randint
total = int(input('Число участвующих команд:'))
participant_1 = randint(1, total)
participant_2 = randint(1, total)
print('Команда', participant_1, '-', 'Команда', participant_2)
Ситуацию, когда команде N будет предлагаться соревноваться с самой собой,
считать нормальной. В таком случае судья просто запускает программу ещё раз.

11.

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

12.

Рассмотрим ещё одну задачу
Задача. Написать программу распределения футболистов по двум командам на
время тренировки. Пользователь по одному вводит имена спортсменов («off» —
остановить ввод) и для каждого программа печатает случайный номер команды.
from random import randint
name = input('Имя спортсмена (off - завершить):')
while name != 'off':
team_num = randint(1, 2)
print(name, ', команда', team_num)
name = input('Имя спортсмена (off - завершить):')
Будем считать, что за численное равенство команд отвечает тренер, а не программа.

13.

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

14.

Вернёмся к заказу
Менеджер компании Go Ahead! выслал ещё
одну интересную задачу, которую не
смогли решить даже специалисты из
фирмы-конкурента.
Попробуем разобраться!

15.

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

16.

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

17.

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

18.

Изучим работу функций
Тренировочная программа с использованием функций модуля time
Команда
Значение и результат
from time import *
1601619244.56282
start = time()
Зафиксируем время начала
работы программы
print(start)
sleep(5)
Приостановим выполнение
программы на 5 секунд
end = time()
5.08
total = round(end - start, 2)
Подсчитаем время работы
программы и округлим его до двух
разрядов после точки
print(total)

19.

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

20.

Рассмотрим задачу
Задача. Написать программу-секундомер для подсчёта времени заплыва
кролем в секундах. При запуске программа предлагает ввести «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')

21.

Рассмотрим задачу
Задача. В быстрых шахматах на принятие решений для всех ходов игроку даётся
30 минут. Программа должна:
➔ Предлагать ввод хода (например, E2–E4) и считать потраченное время.
➔ После получения хода печатать оставшееся время в минутах.
➔ Если 30 минут закончились или игрок вводит «off» — завершать работу.

22.

Рассмотрим задачу
Задача. В быстрых шахматах на принятие решений для всех ходов игроку даётся
30 минут. Программа должна:
➔ Предлагать ввод хода (например, E2–E4) и считать потраченное время.
➔ После получения хода печатать оставшееся время в минутах.
➔ Если 30 минут закончились или игрок вводит «off» — завершать работу.
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')

23.

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

24.

Программа генерирует случайный набор оценок студента через пробел и считает
количество «пятёрок». Зная число «пятёрок» и число всех оценок, программа может
посчитать процент полученных «пятёрок».
Пример. Пусть всего 10 оценок, из них 4 «пятёрки». Тогда: 4/10*100 = 40 (%). После
подсчёта должно печататься: «Получено пятёрок (%) -» и процент.
Ответ округли до целого числа. Программа должна работать как на картинке.
Случайные сгенерированные оценки: 2, 5, 5, 4, 3, 5

25.

souvenirs = {
'футболки': ['I love Pushkin!', 'Это время — трудновато для пера', 'Здоровы и
нормальны только заурядные люди'],
'браслеты': ['Читайте, завидуйте, я - гражданин!', 'Гой ты, Русь моя родная!'],
'сумки': ['С портретом Чехова', 'С цитатой Гоголя', 'С пером']
}
Для книжного фестиваля был открыт киоск
с сувенирами. Напиши программу,
выводящую полный ассортимент товаров
как на картинке.
Затем программа должна запрашивать вид
желаемого товара и печатать его цену:
- футболка 1500 рублей,
- браслет 300 рублей,
- сумка 600 рублей.
Оформи всё как на картинке. Если введён
несуществующий номер, то напечатай:
«Некорректный номер».

26.

Модули
Новая тема:
Создание модулей

27.

Примеры использования модулей
Несколько примеров использования собственных модулей
другими разработчиками.
Владимир разработал систему
расчётов для кондитерской
фабрики.
Затем система была упакована в
модуль factory.
Этот модуль Владимир
использовал при работе над
следующим заказом от
производителя газированных
напитков.

28.

Примеры использования модулей
Несколько примеров использования собственных модулей
другими разработчиками.
Владимир разработал систему
расчётов для кондитерской
фабрики.
Светлана разработала набор
игровых механик для онлайнигры Big Guns.
Затем система была упакована в
модуль factory.
Механики были упакованы в
модуль shooter.
Этот модуль Владимир
использовал при работе над
следующим заказом от
производителя газированных
напитков.
Иван, коллега Светланы,
использовал этот модуль при
работе над другим шутером.

29.

Создание модулей
Чтобы создать собственный модуль, нужно:
➔ Сохранить файл с кодом, необходимым для другого проекта.
➔ Подключить этот файл как модуль в нужной программе.

30.

Создание модулей
Чтобы создать собственный модуль, нужно:
➔ Сохранить файл с кодом, необходимым для другого проекта.
➔ Подключить этот файл как модуль в нужной программе.
Файл (модуль) database
Файл main или вкладка задачи
def get_data():
Тело функции
def searching(data):
Тело функции
def print_results(res):
Тело функции
import database
current = database.get_data()
res = database.searching(current)
database.print_results(res)

31.

Рекомендации разработчиков
Не забывайте, что код должен быть легко читаемым!
➔ При использовании собственного модуля подключайте его через
import <название модуля>, чтобы при вызове функций было
видно, где они расположены.
➔ Если вы не хотите писать название модуля каждый раз при вызове
функции из него, то используйте поясняющие комментарии.

32.

Рекомендации разработчиков
Не забывайте, что код должен быть легко читаемым!
➔ При использовании собственного модуля подключайте его через
import <название модуля>, чтобы при вызове функций было
видно, где они расположены.
➔ Если вы не хотите писать название модуля каждый раз при вызове
функции из него, то используйте поясняющие комментарии.
import sport_rules
from sport_rules import print_football
sport_rules.print_football()
print_football() #печать правил футбола
Читающий код сразу видит, что
функция находится в другом
файле.
Комментарий отсылает к
модулю с правилами разных
видов спорта.

33.

Ответьте на вопросы
1. Что такое стандартная библиотека Python?
Назовите примеры её компонентов.
2. Что такое модуль? Какие модули вы знаете?
3. Как создать собственный модуль? Зачем
программисты создают собственные модули?
4. Можно ли использовать собственный модуль
в разных программах?

34.

Сегодня вы:
1. Узнали, что такое модуль и какие модули
содержатся в стандартной библиотеке
Python.
2. Применили на практике возможности
модулей random и time.
3. Создали собственный модуль и
использовали его в программе.
English     Русский Rules