Различия между версиями 33 и 37 (по 4 версиям)
Версия 33 от 2017-07-06 10:00:23
Размер: 12049
Редактор: FrBrGeorge
Комментарий: short clarifications
Версия 37 от 2017-07-06 15:36:41
Размер: 16052
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 149: Строка 149:
    * ввести последовательность чисел, вывести ''второй максимум'', то есть элемент, больше которого в последоватнльности только одно значение, например, для 1,1,2,2,7,7,3,3,5,5 сторой максимум — это 5     * ввести последовательность чисел, вывести ''второй максимум'', то есть элемент, больше которого в последоватнльности только одно значение, например, для 1,1,2,2,7,7,3,3,5,5 второй максимум — это 5
Строка 180: Строка 180:
== День 4 (6 июля) ==
=== Функции (введение) ===
 * Задача повторного использования кода — макросы и подпрограммы
 * Функции в Python
  * Функция — это запись алгоритма обработки данных, а не преобразование
  * ''duck typing''
  * вызов функции — выражение, всегда есть возвращаемое значение — любой объект (например, None)
  * возвращаемое значение можно не использовать
  * Определение функции, формальные параметры
   * {*} простые примеры
  * Локальное пространство имён функции
   * просто вывод `dir()`
   * независимость имён
   * `locals()` и `globals()`
    * {*} просто вывод
   * порядок просмотра пространств
   * автоопределение локальных имён; global
    * {*}
  * {i}
   * '''''с этого момента и до конца курса каждые модуль/функция/класс в заданиях {i} должны содержать docstring с пояснением, что они делают'''''
   * ''(задания в этом'' {i} ''-блоке оформить в виде интерактивной программы и в виде модуля)''
   * Функция — сумма цифр
    * Ввести последовательность, вывести элемент с минимальной суммой цифр
     * <!> можно с помощью `min()` — как?
   * функция — расстояние между точками ( <!> на самом деле есть :) )
    * Ввести список пар вида `(1,2), (3,4), (100,100) …`, найти самый удалённые точки
 * Распаковка и запаковка параметров функций
  * ничего и нет, только списки
  * Функции с переменным количеством параметров
   * {*}
  * Распаковка последовательности при вызове
   * {*}, в т. ч. `print(*seq)`
 * {i}
  * функция, возвращающая ''список'' только целочисленных из всех параметров
 * ''Всё остальное про функции — потом, не сегодня''

=== Методы ===
 * Поля объектов, инкапсуляция
  * `dir(объект)`
  * объект.имя_поля
  * методы и … поля
 * модули, `sys.path`
  * программа на python как модуль
  * {*}

=== Строки и их методы ===
 * Строковые методы
  * все (в т. ч. `in`)
  * `replace()`
   * {*}
  * `split()` и `join()`
   * {*}
 * {i}
  * Ввести строку, заменить в ней последовательности "-" на один минус
  * Ввести запрещённое сочетание букв и строку. Вывести строку, в которой запрещённое сочетание букв не встречается (например, "ab" и "aabbcaabbb" → "cb")
  
=== Списки и их методы ===
 * все методы
 * стек, суть pop()/push(), эффективность
 * очередь и deque()
 * {i} ''Функция: список -> список''
  * Список всех делителей числа
  * Убрать из списка подряд идущие одинаковые элементы
   * <!> Для уверенных в себе: То же, но повторять, пока таких групп не останется.

== День 5 (7 июля) ==

=== Различные интересные модули ===
 * {{{random}}}
 * {{{turtle}}}
Строка 183: Строка 254:
- Python

 . - Функции, пространства имён, duck typing, распаковка/запаковка параметров, рекурсия


- Python
- Python (рассмотрено)
Строка 192: Строка 258:
- Python - Python (рассмотрено)
Строка 197: Строка 263:

. - словари
 * словари

Примерный распорядок дня

  • 10:00-10:30 — повторение и ответы на вопросы
  • 10:30-14:00 — лекции+семинары
  • 14:00-14:30 — обед
  • 14:30-16:00 — практика

Тематический план

Предполагается последовательно проходить этот план, расставляя пометки, сколько удалось сделать за день.

  • {*} — лабораторные работы / семинары (воспроизведение доски или тривиальные упражнения)

  • {i} — практические задания

Рекомендации по самостоятельному изучению

  • Д/З: установить Python и Geany (можно другие IDE) дома, если есть цель научиться чему-то ненулевому

  • Д/З: Щёлкать tutorial (определяем, кому интересно)

