Различия между версиями 13 и 14
Версия 13 от 2015-03-04 01:36:18
Размер: 5100
Редактор: localhost
Комментарий:
Версия 14 от 2015-03-04 01:53:55
Размер: 5104
Редактор: localhost
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 60: Строка 60:
 1. <<Homework(ejcmc:,ParallelSegments, Параллельные отрезки)>>
 1. <<Homework(ejcmc:,SectionShuffle, Перетасовать кортеж)>>
 1. <<Homework(ejcmc:,RepeatedString, Строка — повторение подстроки)>>
 1. <<Homework(ejcmc:,Labyrinth, Обход лабиринта)>>
 1. <<Homework(domari:,ParallelSegments, Параллельные отрезки)>>
 1. <<Homework(domari:,SectionShuffle, Перетасовать кортеж)>>
 1. <<Homework(domari:,RepeatedString, Строка — повторение подстроки)>>
 1. <<Homework(domari:,Labyrinth, Обход лабиринта)>>

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

Видеолекции: 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), добиться работоспособности

  • Прочитать и прощёлкать

Задачи и упражнения:

  1. (domari:SecondMax) Найти второй максимум

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

    Input:

    3,4,5,6,7
    Output:

    6
  2. (domari:Else) Точки в круге

    В первой строке ввести координаты центра круга и его радиус (три числа через запятую). Во второй строке ввести координаты точек (чётное количество чисел через запятую). Вывести YES, если все точки принадлежат кругу и NO, если не все.

    Input:

    0,0,10
    1,2,3,4,5,6,5,4,3,2
    Output:

    YES
  3. (domari:ParallelSegments) Параллельные отрезки

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

    Input:

    1,2,7,14,8,8,18,28
    Output:

    YES
  4. (domari:SectionShuffle) Перетасовать кортеж

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

    Input:

    '0', 1, 2, '3', 4, 5, '6', 7, 8, '9', 10, 11
    Output:

    (10, 8, '6', 4, 2, '0', 1, '3', 5, 7, '9', 11)
  5. (domari:RepeatedString) Строка — повторение подстроки

    Ввести непустую строку s. Найти такое наибольшее число k и такую строку t, что s совпадает со строкой t, выписанной k раз подряд. Вывести k.

    Input:

    abcabcabcabc
    Output:

    4
  6. (domari:Labyrinth) Обход лабиринта

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

    Input:

    ...........
    .#.###.###.
    .#...#...#.
    .#.#####.#.
    .#.....#.#.
    ##.###.###.
    .....#.#.#.
    .#.###.#.##
    .#...#.#...
    ##.#.###.##
    ...#.......
    Output:

    YES


CategoryClass

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