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

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

Сравнения

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

Оператор сопоставления (введение)

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

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

   1 match input():
   2     case "1":
   3         print("It's 1")
   4     case "10":
   5         print("It's 10")
   6     case "":
   7         print("It's nothing")
   8     case var if var > 100:
   9         print(var, "is a lot!")
  10     case _:
  11         print("unknown")

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

Цикл с предусловием

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

В Python отсутствует цикл с пост-условием, потому что это было бы нарушение «блочного» принципа (cм. pep-0315). В результате стандартный шаблон «цикл по вводу» занимает все четыре секции канонической схемы цикла. В таких случаях естественно применить «моржовый оператор»:

переменная = ввод
while проверка(переменная):
    тело
    переменная = ввод

while проверка (переменная := ввод):
    тело

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

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

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

Д/З

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

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

  2. EJudge: BiquadEquation 'Биквадратное уравнение'

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

    Input:

    1,-5,4
    Output:

    -2.0 -1.0 1.0 2.0
  3. EJudge: AnyPower 'Какая-нибудь степень'

    Ввести небольшое натуральное число 2⩽N⩽1000000 и проверить, является ли оно натуральной степенью (второй и выше) натурального числа. Вывести YES или NO соответственно.

    Input:

    1024
    Output:

    YES
  4. 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
  5. EJudge: MaxSubseq 'Длиннейшая подпоследовательность'

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

    Input:

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

    4

LecturesCMC/PythonIntro2024/02_Conditionals (последним исправлял пользователь FrBrGeorge 2024-09-22 20:44:54)