Различия между версиями 38 и 57 (по 19 версиям)
Версия 38 от 2018-09-18 06:56:13
Размер: 7719
Редактор: FrBrGeorge
Комментарий:
Версия 57 от 2018-12-11 13:24:29
Размер: 7141
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 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
  • Вторая половина курса — повторение с объяснениями и дополнениями
  • Ссылаться на лекциях на документацию, давать её в Д/З
  • Изрядное число простых упражнений по каждой теме
  • Некоторое количество домашних заданий (возможно, в конце)

Материалы

Введение в ЯП Python3

(по мере составления планов лекций / домашних заданий план на этой странице будет превращаться в ссылки на страницы лекций)

  1. Python: история и современность

  2. Понятие управляемого вычислителя

  3. Именование объектов и командные сценарии (программы)

  4. Повторное использование кода

  5. Условные операторы и рекурсия

  6. Циклы

  7. Выполнение домашних заданий

  8. Циклы и последовательности

  9. Циклические алгоритмы

  10. Строки

  11. Строковые методы

  12. Строковые методы .split() и .join()

  13. «График функции»

  14. :(

  15. Хеши и множества


    • Составление алгоритмов на условные операторы в цикле и вложенные циклы
    • Много упражнений

  1. Методы объектов
    • Метод как функция:
      • Уже существующая для данного объекта
      • Заведомо применимая к данному объекту
      • Имеющая доступ к внутренностям объекта
    • Инкапсуляция
    • Примеры числовых и строковых методов (не все!)

    • dir(объект)

  2. Кортежи
    • Понятие индексируемой последовательности
    • Операции над последовательностями
    • Индексирование (в т. ч. с отрицательным индексом)
    • Секционирование
    • операция in

    • операции поэлементного сравнения
  3. Списки
    • Понятие модифицируемой последовательности, списки
    • append(), pop(), insert(), del
    • Замена элемента списка
    • Если у списка несколько имён, он всё равно один, и замена «видна» отовсюду
    • Уникальный идентификатор объекта id(объект), сравнение is

    • удаление/вставка/замена секций
    • Операции изменения (вида имя операция= выражение, отличие в работе += для списков и кортежей

    • Алгоритмы, использующие модифицированные последовательности
    • TODO а какие?

  4. Строки
    • Задание, операции над
    • Особенности индексирования и in; секционирование

    • форматирование (в первую очередь f"", но и .format(); не всё)

    • Некоторые методы (не все)

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

  1. Открытая разработка и сообщество, свободное лицензирование
  2. Цикл for

    • Проход последовательности циклом
    • использование range()

    • использование enumerate()

  3. Алгебра логики, пустые объекты Python
  4. Модули
    • Стандартные модули (некоторые)
    • Написание своих модулей
    • PyPI, установка модулей с помощью pip

  5. Словари
    • ...
  6. Работа с файлами
    • ...

...

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
      

Python/PsyPython2018 (последним исправлял пользователь FrBrGeorge 2018-12-11 13:24:29)