Uploaded by Иван Новиков

М3 У4. Создание модулей

advertisement
03.12.2022, 12:59
М3 У4. Создание модулей
М3 У4. Создание модулей
М3 У4. Создание модулей
Методические указания.
Создание модулей
🚀СЮЖЕТНАЯ ЛИНИЯ:
Отдел разработки ProTeam продолжает работать с фирмой Go Ahead,
организующей спортивные мероприятия. Директор Go Ahead попросил разработчиков
создать программу-автоответчик для отдела поддержки клиентов.
Обсуждая задачу, разработчики приходят к необходимости создать собственный
модуль обработки запросов и отобразить его возможности на mind map.
⚠️РЕЗЮМЕ:
Цель урока — узнать и применить на практике создание модулей.
На занятии ученики повторяют разные способы подключения модулей к
программе и учатся создавать собственные модули. В первой половине занятия
учащиеся решают сюжетные задачи, во второй — программируют программуавтоответчик.
💾 ССЫЛКИ И РЕКВИЗИТ:
- презентация к уроку;
- задания на платформе (часть 1, часть 2).
🎯 ОБРАЗОВАТЕЛЬНЫЕ РЕЗУЛЬТАТЫ УРОКА
После урока ученик:
● приводит примеры готовых
модулей стандартной библиотеки
Python;
● понимает, зачем разработчики
создают собственные модули;
● использует готовые модули
других разработчиков (не из
стандартной библиотеки Python) в
программах;
● подключает к своей программе
как отдельные функции из модулей,
так и модуль целиком;
● создаёт собственные модули и
использует их в программах;
● распознаёт и исправляет ошибки,
вызванные неправильным
использованием модулей;
● планирует работу над проектом с
помощью mind map.
Результат достигнут, когда ученики:
● участвовали в обсуждении и
задавали уточняющие вопросы;
● предлагали варианты наполнения
собственных модулей;
● справились с сюжетными
задачами на платформе;
● создали mind map проекта и
использовали её в работе;
● успешно реализовали минипроект «Автоответчик»;
● на этапе закрепления
перечислили известные им циклы и
привели примеры их
использования.
https://docs.google.com/document/u/0/d/14hqk5kliGhaq8QMZ3XHfts6ZDu8DBZrgpq9YB5S3Y-M/mobilebasic
1/10
03.12.2022, 12:59
М3 У4. Создание модулей
М3 У4. Создание модулей
РЕКОМЕНДУЕМАЯ СТРУКТУРА УРОКА
Время
Этап
Задачи этапа
5 мин
Сюжетная линия.
Обсуждение:
«Создание модулей»
❏ Поставить сюжетную задачу: запрограммировать
10 мин
Квалификация
программу-автоответчик, которую можно будет
доработать при изменении запросов клиентов.
❏ Прийти к необходимости научиться создавать
собственные модули и изображать функционал
проекта на mind map.
❏ Вспомнить пройденный материал:
❏ стандартная библиотека Python, модуль
стандартной библиотеки;
❏ модули random и time и их возможности.
10 мин
20мин
«Мозговой штурм»:
«Создание модулей»
❏ Разобрать процесс создания собственного модуля и
Платформа:
«Go Ahead: создание
модулей»
❏ Организовать выполнение задания «Go Ahead:
5 мин.
Перерыв
10 мин
«Мозговой штурм»:
«Работа над
проектом»
25 мин
Платформа:
«Проект
Автоответчик»
10 мин
Завершение урока.
Рефлексия
способы подключения его к программе.
❏ Разобрать создание модуля на платформе и
сохранение его в Лаборатории.
создание модулей».
❏ Помочь разработчикам восстановить концентрацию.
❏ Поставить сюжетную задачу: спланировать работу
над программой-автоответчиком и составить понятную
клиенту схему работы программы.
❏ Прийти к необходимости использовать mind map
(ментальные карты).
❏ Составить фрагмент mind map программыавтоответчика.
❏ Организовать выполнение сюжетного задания:
«Проект Автоответчик».
❏ Пройти техническое собеседование по теме:
«Создание модулей».
❏ Предложить дополнительное задание и
«документацию» на платформе.
Сюжетная линия. Обсуждение: «Создание модулей»
(5 мин.)
Откройте презентацию. Разработчикам компьютеры пока не требуются.
«Здравствуйте, коллеги! Вчера Алёна сообщила мне, что директор Go Ahead высоко
оценил наше техническое решение. Там хотят усовершенствовать систему поддержки
https://docs.google.com/document/u/0/d/14hqk5kliGhaq8QMZ3XHfts6ZDu8DBZrgpq9YB5S3Y-M/mobilebasic
2/10
03.12.2022, 12:59
М3 У4. Создание модулей
клиентов и установить программу-автоответчик. Программа должна распознавать
запросы
и печатать
подходящие ответы».
М3пользователей
У4. Создание
модулей
Рассмотрите задачу на примере трёх возможных запросов: «Потерял расписание
занятий», «Забыл телефон тренера» и «Сколько нужно заплатить за занятия».
Обсудите задачу по частям:
Попросите описать процесс распознавания запроса. Как программа
определит, с чем связан запрос? Придите к необходимости искать ключевые
подстроки в запросе (например, «расп», «трен», «оплат»).
●
Опишите возможное устройство программы. Как запрограммировать
распознавание запроса? Будут ли все команды располагаться в основной
части программы или планируется использование функций?
●
Отметьте, что подобные автоответчики будут внедряться и в других
спортивных центрах. Возможно ли использование этих наработок в других
программах? Как?
●
Предложите создать собственный модуль для распознавания запросов:
«Опытные разработчики редко помещают весь код проекта в один файл. Они часто
разбивают большую задачу на составляющие и реализуют их в собственных модулях.
Любой программист может вынести фрагмент кода в отдельный модуль и подключать
его к других программам. Этому стоит научиться».
Сформулируйте цель рабочего дня и анонсируйте его содержание.
Квалификация
(10 мин.)
Организуйте подтверждение квалификации. В текущий рабочий день она
проходит по материалам прошлого «мозгового штурма».
«Мозговой штурм»: «Создание модулей»
(10 мин.)
С помощью презентации замотивируйте разработчиков научиться создавать
собственные модули. Расскажите истории других разработчиков, которые смогли
сэкономить усилия и время, используя готовые фрагменты прошлых программ.
Опишите процесс создания модуля, общий для любой среды разработки. Вопервых, нужно сохранить фрагмент программы в отдельном файле. Название файла
должно раскрывать его наполнение (на втором году работы в другой среде разработки
https://docs.google.com/document/u/0/d/14hqk5kliGhaq8QMZ3XHfts6ZDu8DBZrgpq9YB5S3Y-M/mobilebasic
3/10
03.12.2022, 12:59
М3 У4. Создание модулей
Visual Studio Code нужно будет указывать расширение .py). Во-вторых, этот файл нужно
подключить
к Создание
основной части
программы так же, как ранее подключались модули
М3 У4.
модулей
random и time.
Продемонстрируйте процесс создания и подключения модуля на платформе.
● Напишите код, который будет лежать в модуле. Затем нажмите на кнопку
«Сохранить» и введите название модуля. Нажмите «Ок».
● Если после этого в консоли появилась надпись «Module saved», значит,
модуль успешно сохранился в «Лаборатории».
Сохранённый в «Лаборатории» модуль можно использовать в любой
программе на платформе, не важно, в каком задании она находится. Чтобы
использовать модуль, подключите его командой import <модуль> или from
<модуль> import <название>.
●
Отметьте небольшую тонкость в подключении модулей. Если модули стандартной
библиотеки Python известны всем разработчиком, то использование незнакомых
названий функций вашего собственного модуля может запутать других программистов.
Чтобы сделать код читаемым и показать, что эти функции лежат в некотором
модуле, рекомендуйте или подключать модуль командой import <модуль> (тогда
название модуля будет сопровождать функцию), или использовать поясняющие
комментарии.
Подведите итоги и переходите к выполнению сюжетного задания на платформе.
Платформа: «Go Ahead: создание модулей»
(20 мин.)
Организуйте выполнение заданий по созданию собственных модулей и
использованию модулей других разработчиков на платформе. Во всех уровнях с
программированием автопроверка отсутствует.
Ответы на задания вы найдёте в конце методических указаний.
Перерыв
(5 мин.)
Отвлеките разработчиков от компьютеров. Цель перерыва — переключить
внимание и размяться. Организуйте одну из предложенных физических активностей.
https://docs.google.com/document/u/0/d/14hqk5kliGhaq8QMZ3XHfts6ZDu8DBZrgpq9YB5S3Y-M/mobilebasic
4/10
03.12.2022, 12:59
М3 У4. Создание модулей
«Мозговой штурм»: «Работа над проектом»
М3 У4. Создание модулей
(10 мин.)
Вернитесь к обсуждению проекта «Автоответчик». Для удобства других
программистов и использования наработок в других программах было решено вынести
распознавание команд в отдельный модуль. Придите к необходимости использовать
инструменты планирования работы, чтобы обозначить функционал проекта и выделить
подзадачи проекта.
Познакомьте разработчиков с популярным инструментом визуализации идеи и
выделения её компонентов — mind map (или «ментальной картой»).
В отличие от строго формализованных блок-схем в mind map практически нет
ограничений. Тем не менее, можно сформулировать несколько рекомендаций:
1. Выделите «ядро» mind map — центральную идею, которую необходимо обдумать.
Разместите его в центре рабочего пространства.
2. Перечислите основные компоненты идеи (подтемы). Разместите их рядом с
«ядром» и соедините с ним линиями.
3. Для каждого компонента первого уровня выделите его составляющие —
компоненты второго уровня. Также нанесите их на mind map.
Создайте столько уровней, сколько необходимо. Одни компоненты могут иметь
большую «глубину», чем другие.
Продемонстрируйте несколько примеров mind map и расскажите, как они
составляются. Предложите возможную ментальную карту для проекта «Автоответчик».
Подведите итоги обсуждения и переходите к выполнению проектного задания.
Платформа: «Проект “Автоответчик”»
(25 мин.)
Организуйте работу над проектом «Автоответчик».
Сначала разработчики должны внимательно прочитать задание. Нужно
реализовать распознавание трёх запросов, общих для всех, а затем дополнить
программу двумя любыми собственными функциями.
●
● Каждый разработчик составляет mind map своего проекта (не более 5 минут).
Принцип может быть любым (но можно взять за основу и идею Кости: компоненты
первого уровня — это файлы проекта).
Ориентируясь на mind map, разработчик создаёт собственный модуль и
использует его в программе.
●
В конце этапа проекты публикуются в «Лаборатории» и открываются для
обратной связи других разработчиков.
●
ВАЖНО! К сожалению, в «Зале славы» и «Лаборатории» не предусмотрены простые
способы распространения программы, состоящей из нескольких модулей. Поэтому
желающим получить обратную связь мы рекомендуем вернуть код модуля в основную
https://docs.google.com/document/u/0/d/14hqk5kliGhaq8QMZ3XHfts6ZDu8DBZrgpq9YB5S3Y-M/mobilebasic
5/10
03.12.2022, 12:59
М3 У4. Создание модулей
программу. В следующем году обучения ребята будут работать в профессиональной
среде VS
там таких ограничений
М3Code
У4.иСоздание
модулей не будет.
Возможную реализацию проекта вы найдёте в конце методических указаний.
Завершение рабочего дня. Рефлексия
(10 мин.)
С помощью презентации подведите итоги рабочего дня. Проведите техническое
интервью с вопросами по материалам «мозгового штурма».
Предложите дополнительные
документацию с теорией.
задания
для
повышения
эффективности
и
Ответы на задания
Задание 1. «Go Ahead: создание модулей»
1.1. Программа модуля:
1.3. Текст модуля для сохранения:
def print_football():
print('Время игры: два тайма по 45 минут')
print('Количество игроков: 11 от одной команды')
print('Цель игры - забить как можно больше мячей в ворота соперника')
def print_hockey():
print('Время игры: три периода по 20 минут')
print('Количество игроков: 6 от одной команды')
print('Цель игры - забросить как можно больше шайб в ворота соперника')
def print_sprint():
print('Время забега: не ограничено')
print('Цель - достичь финиша как можно быстрее')
print('Интересные факты:')
print('-Старейшая дисциплина лёгкой атлетики, существующая со времён первых Олимпийских игр')
print('-Абсолютный рекорд (9,63 сек) установлен в 2012 году У. Болтом')
https://docs.google.com/document/u/0/d/14hqk5kliGhaq8QMZ3XHfts6ZDu8DBZrgpq9YB5S3Y-M/mobilebasic
6/10
03.12.2022, 12:59
М3 У4. Создание модулей
1.4. Текст программы:
М3 У4. Создание модулей
import sport_rules
print('Сегодня в программе:\n1-футбол\n2-хоккей\n3-бег на 100 м')
answer = input('Ваш выбор (off - завершить):')
while answer != 'off':
if answer == '1':
sport_rules.print_football()
elif answer == '2':
sport_rules.print_hockey()
elif answer == '3':
sport_rules.print_sprint()
else:
print('Вид спорта не найден!')
answer = input('Ваш выбор (off - завершить):')
1.5 Верное соответствие:
1.6. Текст модуля для сохранения:
def get_full_time(experience):
salary = 20000
if experience >= 3 and experience < 5:
k = 1.5
elif experience >= 5 and experience < 7:
k = 2
elif experience >= 7:
k = 3
else:
k = 1
salary *= k
https://docs.google.com/document/u/0/d/14hqk5kliGhaq8QMZ3XHfts6ZDu8DBZrgpq9YB5S3Y-M/mobilebasic
7/10
03.12.2022, 12:59
М3 У4. Создание модулей
return salary
М3 У4. Создание модулей
def get_part_time(hours):
per_hour = 800
salary = hours*per_hour
return salary
1.7. Текст программы:
import sport_salary
surname = input('Фамилия тренера:')
job = input('Занятость (1-полная, 2-почасовая):')
if job == '1':
experience = int(input('Стаж в годах:'))
salary = sport_salary.get_full_time(experience)
elif job == '2':
hours = int(input('Отработано часов:'))
salary = sport_salary.get_part_time(hours)
print(surname, '-', salary)
1.8. Текст модуля:
def get_ticket_price():
price = 2000
number = int(input('Номер заказа:'))
if number % 1000 == 0:
price *= 0.8
return price
def get_total_price():
total = 0
while input('Купить билет? (off - завершить)') != 'off':
current_price = get_ticket_price()
print('Цена за билет:', current_price)
total += current_price
print('Итого к оплате:', total)
1.9. Текст программы:
import sale
answer = input('Желаете посетить чемпионат мира по футболу? (да/нет)')
if answer == 'да':
sale.get_total_price()
else:
print('Жаль!')
Доп. задание 3. Верные утверждения:
https://docs.google.com/document/u/0/d/14hqk5kliGhaq8QMZ3XHfts6ZDu8DBZrgpq9YB5S3Y-M/mobilebasic
8/10
03.12.2022, 12:59
М3 У4. Создание модулей
М3 У4. Создание модулей
Задание 2. «Проект Автоответчик»
файл 1:
def analyse(phrase):
phrase = phrase.lower()
res = phrase.find('расп')
if res != -1:
print_schedule()
res = phrase.find('тренер')
if res != -1:
print_trainer_info()
res1 = phrase.find('оплат')
res2 = phrase.find('деньг')
if res1 != -1 or res2 != -1:
calc_money()
def print_schedule():
print('Расписание тренировок:')
print('ПН 15:00 - общая силовая тренировка\nСР 15:00 - бассейн\nПТ 17:00 - бассейн')
def print_trainer_info():
print('Главный тренер: Борисов Иван Сергеевич, 8800231344')
print('Тренер по плаванию: Светлова Ирина Олеговна, 88002313234')
def calc_money():
trainings = int(input('Сколько тренировок вы посетили?'))
print('К оплате:', trainings*1500)
файл 2:
from analyser import *
request = input('Чем я могу вам помочь?')
while request != 'off':
analyse(request)
request = input('Чем я ещё могу вам помочь? (off - завершить)')
https://docs.google.com/document/u/0/d/14hqk5kliGhaq8QMZ3XHfts6ZDu8DBZrgpq9YB5S3Y-M/mobilebasic
9/10
03.12.2022, 12:59
М3 У4. Создание модулей
Дополнительное задание. «Go Ahead: доп задания 2»
М3 У4. Создание модулей
1.1. Верные ответы:
1.2. Программа модуля:
def competition_result(team1, team2):
score_1 = 0
score_2 = 0
goal_scoring = input('Кто забил? (стоп-завершить)')
while goal_scoring != 'стоп':
if goal_scoring == team1:
score_1 += 1
elif goal_scoring == team2:
score_2 += 1
else:
print('Такой команды нет!')
goal_scoring = input('Кто забил? (стоп-завершить)')
if score_1 > score_2:
result = str(score_1) + ':' + str(score_2) + ', ' + team1 + ' победил!'
elif score_2 > score_1:
result = str(score_1) + ':' + str(score_2) + ', ' + team2 + ' победил!'
else:
result = str(score_1) + ':' + str(score_2) + ', ничья!'
return result
1.3. Программа:
from competition import *
team1 = input('Название первой команды:')
team2 = input('Название второй команды:')
print('Матч начался!')
print('Матч', team1, '-', team2, ', результат:', competition_result(team1, team2))
https://docs.google.com/document/u/0/d/14hqk5kliGhaq8QMZ3XHfts6ZDu8DBZrgpq9YB5S3Y-M/mobilebasic
10/10
Download