Различия между версиями 7 и 8
Версия 7 от 2018-10-07 10:10:12
Размер: 3686
Редактор: FrBrGeorge
Комментарий:
Версия 8 от 2018-10-09 21:28:57
Размер: 3675
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 47: Строка 47:
 1. '''TODO''' <<EJCMC(113, FractionRed, Сократить дробь)>>  1. <<EJCMC(113, FractionRed, Сократить дробь)>>

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

Алгебра логики

  • Операции сравнения, тип bool, True и False

  • Алгебра логики над bool

    • or

      and

      A

      B

      A or B

      A

      B

      A and B

      False

      False

      False

      False

      False

      False

      False

      True

      True

      False

      True

      False

      True

      False

      True

      True

      False

      False

      True

      True

      True

      True

      True

      True

  • Python3: and, or, not; низкий приоритет

  • Пустые и непустые объекты Python3
  • Алгебра логики над произвольными объектами Python3
    • OR: если A истинно, результат истинен, вычислять B не надо
      • ⇒ Python: если A истинно, результат равен A, иначе B
    • AND: если A ложно, результат ложен, вычислять B не надо
      • ⇒ Python: если A ложно, результат равен A, иначе B
    • ⇒ частичное вычисление выражений A и B (например, 3+3 or 100/0)

      or

      and

      A

      B

      A or B

      A

      B

      A and B

      Пусто

      Пусто

      B

      Пусто

      Пусто

      A

      Пусто

      Непусто

      B

      Пусто

      Непусто

      A

      Непусто

      Пусто

      A

      Непусто

      Пусто

      B

      Непусто

      Непусто

      A

      Непусто

      Непусто

      B

Выполнение, обусловленное свойствами данных

  • Условная операция выражение-True if выражение-условие else выражение-false

  • Условный оператор: if, if / else, if [/ elif [/ elif ... [else]...]]

  • Вложенный if и and

Рекурсивный вызов функции

  • Условный оператор в функции: рекурсия
    • рекурсия — «тяжелая» операция: создание/удаление контекста
    • ⇒ ограничение по глубине
    • ⇒ критерий log(N)

  • Актуально конечная рекурсия:

    1. Инициализация
    2. Проверка условия
    3. (Полезная нагрузка)
    4. Изменение объектов, участвующих в условии
  • Примитивная рекурсия (счётчик)
  • Общая рекурсия (пока данные внезапно не обретут свойства)

Д/З

  1. Прочитать и отщёлкать пятую главу учебника

  2. EJudge: AndOr 'Условное выражение'

    Ввести два объекта Python и вывести первый непустой из них. Если оба пустые, вывести NO.

    Input:

    []
    123
    Output:

    123
  3. EJudge: DotsInCircle 'Точки в круге'

    В первой строке ввести координаты центра круга и его радиус (числа x, y, r через запятую). Во второй и последующих строках ввести пары чисел — координаты точек. Ввод заканчивается парой 0,0 (она не входит в проверку!). Вывести YES, если все точки принадлежат кругу и NO, если не все. Внимание! В этом сезоне в данной задаче необходимо использовать рекурсию! Хранить последовательность и даже пользоваться циклом нельзя.

    Input:

    1,1,2
    1,2
    1,3
    2,2
    0,0
    Output:

    YES
  4. EJudge: IntPalindrome 'Число-палиндром'

    Ввести целое положительное число и проверить, является ли оно палиндромом, т. е. совпадает ли первая цифра с последней, вторая — с предпоследней и т. д. Внимание! Представлять число в виде последовательности (строки, списка и т. п.), а в этом сезоне — ещё и использовать цикл (а не рекурсию) — нельзя. Вывести YES или NO соответственно. Лидирующие нули не учитывать (числа, заканчивающиеся на 0 — автоматически не палиндромы).

    Input:

    1234321
    Output:

    YES
  5. EJudge: FractionRed 'Сократить дробь'

    Ввести два натуральных числа через запятую — числитель и знаменатель дроби, вывести эту дробь в приведённом виде: целая часть записана отдельно, следом, через пробел — дробная; числитель не имеет общих делителей со знаменателем (и, соответственно, меньше него). Если целой или дробной части нет, они (и пробел) не выводятся. Внимание! Типом fractions.Fraction и (в этом сезоне) циклом пользоваться запрещается!

    Input:

    12345, 765
    Output:

    16 7/51

LecturesCMC/PythonIntro2018/03_ConditionalsRecursion (последним исправлял пользователь FrBrGeorge 2018-10-09 21:28:57)