Проект спецкурса по Python3 для факультета Психологии МГУ
Цель: выявление и подготовка студентов для научно-исследовательской работы.
Задачи первого семестра:
- Обучение основам программирования и составления алгоритмов
- Обучение основам ЯП Python3
- Закладка базы для решения прикладных задач
Методика:
- Первая половина курса — азы программирования и сильно урезанное подмножество Python
- Вторая половина курса — повторение с объяснениями и дополнениями
- Ссылаться на лекциях на документацию, давать её в Д/З
- Изрядное число простых упражнений по каждой теме
- Некоторое количество домашних заданий (возможно, в конце) - Часть заданий — с использованием EJudge (как зарегистрироваться) 
 
Материалы
- Базовый учебник Think Python: How to Think Like a Computer Scientist (возможно, изучим оттуда не всё) 
- Учебник для начинающих Введение в программирование на Python 
- Спецкурсы ВМК:
Введение в ЯП Python3
(по мере составления планов лекций / домашних заданий план на этой странице будет превращаться в ссылки на страницы лекций)
- … - Составление алгоритмов на условные операторы в цикле и вложенные циклы
- Много упражнений 
 
- Методы объектов - Метод как функция: - Уже существующая для данного объекта
- Заведомо применимая к данному объекту
- Имеющая доступ к внутренностям объекта
 
- Инкапсуляция
- Примеры числовых и строковых методов (не все!) 
- dir(объект) 
 
- Метод как функция: 
- Кортежи - Понятие индексируемой последовательности
- Операции над последовательностями
- Индексирование (в т. ч. с отрицательным индексом)
- Секционирование
- операция in 
- операции поэлементного сравнения
 
- Списки - Понятие модифицируемой последовательности, списки
- append(), pop(), insert(), del
- Замена элемента списка
- Если у списка несколько имён, он всё равно один, и замена «видна» отовсюду
- Уникальный идентификатор объекта id(объект), сравнение is 
- удаление/вставка/замена секций
- Операции изменения (вида имя операция= выражение, отличие в работе += для списков и кортежей 
- Алгоритмы, использующие модифицированные последовательности
- … TODO а какие? 
 
- Строки - Задание, операции над
- Особенности индексирования и in; секционирование 
- форматирование (в первую очередь f"", но и .format(); не всё) 
- Некоторые методы (не все)
 
Программирование на Python3
- Открытая разработка и сообщество, свободное лицензирование
- Цикл for - Проход последовательности циклом
- использование range() 
- использование enumerate() 
 
- Алгебра логики, пустые объекты Python
- Модули - Стандартные модули (некоторые)
- Написание своих модулей
- PyPI, установка модулей с помощью pip 
 
- Словари - ...
 
- Работа с файлами - ...
 
...
TODO
- циклические конструкторы
- запуск программы из командной строки и перенаправление В/В
- распаковка последовательности - в =
- в функции
- в for (если это последовательность последовательностей) 
 
- стоимость append(), pop(), insert() и del
- ??? функции-генераторы (с yield и next(генератор)), это просто! - примерно так: 1 >>> def gen(): 2 ... yield 10 3 ... yield 20 4 ... print("QQ") 5 ... yield 30 6 ... 7 >>> gen 8 <function gen at 0x7fca87231488> 9 >>> generator = gen() 10 >>> generator 11 <generator object gen at 0x7fca8722cd00> 12 >>> next(generator) 13 10 14 >>> next(generator) 15 20 16 >>> next(generator) 17 QQ 18 30 19 >>> next(generator) 20 Traceback (most recent call last): 21 File "<stdin>", line 1, in <module> 22 StopIteration 
 
- примерно так: 

