Программирование на Python

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск

Преподаватели: С.С. Горшков М.К. Горденко

Учебный план

Лекции

Среда 9:30 – 10:50, zoom link

Пятница 9:30 – 10:50, zoom link

1. 8 сентября. Немного об истории. Hello, world! Понятие переменной, целочисленная арифметика. Представление целых чисел в памяти компьютера. Битовые операции. Питон как простейший калькулятор. Команда id. Модель copy-on-write. Операторы сравнения, присваивания. Правила именования переменных. Логический тип. None. Ленивые вычисления. Использование однострочных комментариев. Знакомство с Jupyter Notebook, docs.python.org слайды, доска, Jupyter, Jupyter PDF, обратная связь.

2. 10 сентября Условный оператор. Цикл while. Вещественные числа. Использование стандартных модулей. Модули math и decimal. Строки, форматирование строк. Знакомство с регулярными выражениями. слайды обратная связь.

3. 15 сентября Списки и кортежи. Цикл for. Основы работы с файлами. слайды код обратная связь

4. 17 сентября Функции и рекурсия. слайды код обратная связь

5. 18 сентября Сортировка в Python. Итераторы и генераторы. слайды код обратная связь

6. 22 сентября Методы генераторов. Именованные кортежи, двусторонняя очередь. Декораторы. слайды кодобратная связь

7. 24 сентября Функциональное программирование. Модули itertools и operator. Знакомство с аргументами командной строки, работой с файловой системой с помощью модуля os предварительные слайды код: main.py, gcd_many.py обратная связь

8. 29 сентября Множества и словари. Модуль collections. слайды обратная связь

9. 1 октября Основы ООП: Инкапсуляция. Классы в Python. Статические поля. Методы классов, арифметические magic методы, строковое представление классов. слайды код обратная связь

10. 2 октября Продвинутые возможности работы с классами. Методы класса и статические методы. Property. Наследование и полиморфизм в Python. Класс как пространство имён. слайды код обратная связь

11. 6 октября Абстрактные классы, слоты, работа с файловой системой, работа с аргументами командной строки, пакеты и модули, pip, нововведения Python 3.8 слайды код обратная связь

12. 8 октября Асинхронность в Python слайды код первоисточник обратная связь

13. 13 октября. Основы организации компьютерных сетей. Основы TCP/IP. Основы DNS. Основы HTTP. requests слайды обратная связь

Семинары

БКНАД211: Четверг 11:10 – 12:30, zoom, Пятница 11:10 – 12:30, zoom

БКНАД212: Четверг 9:30 – 10:50, zoom, Пятница 11:10 – 12:30, zoom

1. 9 сентября. Решение проблем с установкой интерпретатора языка. Настройка PyCharm и дебаг кода. Практика работы с целыми числами. Целочисленное деление с отрицательными числами в языке Python. Закон де Моргана. Знакомство со строками. Арифметические операции со строками. Понятие неизменяемого объекта, неизменяемость строк. Знакомство с Яндекс.Контестом. Решение задач. слайды colab с кодом с семинара (из Pycharm) обратная связь

2. 10 сентября Продолжение лекции. Решение задач. colab с кодом с семинара (из Pycharm) обратная связь

3. 16 сентября Работа со стандартным вводом как с файлом. Байтовые строки. Разбор задач на темы: списки, кортежи, цикл for. Регулярные выражения. слайды код 212 код 211 про регулярки обратная связь

4. 17 сентября Продолжение решения задач на регулярные выражения. Решение задач на функции и рекурсию. код 211 обратная связь

5. 18 сентября Решение задач. Бинарный поиск код 211 код 212 слайды обратная связь

6. 23 сентября Практика работы с декораторами. docstring. Декоратор @functools.wraps. слайды код 211 код 212 обратная связь

7. 24 сентября Практика работы с декораторами. Практика использования методов функционального программирования в языке Python код: sem211_* код: sem212_* обратная связь

8. 30 сентября Множества и словари. Модуль collections. Решение задач: сначала B, N из ДЗ7, PokeMon, задача про непрерывный подмассив с суммой N, G, U из ДЗ7 (сколько успеем) код 211 код 212 обратная связь

9. 1 октября Классы в Python. Методы классов код 211 код 212 обратная связь

10. 2 октября Работа с магическими методами в Python. Обработка ошибок. Иерархия исключений. Создание пользовательских классов исключений слайды про исключения код 211 задачи 212 код исключения обратная связь

11. 7 октября Написание телеграм-бота обратная связь

12. 8 октября Тестирование. Написание телеграм-бота код testing обратная связь

13. 14 октября. Регулярные выражения: продолжение. Парсинг страниц: BeautifulSoup, формат XML. Работа с API слайды WIP обратная связь


ДЗ

После почти каждого семинара вам будет выдано оцениваемое домашнее задание. На выполнение задания дается 8 дней от момента начала дня соответствующего семинара.

В каждом контесте можно использовать только те приемы, которые обсуждались на предшествующих лекциях и семинарах

По вопросам получения логинов-паролей пишите лектору

ДЗ 1 (Арифметика)

ДЗ 2 (Условный оператор, цикл while, вещественные числа)

ДЗ 3 (Строки, цикл for)

ДЗ 4 (Функции и рекурсия)

ДЗ 5 (Списки и сортировка) – первые 10 задач на списки (в них пользоваться сортировками нельзя)

ДЗ 6 (Функциональное программирование)

ДЗ 7 (Множества и словари)

ДЗ 8 (Классы)

ДЗ 9 (Все темы, PEP 8)

Проект 1. Написать телеграм-бот (можно вк, дискорд), который будет делать что-нибудь полезное. Число методов - не менее 5, желательно как можно более разнородные. Это творческое задание, в нём формальные критерии избыточны.

Проект 2. Написать тесты к проекту 1, максимально покрыв его функциональность. Будет оцениваться корректность выбора метода тестирования/задания контракта в зависимости от вашего кейса. Можете почитать про моки (mock) и использовать их


Дедлайны по ДЗ

ДЗ 1 ДЗ 2 ДЗ 3 ДЗ 4 ДЗ 5 ДЗ 6 ДЗ 7 ДЗ8 ДЗ9 тг бот тесты
16.09.21 23:59 18.09.21 23:59 22.09.21 23:59 24.09.21 23:59 01.10.21 00:59 02.10.21 23:59 09.10.21 22:00 13.10.21 02:00 15.10.21 23:59 16.10.21 23:59 17.10.21 19:59


Ссылки на интерпретатор и среду программирования

Сначала нужно установить интерпретатор языка Python 3 версии отсюда: https://www.python.org/downloads/

Затем среду программирования JetBrains PyCharm (Community) отсюда: https://www.jetbrains.com/pycharm/download


Список онлайн-ресурсов

https://pythonworld.ru/

https://docs.python.org/3

https://www.coursera.org/learn/python-osnovy-programmirovaniya

https://www.coursera.org/specializations/programming-in-python

https://vk.com/itcookies/python

http://uneex.org/LecturesCMC/PythonIntro2020