Различия между версиями 20 и 21
Версия 20 от 2018-08-10 09:15:08
Размер: 9521
Редактор: FrBrGeorge
Комментарий:
Версия 21 от 2018-08-11 12:13:38
Размер: 9487
Редактор: PaulineMatkunova
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 5: Строка 5:
Строка 9: Строка 10:
Методика:  Методика:
Строка 13: Строка 15:
 * Изрядное число простых упражнений по каждой теме   * Изрядное число простых упражнений по каждой теме
Строка 17: Строка 19:
 1.#0 Установка Python3 на рабочий компьютер  1. Установка Python3 на рабочий компьютер
Строка 22: Строка 24:
  * Командная строка `idle3`,    * Консольная командная строка,
Строка 52: Строка 54:
  * [[http://pythontutor.com/visualize.html#code=def%20fun%28a%29%3A%0A%20%20%20%20b%20%3D%20a*2%2B1%0A%20%20%20%20return%20b*3%0A%0Aa,%20b%20%3D%203,%204%0Aprint%28fun%28a%29%29%0Aprint%28fun%28b%29%29&cumulative=false&curInstr=0&heapPrimitives=true&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false|Пример]]    * [[http://pythontutor.com/visualize.html#code=def%20fun(a):
%20%20%20%20b%20=%20a*2+1
%20%20%20%20return%20b*3

a,%20b%20=%203,%204
print(fun(a))
print(fun(
b))&cumulative=false&curInstr=0&heapPrimitives=true&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=[]&textReferences=false|Пример]]
Строка 98: Строка 106:
Строка 99: Строка 108:
 1.#0 Открытая разработка и сообщество, свободное лицензирование  1. Открытая разработка и сообщество, свободное лицензирование
Строка 113: Строка 122:
Строка 116: Строка 126:
  * циклические конструкторы
  * запуск программы из командной строки и перенаправление В/В
  * распаковка последовательности
   * в =
  * в функции
  * в `for` (если это последовательность последовательностей)
  * стоимость append(), pop(), insert() и del
  * ??? функции-генераторы (с `yield` и `next(генератор)`), это просто!
   * примерно так:
  {{{#!python

* циклические конструкторы
 * запуск программы из командной строки и перенаправление В/В
 * распаковка последовательности
  * в =
  * в функции
  * в `for` (если это последовательность последовательностей)
 * стоимость append(), pop(), insert() и del
 * ??? функции-генераторы (с `yield` и `next(генератор)`), это просто!
  * примерно так:
  {{{#!python
Строка 131: Строка 142:
...  ...

Проект спецкурса по Python3 для факультета Психологии МГУ

Цель: выявление и подготовка студентов для научно-исследовательской работы.

Задачи первого семестра:

  • Обучение основам программирования и составления алгоритмов
  • Обучение основам ЯП Python3
  • Закладка базы для решения прикладных задач

Методика:

  • Первая половина курса — азы программирования и сильно урезанное подмножество Python
  • Вторая половина курса — повторение с объяснениями и дополнениями
  • Ссылаться на лекциях на документацию, давать её в Д/З
  • Изрядное число простых упражнений по каждой теме
  • Некоторое количество домашних заданий (возможно, в конце)

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

  1. Установка Python3 на рабочий компьютер
    • /!\ Найти/сделать видео

    • Устроить install fest для всех, кто не справился
  2. Понятие управляемого вычислителя
    • Понятие командной строки (команда → интерпретация → выполнение → диагностика →)
    • Консольная командная строка,
    • «Калькулятор» — числа, арифметические операции, длинные целые, 1.1+2.2

    • Строки и простейшие операции над ними
    • Типы объектов (пока знаем целые, вещественные, строки и функции), функция type()

    • Использование функций (abs(), max(), round(), bin(), hex() …)

    • Тип bool, операции сравнения (в том числе многоместные вида a < b < c < d)

    • последовательные вычисления в командной строке с ручным копированием промежуточных результатов
  3. Именование
    • Связывание результатов именем и обращение к ним по имени
    • Допустимые имена
    • Представление о пространстве имён, dir()

    • Создание объектов при вычислении выражения
    • Множественное связывание (a, b, c = 1, 3, 5 и a = b = c = 5)

    • Последовательные вычисления в командной строке с именованием промежуточных результатов
  4. Редактирование и запуск сценариев (программ)
    • Понятие текстового редактора
    • Работа в текстовом редакторе idle3, запуск программы

    • Отличие от работы в командной строке, функция print()

    • Магический оператор ввода int(input())

    • Модуль math и математические функции

    • Обработка файла интерпретатором
  5. Повторное использование кода
    • Функция Python3 как именованный алгоритм
    • Задание и вызов функции, блок-со-сдвигом
    • Параметры функции
    • Возвращаемое значение функции
    • Суперпозиция функций
    • «Утиная типизация»: все объекты строго типизированы, но по имени этого не скажешь
      • ⇒ функция выполнится, если все операции в ней применимы к переданным объектам
    • Локальные и глобальные имена, правила видимости

%20%20%20%20b%20=%20a*2+1 %20%20%20%20return%20b*3

a,%20b%20=%203,%204 print(fun(a)) print(fun(b))&cumulative=false&curInstr=0&heapPrimitives=true&mode=display&origin=opt-frontend.js&py=3&rawInputLstJSON=[]&textReferences=false|Пример]]

  1. Условные операторы
    • Выполнение или невыполнение команд в зависимости от свойств данных
    • Простейший условный оператор
    • Полный вид if / elif / ... / else

    • Вложенные if

  2. Циклическое выполнение команд в зависимости от свойств данных
    • Цикл while

    • Бесконечный цикл
    • Условные операторы в цикле
    • Операторы break и continue, когда нужны

    • Вложенные циклы
  3. Составление алгоритмов на условные операторы в цикле и вложенные циклы
    • Каноническая схема цикла (инициализация, проверка условия, тело, изменение)
    • Алгоритм «поиск первого», секция else: в цикле

    • Много упражнений

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

    • dir(объект)

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

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

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

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

  7. Строки
    • Задание, операции над
    • Особенности индексирования и 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)