Логические выражения, условные операторы и цикл
Алгебра логики
Операции сравнения, тип 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
- OR: если A истинно, результат истинен, вычислять B не надо
Сравнения
Простые: == , <, !=, >= и т. п.
is , in
- Многоместные
- Таким образом,
- wait шhат?
Условные действия
Конструкция a and b or c как замена тернарной операции a ? b : c в Си
Не работает, как ожидается, если b пусто
Условная операция выражение-True if выражение-условие else выражение-false
- Блоки
- Условный оператор:
оператор … if выражение: оператор оператор оператор … оператор
- Выражение: непустое (True) или пустое (False)
Отступы в блоке одинаковые (иначе ошибка)
- Условный оператор:
- Условный оператор (общий вид):
Если бы не было elif:
Оператор match
См. pep-0634, pep-0635 и pep-0636
Это довольно сложный оператор на сопоставление структуры объекта, здесь упомянем только функцию управления потоком вычислений и прямого связывания.
Если в шаблоне присутствует константа — это сопоставление
Если в шаблоне присутствует имя — это связывание (т. н. «свободная переменная»)
Если связывание не нужно и жалко тратить имя, вместо имени можно использовать «_» — оно не запоминается в пространстве имён
Обратите внимание на то, что если в примере ввод равен "1", мы сам введённый объект теряем — он ничем не связан. Как быстрее всего задать имя введённого объекта?
Цикл while
- Каноническая схема цикла:
- например
break, continue
Клауза else — не выполняется, если выход из цикла был по break:
Цикл while и операция связывания
Пример: цикл по вводу (ещё раз привет, Си!)
Или даже while (str := input()) != "END": …
Коротко про ввод и вывод в Д/З
from math import * — математические функции
print()
input()
int(input())/float(input())
eval(input()), что такое eval() и как работает
Д/З
Более подробные формулировки задач и интерфейс для их сдачи доступны по ссылкам вида «'Имя_задачи'»
Там же имеются советы по решению и могут появляться подсказки-спойлеры (доступны, если нажать «Комментарии» в шапке страницы).
Пользоваться составными типами данных Python (кроме преобразования ввода и множественного связывания) в этих задачах нельзя.
Прочитать и прощёлкать учебник (до функций)
EJudge: MaxSubsum 'Полоса удач'
Ввести в столбик последовательность целых (положительных и отрицательных) чисел, не равных нулю; в конце этой последовательности стоит 0. Вывести наибольшую сумму последовательно идущих элементов этой последовательности (не менее одного).
2 3 -7 -1 3 4 5 -2 -4 7 8 -6 -1 0
21
EJudge: SecondMax 'Почти победа'
Ввести по одному в строке целые числа, не равные нулю (не менее одного, конец ввода — 0), вывести второй максимум последовательности (число, строго меньшее максимума последовательности, и не меньшее остальных чисел в ней), и NO, если такового нет.
1 2 3 4 3 2 1 0
3
EJudge: HalfMore 'Больше половины'
Имеется большая последовательность объектов (неважно каких), допускающих операцию сравнения. Известно, что некоторых одинаковых объектов в последовательности больше половины. Требуется, не храня последовательности, выяснить, чему они равны (т. е. вывести пример такого объекта). Ввод построчный, последняя строка — пустая. Вывод делать с помощью обычного print().
int int float int str str int str int int float int int float int float
<class 'int'>
EJudge: CubeSum 'Сумма кубов'
Ввести натуральное число N и вывести, сколько ∃ различных пар натуральных чисел A и B: A³+B³=N (с точностью до перестановки). Вещественные операции (например, кубический корень) рекомендуется использовать как можно реже.
87539319
3