1818
Комментарий:
|
5800
|
Удаления помечены так. | Добавления помечены так. |
Строка 35: | Строка 35: |
'''TODO''' Здесь будет последнее задание за две лекции подряд | Финальное задание (не для EJudge). В задании нет чёткой формулировки и чёткого набора требований. Чем больше требований реализован, тем больше баллов оно приносит. Написать программу, которая обрабатывает файл в формате [[RW:GPX]] и выводит различную информацию о нём. 1. Про формат [[RW:GPX]] (см. также [[WP:GPS Exchange Format]]): * [[https://www.rigacci.org/wiki/doku.php/tecnica/gps_cartografia_gis/gpx|Короткое описание]] (достаточное для большинства требований). * [[https://www.topografix.com/gpx/1/1/|Полное описание]] * Источники gpx-файлов * [[http://www.etomesto.ru/tracks.php|Это место]] (зайти на страничку описания трека и в разделе «Скачать маршрут» выбрать «.gpx трек Garmin, Navitel и т.д.») * [[https://trailfollowers.com/routes/|Trail Followers]] (зайти на страничку описания трека и нажать «Скачать GPX-трек» * [[http://osmz.ru/tracks-skif4x4.html|Скиф 4х4]] (открыть трек, выбрать скачать → GPX). * треки с этого сайта не содержат отметок высоты * Мультитреки (если не нашлись) [[attachment:ATB-Heerenveen.gpx]], [[attachment:track37.gpx]] * /!\ Внимание! В GPX-файлах, полученных на платформе Windows mobile, рядом с символом "`\n`" присутствует ещё один — "`\r`". Его надо просто удалить при обработке. 1. '''Обязательные требования''' * Программа должна обрабатывать произвольный файл из определяемого вами множества GPX-файлов (допустим, вы скачали несколько примеров, и на каждом она работает) * Для каждого трека в файле программа должна выводить название трека и его суммарную длину, ''похожую на правду'' 1. '''Дополнительные требования''' (в скобках указаны бонусные баллы) 1. (+1) Длина трека вычисляется с учётом отметок о высоте, если они есть, и в предположении идеальной горизонтали, если их нет 1. (+1) Вывести также все путевые отметки (`<wpt>`) с их именами 1. (+1) Вычисляется перепад высот и суммарная длина подъёмов и спусков 1. (+2) При наличии временных отметок (`<time>`) вычисляется средняя, наименьшая и наибольшая скорости * Подсказка: скорее всего, вам понадобится [[py3doc:time]] и в частности [[py3doc:time#time.strptime|time.strptime()]], а также, возможно, [[py3doc:datetime]] 1. (+2) При вычислении высот и длин учитывается, что трек может состоять из нескольких сегментов `<trkseg>`, расстояния и перепады высот ''между'' сегментами не включаются в измерения. Привести пример такого трека. 1. (+1) Программа работает на любом синтаксически не ошибочном gpx-файле (как минимум, с сайтов выше) 1. (+2) Нарисовать треки (необязательно на карте) |
Практические аспекты разработки
Комментарии и строки документации
- Комментарии и практика их использования
- Комментарий — дополнение семантики:
- не «как работает», а «какую задачу решает»
- Остальное не нужно
- исключения — сложные алгоритмы
- исключение — дополнительная информация
- Комментарий — дополнение семантики:
- Строки документации — в программе, в функциях (и в классах)
.__doc__ и help()
Модули Python
- Правила import-а и поиска
- Любая программа = модуль
Целый подкаталог с __init__.py — модуль (т. н. «пакет»)
- Стандартные модули Python
- Модули и документация
pydoc
Взаимодействие с операционной системой
Модули os и sys / sys.path — очень краткий обзор
- Чуть более подробнее про файлы / каталоги
Использование tkinter.filedialog
- …иное
Отладка
Отладка с помощью print ☺
Пост-анализ с помощью python3 -i / Idle F5
Работа с отладчиком в IDLE
- Пример отладчика: pythontutor
- Пошаговое выполнение
- Step vs Over
- Точки останова
- Стек вызовов
Д/З
Финальное задание (не для EJudge). В задании нет чёткой формулировки и чёткого набора требований. Чем больше требований реализован, тем больше баллов оно приносит.
Написать программу, которая обрабатывает файл в формате GPX и выводит различную информацию о нём.
Про формат GPX (см. также GPS Exchange Format):
Короткое описание (достаточное для большинства требований).
- Источники gpx-файлов
Это место (зайти на страничку описания трека и в разделе «Скачать маршрут» выбрать «.gpx трек Garmin, Navitel и т.д.»)
Trail Followers (зайти на страничку описания трека и нажать «Скачать GPX-трек»
Скиф 4х4 (открыть трек, выбрать скачать → GPX).
- треки с этого сайта не содержат отметок высоты
Мультитреки (если не нашлись) ATB-Heerenveen.gpx, track37.gpx
Внимание! В GPX-файлах, полученных на платформе Windows mobile, рядом с символом "\n" присутствует ещё один — "\r". Его надо просто удалить при обработке.
Обязательные требования
- Программа должна обрабатывать произвольный файл из определяемого вами множества GPX-файлов (допустим, вы скачали несколько примеров, и на каждом она работает)
Для каждого трека в файле программа должна выводить название трека и его суммарную длину, похожую на правду
Дополнительные требования (в скобках указаны бонусные баллы)
- (+1) Длина трека вычисляется с учётом отметок о высоте, если они есть, и в предположении идеальной горизонтали, если их нет
(+1) Вывести также все путевые отметки (<wpt>) с их именами
- (+1) Вычисляется перепад высот и суммарная длина подъёмов и спусков
(+2) При наличии временных отметок (<time>) вычисляется средняя, наименьшая и наибольшая скорости
Подсказка: скорее всего, вам понадобится time и в частности time.strptime(), а также, возможно, datetime
(+2) При вычислении высот и длин учитывается, что трек может состоять из нескольких сегментов <trkseg>, расстояния и перепады высот между сегментами не включаются в измерения. Привести пример такого трека.
- (+1) Программа работает на любом синтаксически не ошибочном gpx-файле (как минимум, с сайтов выше)
- (+2) Нарисовать треки (необязательно на карте)