Домашняя работа по курсу
- Домашняя работа нужна в первую очередь для того, чтобы доказать себе и экзаменатору, что ты освоил тему.
- Задача считается сданной в срок, если в ejudge (см. ниже) зафиксирована посылка решения, успешно принятого системой (результат OK) до наступления срока сдачи.
- Количество (точнее, процент от общего числа) домашних задач, сданных в срок, формируют оценку автоматом, которую можно исправить на экзамене (в обе стороны ☺).
Решения, скопированные друг у друга, считаются не сданными в срок.
Если решение не проходит проверку, придумайте побольше своих тестов. Напишите генератор входных данных (модуль random вам в помощь).
Домашняя работа — не олимпиада. Если что-то не получается, всегда можно спросить (FrBrGeorge, знакомого питониста).
Как сдавать домашнюю работу
Зарегистрироваться на факультетском Ejudge
- По этой же ссылке заполнить графу «Имя» (там должны быть имя и группа, кому оценку ставить)
ВНИМАНИЕ! Зарегистрированные пользователи заходят тут
Выбрать 165-й «турнир» (UNИX GeoPython 2021)
- Возможно, придётся пойти по ссылке «Confirm registration» («Подтвердить регистрацию»)
- Возможно, придётся пойти по ссылке «Participate» («Участвовать»)
- Выбрать соответствующую задачку
- Загрузить решение
- Прежде, чем загружать решение, убедитесь, что оно правильное. Не надо вместо этого делать много различных вариантов решения в надежде, что какой-то один всё-таки пройдёт тесты.
Если возникают вопросы — спрашивайте, для этого есть и интерфейс eJudge, и почта/ВК/телеграф/телефон (FrBrGeorge)
- Дождаться конца проверки (как правило, несколько секунд) и обновить страницу браузера
Как оформлять решение
Задача типа «написать программу»
По умолчанию, т. е. если иное не указано отдельно:
- программа читает со стандартного ввода и выводит на стандартный вывод
- вводимые данные корректны
- Тесты представляют собой наборы входных данных и соответствующие им наборы выходных.
- Если ваше решение
- останавливается с ошибкой
- работает слишком долго
или выдаёт не такие выходные данные, как в тесте
тест считается не пройденным.
⇒ Для ввода можно пользоваться input() (чаще даже eval(input())) без строки-подсказки, а для вывода — print(). Ещё раз: никаких переговоров с роботом — только ввод входных данных и вывод выходных, иначе программа не пройдёт тест!
Задача типа «написать функцию»
Решение — фрагмент программы, реализующий часть её функциональности (как правило — определение классов или функций), который ничего не вводит и не выводит сам.
Во время проверки к решению в конец приписывается тестирующий код
Тест — это также фрагмент программы, который использует определённые в решении объекты
Полученная программа вводит и исполняет тест
- Вывод теста сравнивается с соответствующим эталоном
Алгоритм сдачи такого задания:
- Пишете программу, содержащую и требуемую функцию или класс, и тест
- Отлаживаете её (возможно, меняя тест на другие)
- Удаляете тест, оставляя только функцию или класс
- Загружаете в EJudge
Пример решения задачи «написать функцию»
Написать функцию gt12(), которая принимает два заведомо сравнимых параметра и возвращает 1, если первый параметр больше второго, и 2 в противном случае:
- Решение:
- Ввод (он же тест):
- Вывод (он же эталон):
2 2 1
Пример решения задачи «написать класс»
Написать класс C, который ничего не делает:
- Решение:
- Тест (он же ввод):
- Эталон (он же вывод):
Тест может включать в себя проверку на то, что в классе нет полей, кроме тех, что указаны в условии, и вообще как-то исследовать ваш класс.
Задача типа «написать модуль»
- Решение — программа-модуль, которую предполагается импортировать и использовать определённые в ней объекты (функции, классы и т. п.)
Решение может содержать раздел
- для самостоятельного запуска (при тестировании не используется)
Тесты представляют собой программы, которые импортируют модуль-решение под именем mod и задействуют определённые в нём объекты. Для каждой такой программы есть соответствующий файл с выходными данными, с которыми сравнивается результат её работы.
Тест может включать в себя проверку на то, что в модуле нет имён, кроме тех, что указаны в условии и разные другие проверки
Пример задачи: Написать модуль, в котором будет присутствовать целочисленный объект Count, изначально равный 0, и функция incr(level), увеличивающая Count на число level
Модуль-решение:
Тест:
Вывод:
0 100 Count incr
Сводный список домашних заданий
.
- Запустить python в режиме командной строки, убедиться, что работает
- Написать в текстовом редакторе простейший сценарий, запустить его
Желательно использовать редактор IDLE (я его попробую придерживаться в лекциях)
Попробовать запустить программу с помощью команды python3 имя_файла.py из командной строки
EJudge: HelloWorld 'Hello World!'
Написать программу, которая выводит строку Hello, world (в точности)
(ввод не нужен)
Hello, world
EJudge: ThreeSum 'Сумма трёх чисел'
Ввести три вещественных числа по одному в строке. Вывести их сумму.
1 2.2 3.7e-3
3.2037
EJudge: CalcDiscr 'Квадратное неуравнение'
Ввести a, b, c и x, по одному вещественному числу в строке, и вывести результат $$ax^2+bx+c$$
1 2.2 3 4
27.8
EJudge: CalcTrigonometry 'Вычислить формулу'
Ввести x, вычислить формулу и вывести результат:
$$ x ln x-1/(12x^2+17 sin x+5) $$
1.234
0.23402832649377744
EJudge: AthomizeFormula 'Раскрыть скобки'
Ввести переменную x, вычислить формулу, и вывести результат.
Обязательное условие: на каждую операцию связывания ("=") должно приходиться не более одной арифметической операции или один вызов функции (см пример в лекиии)
$$ |x^2-x^3|-(7x)/(x^3-15x) $$
-1.23
3.8927814656746076
Все задачи можно решить без применения алгебры логики (т. е. без or, and и not), одними только сравнениями. Но если вы умеете в неё, то пожалуйста!
А вот составными типами данных Python, равно как и функциями min() и max(), пользоваться нельзя (хотя они и есть), потому что это упражнения на условные операторы.
Посмотрите полные варианты условий задач (по ссылкам с названиями задач). Там могут быть подсказки и советы, а в особо трудных случаях — спойлеры с алгоритмом.
- Прощёлкать
примеры из учебника «Think Python» (до рекурсии, её не надо)
EJudge: TriangleCheck 'Неравенство треугольника'
Ввести в столбик три положительных вещественных числа (проверять правильность не надо), и вывести YES, если из отрезков указанной длины можно сложить треугольник, и NO в противном случае
3 4 5
YES
EJudge: SquareEquation 'Квадратное уравнение'
Ввести в столбик три вещественных числа: a, b и c, вывести все вещественные решения уравнения $$ax^2+bx+c=0$$. При $$a\ne 0$$ это уравнение превращается в квадратное. Решения выводить через пробел в порядке возрастания, если решений нет, вывести 0, если их бесконечно много — -1.
1 -3 2
1.0 2.0
EJudge: ConfFormula 'Минимумы и максимумы'
Ввести в столбик три вещественных числа x, y и z. Вычислить формулу:
$$ (max^2(x,y,z) - 2^xmin(x,y,z)) / (sin2x + max(x,y,z)//min(x,y,z)) $$
Проверить возможное деление на 0 и вместо ответа вывести 0, если оно предвидится. В противном случае вывести результат вычислений. Последовательностями python и функциями min() и max() пользоваться нельзя!
2 3 4
6.435019351154122
Необязательное упражнение:
Функцией min() нельзя пользоваться, но с помощью тернарной операции и операции «:=» выбор минимального из трёх чисел записать несложно. Попробуйте!
EJudge: CorrectDate 'Правильная дата'
Ввести в столбик три целых заведомо положительных числа — номер года, номер месяца и номер дня в месяце. Проверить, есть ли такой день в месяце, и если да, выдать "YES", а если нет — "NO". Считать високосными все кратные 4 номера годов.
2019 2 29
NO
- Прощёлкать:
Работу функции print(). Чем отличается
от
и от
EJudge: ManualLogarithm 'Логарифм'
Ввести положительное вещественное число Y: $$ 1/100 <= Y <= 1000 $$. Известно, что $$ 10^x=Y $$. Вычислить $$ x $$ с точностью $$ +-10^-7 $$, не используя модуль math и/или иные функции, вычисляющие логарифм. Ответом является любое число, которое отличается от правильного значения не больше, чем на $$ 10^-7 $$. Пользоваться операцией возведения в степень можно.
234.567
2.37026698989898
EJudge: SquareIntersect 'Площадь пересечения'
В столбик вводятся 2×N целых не равных нулю чисел — координаты левых верхних вершин квадратов размером 1000×1000 (N>0). Последовательность заканчивается двумя нулями. Вывести площадь пересечения всех этих квадратов — области, которая входит в каждый из них. Оси координат направлены вправо и вниз — это стандартная практика для компьютерных изображений.
-10 10 100 100 -300 -200 0 0
420000
EJudge: MinSin 'Наименьший синус'
Ввести в столбик 2*N целых чисел, не равных нулю. Назовём меньшее число в очередной введённой паре A, а большее — B. Для чисел A, A+1, …, B-1, B выбирается такое, значение синуса на котором минимально. Вывести N таких чисел. A может быть больше, меньше или равно B (в последнем случае в наборе всего одно это число). Ввод заканчивается двумя нулями.
1 10 25 9 -200 300 1000 -25 0 0
5 11 11 344
EJudge: MultTable 'Таблица умножения'
Ввести два натуральных числа, M и N. Вывести таблицу умножения от 1×1 до M*N в приведённом ниже формате (по колонкам, но без учёта количества разрядов в числе).
4 5
1 * 1 = 1; 2 * 1 = 2; 3 * 1 = 3; 4 * 1 = 4; 5 * 1 = 5 1 * 2 = 2; 2 * 2 = 4; 3 * 2 = 6; 4 * 2 = 8; 5 * 2 = 10 1 * 3 = 3; 2 * 3 = 6; 3 * 3 = 9; 4 * 3 = 12; 5 * 3 = 15 1 * 4 = 4; 2 * 4 = 8; 3 * 4 = 12; 4 * 4 = 16; 5 * 4 = 20
Документация по строкам:
Задания
- Прощёлкать:
Два занятия в Pythontutor: по for и по строкам
Ввести строку и посчитать, сколько в ней содержится английских гласных букв («y» считается гласной!).
The Quick Brown Fox Jumps Over The Lazy Dog
12
Вводится арифметическое выражение, содержащее круглые скобки (в действительности вводится что угодно, содержащее круглые скобки, но это неважно ☺). Проверить, правильно ли с точки зрения арифметики расставлены эти скобки. Скобки считаются расставленными правильно, если после каждой открывающей скобки можно найти однозначно соответствующую ей закрывающую. Больше ничего проверять не надо. Вывести "YES", если скобки расставлены правильно, и "NO" в противном случае.
12+(13/14+((15/16))-17*18+(19/20))
YES
EJudge: Caesar 'Шифр Цезаря'
Вводится строка — предложение, написанное латинскими буквами (большими и маленькими). Предложение зашифровано шифром цезаря. Известно, что исходное сообщение обязательно заканчивается словами «Ave Caesar!». Строчные буквы в сообщении заменяются на строчные, прописные — на прописные. Используется стандартный английский алфавит. Расшифровать и вывести это сообщение.
Ej pda bwya kb wixecqepu, nabqoa pda pailpwpekj pk cqaoo. Wra Ywaown!
In the face of ambiguity, refuse the temptation to guess. Ave Caesar!
EJudge: Theodor 'Шифр Фёдора'
Робот Фёдор посылает с космической станции зашифрованные сообщения, в которых читать надо каждую N-ю букву. Ввести две строки — зашифрованное сообщение (с лишними буквами), и слово, которое заведомо присутствует где-то в исходном сообщении. Вывести самую длинную из подходящих расшифровок. Если слово не встречается в шифровке, вывести "<NO>".
Vikingsed xeric sortrsebony capel teakungetUginesheemolleeq criteriumoud antisel
inexistence antiselectio
Внимание! Часть домашнего задания надо оформлять как функцию. Просьба внимательно прочитать правила и спрашивать, если что не так.
- Прочитать и прощёлкать:
про форматные строки в tutorial (или в русском переводе)
про функции на pythontutor(рекурсию можно не трогать)
про базовые инструменты tkinter в копипасте из Morioh
EJudge: DummyFunction 'Примитивная функция'
Это примитивная задача типа «написать функцию». Она нужна для того, чтобы освоить такой тип задач. Написать функцию divides(a, b), которая для целых a и b возвращает целый результат деления a на b, если a делится на b, или же деления b на a, если b делится на a, или 0 в противном случае. На 0, понятно, ничего не делится.
print(divides(1000,10), divides(64, 32768), divides(1024, 12345))
100 512 0
EJudge: ArsakSequence 'Конечная последовательность'
(Ж. Арсак) Написать функцию seq(n), которая последовательно вычисляет значения последовательности $$ {P_i} $$ для натурального n по формуле ниже, до тех пор, пока очередной член этой последовательности не станет равен 1, и возвращает наибольший элемент такой последовательности. Формула:
$$ P_0=n $$
$$ P_(i+1)=P_i/2 $$, если $$ P_i $$ чётно
$$ P_(i+1)=3P_i+1 $$, если $$ P_i $$ нечётно
print(seq(27), seq(1), seq(16), seq(101))
9232 1 16 304
EJudge: LongRepeat 'Блаблабла'
Написать функцию blah(S, P), которая проверяет, встречается ли в строке S шаблон P, и возвращает наибольшую длину подстроки, образованной повторением шаблона P, которая встречается в S. Если шаблон встречается в строке, но без повторений, возвращается 1, а если и шаблона нет — 0.
print(blah("Hey blah, blahblahblah, more than blahblah, blah-blah!", "blah"))
12
EJudge: TkinterSum 'Сумматор'
Пользуясь статьёй про Tkinter, написать простейшее приложение (программу), в котором будет два поля ввода A1 и A2 типа tkinter.Entry, одно текстовое поле L типа tkinter.Label и одна кнопка B типа tkinter.Button. При нажатии кнопки в текстовом поле должна появляться сумма чисел, находящихся в полях ввода. Если хотя бы одна из строк в полях ввода не является числом, содержимое L не меняется. С самого начала поля ввода пусты, а в L записана строка "0". Условие: функция, которая считывает значения из A, проверяет их правильность и записывает результат в L, должна быть зарегистрирована при создании кнопки B как её свойство command. Внимание!. Программа должна использовать оператор import tkinter, как в примере из лекции, (а не from tkinter import *, как в статье).
23 и 456 в полях ввода A1 и A2
479 в поле вывода L
- Обратите также внимание на то, что тестированием такой программы (она ничего не вводит со стандартного ввода и ничего не выводит на стандартный вывод) занимается специальный робот. Робот тупой — мы с вами куда хитрее, так что если тесты не проходят, сигнальте мне: возможно, вы просто его перехитрили
Выглядеть должно примерно так:
- Прочитать и прощёлкать:
про списки на pythontutor
про списки в tutorial (русский перевод)
EJudge: PosCount 'Подсчёт Положительных'
Вводятся построчно последовательности чисел через запятую. Если в строке нет запятых — это конец ввода, она не учитывается. Вывести общее количество положительных чисел.
1, 3, -3, 0, 234, 657 -2, -4356, -345, 0, -11, -2134123412341234, 0, 0 777, 2 how boring!
6
EJudge: NumSearch 'Поиск Числа'
В первой строке вводится несколько (более одного) чисел через запятую. В последующих строках — произвольный текст. Последняя строка содержит одну точку, это конец ввода. Вывести, сколько раз каждое из этих чисел встречается в тексте. Достаточно воспользоваться строковым методом .count() и подсчитать количество вхождений числа как подстроки; не нужно учитывать, что одно число может встречаться внутри другого, внутри слова и т. п.
123, 2, 777, -8, 2, 100500 1w21e23qr123rwe34rt5t5 это кот на клавиатуру 8 раз сел и 22 клавиши нажал! 777777 7777 12-8=-123, ой, ошибся… .
123: 2 2: 7 777: 3 -8: 1 2: 7 100500: 0
EJudge: ThirdsOut 'Третий Лишний'
Написать функцию squeeze(), которая получает на вход числовой список, обрабатывает его, удаляя элементы, которые являются суммой предыдущего и последующего элементов, и возвращает результат.
print(squeeze([1, 5, 4, 3, 7, 6, 14, 8, 2]))
[1, 4, 3, 7, 6, 8, 2]
EJudge: BinSearch 'Двоичный поиск'
Написать функцию, binsearch(x, A), реализующую двоичный поиск элемента x по индексируемой последовательности (списку, кортежу или даже range) A. Гарантировано, что последовательность упорядочена по возрастанию. Функция возвращает True, если $$ x \in A $$ и False в противном случае.
print(binsearch(123, sorted([123, 12, 45, 67, 23, 678, 12345, 4, 23, 768])))
True
TODO
EJudge: PaidStairs 'Платная лестница'
(MCCME) Мальчик подошел к платной лестнице. Чтобы наступить на любую ступеньку, нужно заплатить указанную на ней сумму (положительное целое число). Мальчик умеет перешагивать на следующую ступеньку, либо перепрыгивать через ступеньку. Требуется узнать, какая наименьшая сумма понадобится мальчику, чтобы добраться до верхней ступеньки. На последнюю ступеньку наступать обязательно. Ввести стоимость ступенек через запятую, вывести минимальную сумму прохода.
- Пояснения и алгоритм — в полном тексте задачи
1,3,1,1,2,2
5
Написать функцию cross(width, paper, ink), которая на вход принимает три параметра — натуральное число width⩾2 и две строки единичной длины, paper, и ink. Возвращать эта функция должна строковый объект, при выводе на экран которого получается приведенная ниже фигура. Это квадрат шириной width, стороны и диагонали которого состоят из строки ink, а остальное пространство заполнено строкой paper.
- Пояснения и алгоритм — в полном тексте задачи
1 print(cross(11, ".", "*"))
*********** **.......** *.*.....*.* *..*...*..* *...*.*...* *....*....* *...*.*...* *..*...*..* *.*.....*.* **.......** ***********
Прочитать и прощёлкать занятие про двумерные массивы на pythontutor.ru
TODO EJudge
EJudge: BackBack 'Всё наоборот'
Ввести строку, содержащую пары натуральных чисел. Числа в парах разделены двоеточием. Строка начинается и заканчивается на некоторый один и тот же символ (не цифра, но в разных случаях он может быть разным), и этот же символ стоит между парами. Вывести эти числа в обратном порядке через пробел.
-12:3-4:56-7:8-9:10-
10 9 8 7 56 4 3 12
Ввести квадратную «матрицу» — последовательность строк, содержащих целые числа, разделённые пробелами. Вывести номер столбца, сумма элементов в котором наибольшая. Если таких столбцов несколько, вывести самый маленький номер.
12 34 56 78 90 23 45 67 89 2 23 65 90 12 45 13 4 35 46 57 80 79 68 57 46
2
Написать четыре функции:
screen(width, height, space), которая создаёт «текстовый экран» размером width×height, при этом «пустыми местами» в нём служат символы space. Функция возвращает только что созданный экран.
show(screen), которая выводит экран screen в виде прямоугольника
hline(screen, x0, x1, y, ink), которая заменяет в строке y экрана screen символы на позиции с x0 по x1-1 на строку ink, т. е. «рисует горизонтальную линию»
vline(screen, x, y0, y1, ink), которая заменяет в столбце x экрана screen символы на позиции с y0 по y1-1 на строку ink, т. е. «рисует вертикальную линию»
Реализация «экрана» — произвольная. Координаты всегда упорядочены, т. е. x0 ⩽ x1 и y0⩽y1, и не выходят за границы экрана.
S = screen(15, 7, '.') vline(S, 3, 2, 6, '|') hline(S, 2, 13, 3, '-') show(S)
S = screen(15, 7, '.') vline(S, 3, 2, 6, '|') hline(S, 2, 13, 3, '-') show(S)
............... ............... ...|........... ..-----------.. ...|........... ...|........... ...............
Напоминаю, что для вывода последовательности через пробел можно воспользоваться конструкцией print(*последовательность) — для начала попробуйте сами в командной строке, если ещё не.
- Прочитать и прощёлкать про множества и словари
EJudge: MostPopular 'Самые популярные'
Ввести строку, состоящую из разделённых пробелами последовательностей маленьких и больших латинских букв. Вывести, сколько различных слов (без учёта регистра) встречается в этой строке чаще всего.
dAh Dit dah dIT dAH Dit GIgly diGLy biglY GiGly bOOm quack OH quack
2
EJudge: PairCounter 'Количество пар'
Ввести строку и вывести сколько различных пар букв (без учёта регистра) можно в ней найти. Буквы проверять с помощью .isalpha()
аwба%Ба б7
3
EJudge: PublicFriend 'Знаком со всеми'
Вводятся в столбик пары натуральных чисел через запятую. Каждая пара M, N обозначает взаимное знакомство людей под номерами M и N. Ввод заканчивается парой 0, 0 (не учитывается, и вообще человек N считается незнакомым с человеком N ). Вывести через пробел в порядке возрастания номера тех, кто знаком со всеми остальными, или пустую строку, если таких нет.
7, 9 1, 7 9, 2 9, 2 9, 7 2, 9 9, 2 2, 9 7, 1 9, 2 9, 2 2, 1 7, 2 7, 9 7, 1 7, 1 0, 0
2 7
EJudge: FarGalaxy 'В далёкой галактике'
Ввести построчно четвёрки вида «число число число слово», где первые три числа — это координаты галактики по имени «слово» (некоторые галактики могут называться одинаково, но координаты у всех разные). Последняя строка ввода не содержит пробелов и не учитывается. Вывести в алфавитном порядке имена любых двух наиболее удалённых друг от друга галактик. Считается, что одинаковых расстояний в списке нет.
35.764 -797.636 -770.320 almost 88.213 -61.688 778.457 gene -322.270 -248.555 -812.730 trend 721.262 630.355 968.287 dow -895.519 -970.173 97.282 non -561.036 -350.840 -723.149 disco -151.546 -900.962 -658.862 bidder -716.197 478.576 -695.843 hawaii -744.664 -173.034 -11.211 sad -999.968 990.467 650.551 erik .
almost erik
- Почитать и прощёлкать
про файлы в учебнике
про байтвовые строки в документации
- Попробовать воспроизвести упражнения из лекции (см. видео)
- Задачи будут в следующий раз
Финальное задание (не для 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) Входной файл вводится из командной строки (а не со стандартного ввода) или при помощи tkinter.filedialog
- (+1) Длина трека вычисляется с учётом отметок о высоте, если они есть, и в предположении идеальной горизонтали, если их нет
(+1) Вывести также все путевые отметки (<wpt>) с их именами
- (+1) Вычисляется перепад высот и суммарная длина подъёмов и спусков
(+2) При наличии временных отметок (<time>) вычисляется общее затраченное время, средняя, наименьшая и наибольшая скорости
Подсказка: скорее всего, вам понадобится time и в частности time.strptime(), а также, возможно, datetime
(+2) При вычислении времени, высот и длин учитывается, что трек может состоять из нескольких сегментов <trkseg>, между которыми измерения проводить не надо. Привести пример такого трека.
- (+1) Программа работает на любом синтаксически не ошибочном gpx-файле (как минимум, с сайтов выше)
(+2) Нарисовать треки (необязательно на карте, можно MatPlotLib-ом)
- Потыкать в интересующие вас модули!
Попробовать сделать большое Д/З с помощью xml
Include: Ничего не найдено по регулярному выражению «== Д/З ==$».
Как (и зачем) написать приложение на Python?
TODO
Сторонние модули
- PyPI / pip
- «Виртуальное» окружение
- Операционная система / «дистрибутивы» модулей
Примеры
Дисциплина разработки
- Исходный текст — понятие о VCS
- Проект — понятие о зависимостях
Некоторые выводы по проекту спецкурса
Что осталось вне рамок курса
- ООП
- Разработка
Что надо в курсе изменить
Больше упражнений, возможно привязка к http://pythontutor.ru