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

Содержание предыдущей лекции

TODO Этот кусок нужен только в этом году из-за того, что предыдущей лекции не было

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

Сравнения

Условные действия

Оператор match

См. pep-0634, pep-0635 и pep-0636

Это довольно сложный оператор на сопоставление структуры объекта, здесь упомянем только функцию управления потоком вычислений и прямого связывания.

   1 match int(input()):
   2     case 1:
   3         print("It's 1")
   4     case 10:
   5         print("It's 10")
   6     case var:
   7         print(var, "is unknown")

Обратите внимание на то, что если в примере ввод равен "1", мы сам введённый объект теряем — он ничем не связан. Как быстрее всего задать имя введённого объекта?

Цикл while

Цикл while и операция связывания

Пример: цикл по вводу (ещё раз привет, Си!)

   1 while str := input():
   2     print(str)

Или даже while (str := input()) != "END": …

Коротко про ввод и вывод в Д/З

Д/З

Более подробные формулировки задач и интерфейс для их сдачи доступны по ссылкам вида «'Имя_задачи'»

Пользоваться составными типами данных Python (кроме преобразования ввода и множественного связывания) в этих задачах нельзя.

  1. Прочитать и прощёлкать учебник (до функций)

  2. EJudge: SquareEquation 'Квадратное уравнение'

    Ввести через запятую три числа: a, b и c, вывести все вещественные решения уравнения $$ax^2+bx+c=0$$. При $$a\ne 0$$ это уравнение превращается в квадратное. Решения выводить через пробел в порядке возрастания, если решений нет, вывести 0, если их бесконечно много — -1.

    Input:

    1,-3,2
    Output:

    1.0 2.0
  3. EJudge: DotBox 'Ящик с точками'

    Вводить вещественные числа x, y и z по три в строке через запятую, считая их координатами точек (не менее одной тройки). Конец ввода — пустая строка. Вывести минимальный объём содержащего все точки параллелепипеда со сторонами, параллельными осям координат.

    Input:

    3,2,1
    -1.5, -1.5, -1.5
    1,-1.3,1
    0,0.5,0
    1,2,3
    
    Output:

    70.875
  4. EJudge: MaxSubseq 'Длиннейшая подпоследовательность'

    Вводить по одному непустую последовательность целых чисел, не равных нулю. Ноль означает конец в вода и не учитывается. Вывести наибольшую длину неубывающей подпоследовательности подряд идущих чисел исходной последовательности. Хранить введённую последовательность или её невырожденную подпоследоватиельность запрещается.

    Input:

    1
    2
    19
    10
    26
    27
    28
    2
    3
    14
    15
    1
    2
    0
    Output:

    4
  5. EJudge: SwapFive 'Вращающееся число'

    (Жак Арсак. Программирование игр и головоломок.) Для заданной цифры k найти такое минимальное целое неотрицательное число, оканчивающееся на k, что, умножая его на k, мы получим новое число, полученное из предыдущего вычеркиванием цифры k на конце и приписыванием ее в начале. Строки/кортежи и иные последовательности не использовать.

    Input:

    4
    Output:

    102564

LecturesCMC/PythonIntro2022/02_Conditionals (последним исправлял пользователь FrBrGeorge 2022-09-18 17:09:29)