Различия между версиями 11 и 12
Версия 11 от 2015-03-02 20:39:55
Размер: 6722
Редактор: localhost
Комментарий:
Версия 12 от 2015-03-02 22:03:08
Размер: 7748
Редактор: localhost
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 100: Строка 100:
 * <!> (Labyrinth) Обход лабиринта:
  Ввести заданный построчно лабиринт размером N×N. Каждая из N строк ввода содержит N символов: «'''.'''» — проходимый участок и «'''#'''» — непроходимый. Левый верхний и правый нижний участки лабиринта проходимы. С одного проходимого участка можно попасть на соседний либо по вертикали, либо по горизонтали. Проверить, можно ли попасть из левого верхнего участка в правый нижний, и вывести '''YES''', если можно, и '''NO''', если нельзя.

  {{{
  ...........
  .#.###.###.
  .#...#...#.
  .#.#####.#.
  .#.....#.#.
  ##.###.###.
  .....#.#.#.
  .#.###.#.##
  .#...#.#...
  ##.#.###.##
  ...#.......
  }}}

  {{{
  YES
  }}}

Командный интерпретатор; простые типы данных; управление ходом выполнения

Видеолекции: 1, 2

История Python. Командная строка

  • Россум,_Гвидо_ван

  • Влияние ЯП 80-х годов на концепцию Python (ABC, Modula, ...)
  • Мощность сообщества и кодовой базы, стандартный модули и Python Package Index

  • Свободное лицензирование

Работа в командной строке

  • Командная строка - калькулятор
  • Подсистема помощи
    • Просто help()

    • Команда help(объект) и что она делает

    • Интерактивная HTML-документация
  • Объекты Python
    • Создание объектов при интерпретации команд
    • Имена объектов и счётчик ссылок (sys.getrefcount)

    • Операция = как операция именования a == b vs. a is b

      • Изменение объекта по любому из имён
    • Области видимости, функция dir() и dir(объект)

  • Различные удобства ЯП, возникающие уже в командной строке
  • «Продвинутые» командные надстройки:

Настройка командной строки

  • История, поиск по истории (^R)
  • Достраивание имён
  • Файлы:
    • .bashrc / .pythonstartup

Логические операции, операторы ветвления и цикла

Неявная динамическая типизация в Python

  1. Любые функции (методы) применимы к любым объектам
    • Если в процессе выполнения происходит обращение к несуществующему объекту (полю), активизируется исключение
  2. Проверка существования объекта (поля) происходит в момент обращения к енму
  3. (дополнительно) Все операции над объектами (типа +, [ , () и т. п.) — спецметоды объектов

Логические выражения

  • Сравнение, в т. ч. сравнение любого объекта с любым, операция is

  • Тип bool и операции and, or и not, условные вычисления

  • Понятие о нулевом элементе (класса) и методе __nonzero__

  • Операции and и or для произвольных объектов

    • блеск и нищета конструкции вида a = b and c or d
  • Тернарная операция выражение-1 if условие else выражение-2

Множественное присваивание

Конструкции типа a,b,c=d,e,f=1,2,"". Атомарность множественного присваивания и a,b=b,a

Условный оператор и операторы цикла

  • Понятие «блок с отступом» (indented block)
  • Оператор if/elif/else, неструктурная сущность elif

  • Оператор while/break/continue. Клауза else.

  • Оператор for по итерируемому объекту (__iter__). Клауза else на примере задачи поиска.

Д/З

  • Настроить какой-нибудь IDE (например, Geany), добиться работоспособности

  • Прочитать и прощёлкать
  • (SecondMax) Найти второй максимум:

    • Ввести список и вывести второй максимум этого списка, т. е. элемент a∈S : ∃ b∈S : b>a и a⩾c ∀c∈S, c≠b. Если второго максимума нет, вывести NO.

      3,4,5,6,7
      6
  • (Else) Точки в круге:
    • В первой строке ввести координаты центра круга и его радиус (три числа через запятую). Во второй строке ввести координаты точек (чётное количество чисел через запятую). Вывести YES, если все точки принадлежат кругу и NO, если не все.

      0,0,10
      1,2,3,4,5,6,5,4,3,2
      YES
  • (ParallelSegments) Параллельные отрезки:

    • Ввести восемь чисел через запятую — целочисленные координаты 4-х попарно несовпадающих точек A1, A2, A3 и A4: X1, Y1, X2, Y2, X3, Y3, X4, Y4. Вывести YES, если прямая A1A2 параллельна прямой A3A4 (или совпадает с ней), и NO — если не параллельна.

      1,2,7,14,8,8,18,28
      YES
  • (SectionShuffle) Перетасовать кортеж:

    • Ввести последовательность A объектов Python через запятую и вывести кортеж, состоящий из элементов последовательности, стоящих на чётных местах — в обратном порядке (включая A[0]), после которых идут элементы последовательности, стоящие на нечётных местах.

      '0', 1, 2, '3', 4, 5, '6', 7, 8, '9', 10, 11
      (10, 8, '6', 4, 2, '0', 1, '3', 5, 7, '9', 11)
  • <!> (Labyrinth) Обход лабиринта:

    • Ввести заданный построчно лабиринт размером N×N. Каждая из N строк ввода содержит N символов: «.» — проходимый участок и «#» — непроходимый. Левый верхний и правый нижний участки лабиринта проходимы. С одного проходимого участка можно попасть на соседний либо по вертикали, либо по горизонтали. Проверить, можно ли попасть из левого верхнего участка в правый нижний, и вывести YES, если можно, и NO, если нельзя.

        ...........
        .#.###.###.
        .#...#...#.
        .#.#####.#.
        .#.....#.#.
        ##.###.###.
        .....#.#.#.
        .#.###.#.##
        .#...#.#...
        ##.#.###.##
        ...#.......
        YES


CategoryClass

Lectures/PythonIntro/2015-03-02 (последним исправлял пользователь Class1 2015-03-17 14:55:03)