Различия между версиями 29 и 31 (по 2 версиям)
Версия 29 от 2017-07-05 13:57:52
Размер: 11687
Редактор: FrBrGeorge
Комментарий:
Версия 31 от 2017-07-05 14:44:30
Размер: 11822
Редактор: FrBrGeorge
Комментарий: передумали
Удаления помечены так. Добавления помечены так.
Строка 132: Строка 132:
  * {*}
   * какая последовательность больше и почему?
   * начальный, средний и конечный элемент
   * элементы, стоящие на 1,4,7, и т. д. местах (NB off by 1)
  * {i}
   * сначала элементы, стоящие на нечётных местах, затем — на чётных, задом наперёд
   * {*}
   * какая последовательность больше и почему?
     * начальный, средний и конечный элемент
   * элементы, стоящие на 1,4,7, и т. д. местах (NB off by 1)
    * {i}
     * сначала элементы, стоящие на нечётных местах, затем — на чётных, задом наперёд
Строка 140: Строка 140:
  * {*}
   * выбор максимума
   * поиск 0
  * {*}
  * выбор максимума
    * поиск 0
Строка 146: Строка 146:
  * {*}
   * переписать на for кое-какие примеры с while
  * {i}
   * переписать на for остальные
   * ввести последовательность чисел, вывести ''второй максимум'', то есть элемент, больше которого в последоватнльности только одно значение, например, для 1,1,2,2,7,7,3,3,5,5 сторой максимум — это 5
   * {*}
    * переписать на for кое-какие примеры с while
   * {i}
    * ввести последовательность чисел, вывести ''второй максимум'', то есть элемент, больше которого в последоватнльности только одно значение, например, для 1,1,2,2,7,7,3,3,5,5 сторой максимум — это 5
Строка 159: Строка 158:
   * использовать формулу Горона    * использовать формулу Герона
Строка 161: Строка 160:
  * вывести таблицу умножения от 1 до 12:
{{{
1*1 = 1 2*1 = 2 3*1 = 3
1*2 = 2 2*2 = 4 3*2 = 6
...
4*1 = 1
...
}}}
  * вывести таблицу умножения от 1 до 12 (сначала без {{{"".format()}}}, потом (''если успеете'') с ним):
    {{{
    
1*1 = 1 2*1 = 2 3*1 = 3
    1*2 = 2 2*2 = 4 3*2 = 6
    ...
    4*1 = 4 5*1 = 5 6*1 = 6
    4*2 = 8 5*2 = 10 6*2 = 12
    ...
    }}}

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

  • 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"

  • {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
            ...
            4*1 = 4  5*1 = 5  6*1 = 6
            4*2 = 8  5*2 = 10 6*2 = 12
            ...
    • Ввести строку, вывести, сколько в ней гласных (подсказка c in "aeoiu" :) ), методами не пользоваться

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


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

- Python

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

- 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)