Различия между версиями 10 и 11
Версия 10 от 2015-03-02 14:02:12
Размер: 4466
Редактор: 172
Комментарий:
Версия 11 от 2015-03-02 20:39:55
Размер: 6722
Редактор: localhost
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 44: Строка 44:
 * Тернарная операция `выражение-1 if условие else выражение-2`
Строка 56: Строка 57:
 * Задачи /!\ '''TODO'''  * (!SecondMax) Найти второй максимум:
   Ввести список и вывести ''второй максимум'' этого списка, т. е. элемент a∈S : ∃ b∈S : b>a и a⩾c ∀c∈S, c≠b. Если второго максимума нет, вывести '''NO'''.
Строка 58: Строка 60:
   {{{
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-х попарно несовпадающих точек A,,1,,, A,,2,,, A,,3,, и A,,4,,: X,,1,,, Y,,1,,, X,,2,,, Y,,2,,, X,,3,,, Y,,3,,, X,,4,,, Y,,4,,. Вывести '''YES''', если прямая A,,1,,A,,2,, параллельна прямой A,,3,,A,,4,, (или совпадает с ней), и '''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)
   }}}

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

Видеолекции: 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)


CategoryClass

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