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

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

Сравнения

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

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

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

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

   1 match input():
   2     case "1":
   3         print("It's one")
   4     case "10":
   5         print("It's ten")
   6     case "":
   7         print("It's nothing")
   8     case var if var.isdigit() and int(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)

Про ввод и вывод в Д/З

Принцип работы EJudge:

Особенности оформления решений:

Что такое eval() и как работает

Д/З

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

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

  1. 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
  2. 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
  3. EJudge: CubeSum 'Сумма кубов'

    Ввести натуральное число N и вывести, сколько ∃ различных пар натуральных чисел A и B: A³+B³=N (с точностью до перестановки).

    • <!> Вещественные операции (например, кубический корень) рекомендуется использовать как можно реже.

    Input:

    87539319
    Output:

    3
  4. EJudge: HalfMore 'Больше половины'

    Имеется большая последовательность объектов (неважно каких), допускающих операцию сравнения. Известно, что некоторых одинаковых объектов в последовательности больше половины. Требуется, не храня последовательности, выяснить, чему они равны (т. е. вывести пример такого объекта). Ввод построчный, последняя строка — пустая. Вывод делать с помощью обычного print().

    Input:

    int
    int
    float
    int
    str
    str
    int
    str
    int
    int
    float
    int
    int
    float
    int
    float
    Output:

    <class 'int'>

LecturesCMC/PythonIntro2026/02_Conditionals (последним исправлял пользователь FrBrGeorge 2026-09-21 15:55:23)