День 1

  • Знакомство, определение уровня знаний и глубины изложения (утро)
  • Орг: конспекты (c двух сторон: Linux+Python), практика обязательна
  • FOSS: сообщество и ПО, Linux, Python
  • Linux и командная строка:
    • «цветочек»+
      • Ядро, программный интерфейс
      • Утилиты, командный интерфейс
      • ФС, пространство имён, файловые объекты
    • ⇒ командная строка (введение)
      • КС как диалог
      • shell: интерпретатор командной строки, ЯП, оболочка надо другими программами
      • договорённости о командной строке (ключи)
      • переменные, где лежат команды (пространство имён), PATH
      • Примеры команд: - ls, cp, rm, mv, mkdir, echo, перенаправление В/В
      • имена файлов, ln, ls -i
      • Встроенная помощь man
    • {*}

      • посмотреть содержимое корня
      • посмотреть все файлы в текущем каталоге
      • посмотреть документацию к известным командам
      • создать файл, переименовать
      • создать каталог, скопировать туда файл, удалить каталог
  • Python
    • Командная строка
      • объекты, их типы
      • действия над объектами
      • неявная динамическая типизация
      • преобразование типов, type() (в т. ч. type(a)(b)) и простейший ввод-вывод
      • пространства имён, связывание объектов именами, dir()
      • множественное связывание, id()
      • help()
    • {*}

      • вычисление формул
      • поэтапное вычисление формул с использованием имён
      • online python tutor: демонстрация связывания
  • Сценарии
    • Текстовый редактор vs IDE
    • Linux, shebang
    • программа на Python
    • {*}

      • Использование geany
      • примитивный сценарий на shell
      • сделать сценарий исполняемым и переместить в каталог $HOME/bin/

      • примитивный сценарий на Python

День 2 (4 июля)

  • Python
    • понятие о модулях, from math import *

    • {i}

      • ручное развёртывание бинарного возведения в степень (например, как получить 321?)

      • вычисление формул

    • условные операторы и выражения
      • логический тип, операции сравнения
      • условное выражение a if b else c
      • базовый if
      • форматирование отступами
      • if / elif* / else
    • {*}

      • ввести два числа, вывести наибольшее
        • условным выражением
        • условным оператором
      • ввести два числа, вывести, больше, меньше или равно первое второму
      • ввести три числа, проверить неравенство треугольника (вложенный if)
    • {i}

      • ввести три числа, найти наибольшее (вложенный if)
        • условным выражением
        • условным оператором
    • алгебра логики
      • пустой объект, примеры
      • любое выражение в условии

      • таблицы истинности
      • логические операции Python, их таблицы истинности
      • примеры
    • {*}

      • ввести три числа, проверить неравенство треугольника (с помощью or)

    • {i}

    • цикл while
      • каноническая схема цикла: инициализация, проверка условия, тело, изменение
      • пример: цикл по вводу
    • {*}

      • подсчёт произведения (ввод до 0)
      • сумма N элементов арифметической прогрессии (циклом)
      • факториал
    • {i}

      • с какого элемента сумма арифметической прогрессии превысит N?
      • таблица умножения на N (в столбик)
      • подсчёт среднего (ввод до 0)
  • Python
    • Циклы (более сложные случаи)
      • условия внутри циклов, break, continue
      • поиск первого, else
      • вложенные циклы
    • {*}

      • Сумма только положительных (ввод до 0)
      • одновременный подсчёт суммы и произведения положительных чисел (используется continue для отрицательных)
      • ввести ненулевые числа, проверить, есть ли среди них отрицательные
        • без else (с break)
        • с else
      • большая таблица умножения в столбик
    • {i}

      • таблица умножения в виде матрицы по столбцам (без форматирования)

