Различия между версиями 2 и 3
Версия 2 от 2021-12-03 14:28:32
Размер: 1818
Редактор: FrBrGeorge
Комментарий:
Версия 3 от 2021-12-06 23:42:18
Размер: 5800
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 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 и выводит различную информацию о нём.

  1. Про формат GPX (см. также GPS Exchange Format):

    • Короткое описание (достаточное для большинства требований).

    • Полное описание

    • Источники gpx-файлов
      • Это место (зайти на страничку описания трека и в разделе «Скачать маршрут» выбрать «.gpx трек Garmin, Navitel и т.д.»)

      • Trail Followers (зайти на страничку описания трека и нажать «Скачать GPX-трек»

      • Скиф 4х4 (открыть трек, выбрать скачать → GPX).

        • треки с этого сайта не содержат отметок высоты
      • Мультитреки (если не нашлись) ATB-Heerenveen.gpx, track37.gpx

    • /!\ Внимание! В GPX-файлах, полученных на платформе Windows mobile, рядом с символом "\n" присутствует ещё один — "\r". Его надо просто удалить при обработке.

  2. Обязательные требования

    • Программа должна обрабатывать произвольный файл из определяемого вами множества GPX-файлов (допустим, вы скачали несколько примеров, и на каждом она работает)
    • Для каждого трека в файле программа должна выводить название трека и его суммарную длину, похожую на правду

  3. Дополнительные требования (в скобках указаны бонусные баллы)

    1. (+1) Длина трека вычисляется с учётом отметок о высоте, если они есть, и в предположении идеальной горизонтали, если их нет
    2. (+1) Вывести также все путевые отметки (<wpt>) с их именами

    3. (+1) Вычисляется перепад высот и суммарная длина подъёмов и спусков
    4. (+2) При наличии временных отметок (<time>) вычисляется средняя, наименьшая и наибольшая скорости

      • Подсказка: скорее всего, вам понадобится time и в частности time.strptime(), а также, возможно, datetime

    5. (+2) При вычислении высот и длин учитывается, что трек может состоять из нескольких сегментов <trkseg>, расстояния и перепады высот между сегментами не включаются в измерения. Привести пример такого трека.

    6. (+1) Программа работает на любом синтаксически не ошибочном gpx-файле (как минимум, с сайтов выше)
    7. (+2) Нарисовать треки (необязательно на карте)

Python/GeoPython2021/12_Practice (последним исправлял пользователь FrBrGeorge 2021-12-07 14:32:40)