Возможности языка Python: повторение и уточнение
Итоги за полгода и различные особенности, о которых не говорилось
- Повторение:
- Объекты: имена и методы
- Структуры данных: списки, кортежи, строки, словари
- Списковые конструкторы
Логические операции, условные операторы и циклы, клауза else
- Функции: объявление и вызов
Модули random и math
- Сложность алгоритма
- Уточнение:
- Структуры данных: множества
- Функции: позиционные и именные параметры, переменное число параметров
- Итераторы и генераторы. Преимущество перед списками
Домашнее задание
Почитать учебник в произвольных местах
Лабиринт. Лабиринт задан массивом M×N нулей и единиц. 0 считается проходимым местом, а 1 — непроходимым.
Выбрать формат хранения лабиринта (список списков или словарь) и формат ввода: в виде списка списков или словаря можно вводить с помощью input() (или eval(input()) в Python3), а вручную удобнее построчно, примерно так:
.#........... .#####.#####. ...#...#...#. ##.#.###.###. ...#.#....... .###.#.###### .#...#...#... .###.###.#.## .....#.#.#... ######.#.###. .#.....#..... .#.#.#######. ...#.........
- Написать программу, которая:
- умеет выводить лабиринт в красивом виде
- Проверяет, можно ли добраться из клетки (0,0) в клетку (M-1,N-1)
- … + вычисляет длину минимального пути
- … + выводит маршрут
Написать генератор входных данных (для ввода со стандартного ввода можно впоследствии использовать конструкции вида python generator.py | python solver.py в командной строке или eval(строка-сгенерированная-генератором) в коде решения)
- Просто какого-то лабиринта
- Лабиринта, который с достаточной вероятностью может быть проходим или непроходим
- Проходимого или непроходимого лабиринта по требованию
- Лабиринта с ветвящимися путями
- «Красивого» лабиринта как на примере
Намеренно непонятный (решайте задачу сами ) генератор лабиринта в виде списка списков labpur.py
Намеренно непонятный (решайте задачу сами ) генератор лабиринта в виде словаря labpurd.py
Намеренно непонятный (решайте задачу сами ) генератор лабиринта в виде "...#...#" labpurc.py
Не хотите? Вот подсказка: (
)
- Лабиринта с несколькими вариантами прохода
Условные обозначения
— тема по Linux
— тема повышенной сложности
— теоретическое задание
— тема для самостоятельного изучения