7719
Комментарий:
|
← Версия 57 от 2018-12-11 13:24:29 ⇥
7141
|
Удаления помечены так. | Добавления помечены так. |
Строка 17: | Строка 17: |
* Часть заданий — с использованием [[https://ejudge.cs.msu.ru/new-client?contest_id=114|EJudge]] ([[/EjudgeRegistration|как зарегистрироваться]]) === Материалы === * Базовый учебник [[https://greenteapress.com/wp/think-python-2e/|Think Python: How to Think Like a Computer Scientist]] (возможно, изучим оттуда не всё) * Учебник для начинающих [[https://opentechschool.github.io/python-beginners/ru/index.html|Введение в программирование на Python]] * Спецкурсы ВМК: * [[LecturesCMC/PythonIntro2018|текущий]] * [[LecturesCMC/PythonIntro2017|2017 года]] (есть конспекты и видеозаписи) |
|
Строка 23: | Строка 29: |
1. Повторное использование кода * Функция Python3 как именованный алгоритм * Задание и вызов функции, блок-со-сдвигом * Параметры функции * Возвращаемое значение функции * Суперпозиция функций * «Утиная типизация»: все объекты строго типизированы, но по имени этого не скажешь * ⇒ функция выполнится, если все операции в ней применимы к переданным объектам * Локальные и глобальные имена, правила видимости * [[http://pythontutor.com/visualize.html#code=a,%20b%20%3D%203,%204%0A%0Adef%20fun%28a,%20b,%20c%29%3A%0A%20%20%20%20a%20%3D%20a*2%2Bb*c%0A%20%20%20%20return%20a-1%0A%20%20%20%20%0Aprint%28fun%281,2,33%29%29%0Aprint%28fun%28a,b,22%29%29%0Ac,%20d%20%3D%201000%0Aprint%28fun%2810,c,a%29%29&cumulative=false&curInstr=0&heapPrimitives=true&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false|Пример]] 1. Условные операторы * Выполнение или невыполнение команд в зависимости от свойств данных * Простейший условный оператор * Полный вид `if` / `elif` / ... / `else` * Вложенные `if` 1. Циклическое выполнение команд в зависимости от свойств данных * Цикл `while` * Бесконечный цикл * Условные операторы в цикле * Операторы `break` и `continue`, когда нужны * Вложенные циклы 1. Составление алгоритмов на условные операторы в цикле и вложенные циклы * Каноническая схема цикла (инициализация, проверка условия, тело, изменение) * Алгоритм «поиск первого», секция `else:` в цикле |
1. [[/03_Functions|Повторное использование кода]] 1. [[/04_ConditionalRecursiuon|Условные операторы и рекурсия]] 1. [[/05_Circles|Циклы]] 1. [[/06_Homework|Выполнение домашних заданий]] 1. [[/07_Sequences|Циклы и последовательности]] 1. [[/08_Circles|Циклические алгоритмы]] 1. [[/09_Strings|Строки]] 1. [[/10_StringMethods|Строковые методы]] 1. [[/11_SplitJoin|Строковые методы .split() и .join()]] 1. [[/12_FunctionGraph|«График функции»]] 1. :( 1. [[/14_HashSets|Хеши и множества]] ----- 1. … * Составление алгоритмов на условные операторы в цикле и вложенные циклы |
Проект спецкурса по 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
- примерно так: