Differences between revisions 11 and 12
Revision 11 as of 2021-10-02 22:00:46
Size: 3350
Editor: FrBrGeorge
Comment:
Revision 12 as of 2021-10-02 22:04:51
Size: 3350
Editor: FrBrGeorge
Comment:
Deletions are marked like this. Additions are marked like this.
Line 67: Line 67:
 1. <<EJCMC(165, MutlTable, Таблица умножения)>>  1. <<EJCMC(165, MultTable, Таблица умножения)>>

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

Разбор задачи «Неравенство треугольника»

  • С вложенным if

  • С гипотезой о результате

Кстати, о максимуме из трёх:

  •    1 M = M if (M := a if a > b else b) > c else c
    

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

  • Вложенные условия → операция and

  • Любое условие из двух → or

  • Отрицание условия → not

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

  • Ленивые вычисления
  • Перепишем неравенство треугольника
    • «проверка на не-треугольник» (просто not от исходного выражения!)

    • правило раскрытия скобок и ǸOT (или наоборот ☺)

далее — булева алгебра (кажется, была в школе)…

вся правда о логических выражениях в Python

Цикл

Для записи алгоритма требуются (грубое предположение):

  1. переменные
  2. условные операторы
  3. циклы

Простой while:

   1 while условие:
   2     оператор1
   3     оператор2
   4 
  • Пример: цикл со счётчиком
  • Каноническая схема цикла:
    1. Инициализация
    2. Проверка условия
    3. Тело
    4. Изменение условия
  • Пhимер: таблица умножения на 6
  • Цикл по вводу
  • Поиск первого: флаговая переменная, break и else

  • Пропуск фрагмента кода: continue

Вложенные циклы

Принцип: внутри цикла может быть что угодно. Если там вложенный цикл. он начнётся, отработает и закончится.

  • Пример: Цикл по вводу + цикл внутри
  • Пример: Таблица умножения от 2 до 6
    • Эффект от нарушения канонической схемы

Д/З

  1. Прощёлкать:
  2. EJudge: ManualLogarithm 'Логарифм'

    Ввести положительное вещественное число Y: $$ 1/100 <= Y <= 1000 $$. Известно, что $$ 10^x=Y $$. Вычислить $$ x $$ с точностью $$ +-10^-7 $$, не используя модуль math и/или иные функции, вычисляющие логарифм. Ответом является любое число, которое отличается от правильного значения не больше, чем на $$ 10^-7 $$. Пользоваться операцией возведения в степень можно.

    Input:

    234.567
    Output:

    2.37026698989898
  3. EJudge: SquareIntersect 'Площадь пересечения'

    В столбик вводятся 2×N целых не равных нулю чисел — координаты левых верхних вершин квадратов размером 1000×1000 (N>0). Последовательность заканчивается двумя нулями. Вывести площадь пересечения всех этих квадратов — области, которая входит в каждый из них. Оси координат направлены вправо и вниз — это стандартная практика для компьютерных изображений.

    Input:

    -10
    10
    100
    100
    -300
    -200
    0
    0
    Output:

    420000
  4. EJudge: MinSin 'Наименьший синус'

    Ввести в столбик 2*N целых чисел, не равных нулю. Назовём меньшее число в очередной введённой паре A, а большее — B. Для чисел A, A+1, …, B-1, B выбирается такое, значение синуса на котором минимально. Вывести N таких чисел. A может быть больше, меньше или равно B (в последнем случае в наборе всего одно это число). Ввод заканчивается двумя нулями.

    Input:

    1
    10
    25
    9
    -200
    300
    1000
    -25
    0
    0
    Output:

    5
    11
    11
    344
  5. EJudge: MultTable 'Таблица умножения'

    Ввести два натуральных числа, M и N. Вывести таблицу умножения от 1×1 до M*N в приведённом ниже формате (по колонкам, но без учёта количества разрядов в числе).

    Input:

    4
    5
    Output:

    1 * 1 = 1; 2 * 1 = 2; 3 * 1 = 3; 4 * 1 = 4; 5 * 1 = 5
    1 * 2 = 2; 2 * 2 = 4; 3 * 2 = 6; 4 * 2 = 8; 5 * 2 = 10
    1 * 3 = 3; 2 * 3 = 6; 3 * 3 = 9; 4 * 3 = 12; 5 * 3 = 15
    1 * 4 = 4; 2 * 4 = 8; 3 * 4 = 12; 4 * 4 = 16; 5 * 4 = 20

Python/GeoPython2021/04_Loops (last edited 2021-10-31 21:49:00 by FrBrGeorge)