День 3 (5 июля)

  • Последовательности (введение)
    • Хранимые (строки, кортежи, списки)
      • индексирование, в т. ч. отрицательное
      • операции поэлементного сравнения
        • операция is на примере списков

      • операции + и *

      • секционирование
        • обычное
        • с шагом
        • умолчания
      • {*}

        • какая последовательность больше и почему?
        • начальный, средний и конечный элемент
        • элементы, стоящие на 1,4,7, и т. д. местах (NB off by 1)
      • {i}

        • сначала элементы, стоящие на нечётных местах, затем — на чётных, задом наперёд
  • цикл прохода по последовательности for
    • break, continue, else

    • {*}

      • выбор максимума
      • поиск 0
  • Вычисляемые (range(), enumerate())
    • типичный for
    • {*}

      • переписать на for кое-какие примеры с while
    • {i}

      • ввести последовательность чисел, вывести второй максимум, то есть элемент, больше которого в последоватнльности только одно значение, например, для 1,1,2,2,7,7,3,3,5,5 второй максимум — это 5

  • Конструктор списка
  • Конструктор генератора, работа генератора, цикл for и генераторы
  • Как работает множественное связывание
    • распаковка последовательностей при связывании
    • в цикле for (последовательность последовательностей)
    • a,b,*c,d = "Qwertyuiop"

  • Кратко о строках
    • +, *
    • "".format()

  • {i}

    • Вывести все стороны и площади треугольников, стороны которых — однозначные положительные целые числа (не надо использовать конструктор, это жесть!)
      • использовать формулу Герона
      • не забыть, что 1 2 3, 1 3 2 и прочие перестановки — один и тот же треугольник, выводить один раз1
    • вывести таблицу умножения от 1 до 12 (сначала без "".format(), потом (если успеете) с ним):

      •     1*1 = 1   2*1 = 2   3*1 = 3
            1*2 = 2   2*2 = 4   3*2 = 6
            ...
            1*12 = 12 2*12 = 24 3*12 = 36
            4*1 = 4   5*1 = 5   6*1 = 6
            4*2 = 8   5*2 = 10  6*2 = 12
            ...
            4*12 = 48 5*12 = 60 6*12 = 72
            7*1 = 7   8*1 = 8   9*1 = 9
            7*2 = 14  8*2 = 16  9*2 = 18
            ...
    • Ввести строку, вывести, сколько в ней гласных (подсказка: c in "aeoiu" :) ), методами не пользоваться

    • Ввести список запрещённых слов в формате "слово1","слово2",..., затем вводить строки до тех пор пока последняя не окажется пустой (это так же, как ввод до 0). Вывести, сколько строк содержали запрещённые слова

День 4 (6 июля)

Функции (введение)

  • Задача повторного использования кода — макросы и подпрограммы
  • Функции в Python
    • Функция — это запись алгоритма обработки данных, а не преобразование
    • duck typing

    • вызов функции — выражение, всегда есть возвращаемое значение — любой объект (например, None)
    • возвращаемое значение можно не использовать
    • Определение функции, формальные параметры
      • {*} простые примеры

    • Локальное пространство имён функции
      • просто вывод dir()

      • независимость имён
      • locals() и globals()

        • {*} просто вывод

      • порядок просмотра пространств
      • автоопределение локальных имён; global
        • {*}

    • {i}

      • с этого момента и до конца курса каждые модуль/функция/класс в заданиях {i} должны содержать docstring с пояснением, что они делают

      • (задания в этом {i} -блоке оформить в виде интерактивной программы и в виде модуля)

      • Функция — сумма цифр
        • Ввести последовательность, вывести элемент с минимальной суммой цифр
          • <!> можно с помощью min() — как?

      • функция — расстояние между точками ( <!> на самом деле есть :) )

        • Ввести список пар вида (1,2), (3,4), (100,100) …, найти самый удалённые точки

  • Распаковка и запаковка параметров функций
    • ничего и нет, только списки
    • Функции с переменным количеством параметров
      • {*}

    • Распаковка последовательности при вызове
      • {*}, в т. ч. print(*seq)

  • {i}

    • функция, возвращающая список только целочисленных из всех параметров

  • Всё остальное про функции — потом, не сегодня

Методы

  • Поля объектов, инкапсуляция
    • dir(объект)

    • объект.имя_поля
    • методы и … поля
  • модули, sys.path

    • программа на python как модуль
    • {*}

Строки и их методы

  • Строковые методы
    • все (в т. ч. in)

    • replace()

      • {*}

    • split() и join()

      • {*}

  • {i}

    • Ввести строку, заменить в ней последовательности "-" на один минус
    • Ввести запрещённое сочетание букв и строку. Вывести строку, в которой запрещённое сочетание букв не встречается (например, "ab" и "aabbcaabbb" → "cb")

Списки и их методы

  • все методы
  • стек, суть pop()/push(), эффективность
  • очередь и deque()
  • {i} Функция: список -> список

    • Список всех делителей числа
    • Убрать из списка подряд идущие одинаковые элементы
      • <!> Для уверенных в себе: То же, но повторять, пока таких групп не останется.

День 5 (7 июля)

Различные интересные модули

  • random

  • turtle


TODO Здесь пока не разобрано

- Python (рассмотрено)

  • - методы объектов, dir(объект) — введение - методы списков

- Python (рассмотрено)

  • - строки и их методы - форматирование строк

- Python

  • словари
  • globals(), locals(), распаковка/запаковка именованных параметров

- Python

  • Генераторы, конструкторы генераторов

- Python

  • Модули как пространства имён
  • - Классы, …, перегрузка операций

- Python

  • - Ещё классы, объектное планирование и ООП

- Python / OS

  • - модули os, sys; написание кроссплаформенных приложений

- Python / OS

  • - модуль subprocess

Python/Summer2017 (последним исправлял пользователь FrBrGeorge 2021-04-27 20:23:39)