Lesson 3
Условия: if-then-else
1. Синтаксис
Все программы первого урока выполнялись последовательно, строка за строкой. Никакая строка не может быть пропущена.
Рассмотрим следующую задачу: для данного целого X определим ее абсолютное значение. Если X> 0, то программа должна печатать значение X, иначе оно должно печатать -X. Такое поведение невозможно достичь с помощью последовательной программы. Программа должна условно выбрать следующий шаг. Вот где помогают условия:
x = int(input()) if x > 0: print(x) else: print(-x)
Эта программа использует условный оператор if
. После того if
мы положим условие (x > 0)
следующее двоеточием. После этого мы помещаем блок инструкций, который будет выполняться только в том случае, если условие истинно (т.е. имеет значение True
). За этим блоком может следовать слово else
, двоеточие и другой блок инструкций, который будет выполняться только в том случае, если условие является ложным (т.е. имеет значение False
). В приведенном выше случае условие ложно, поэтому выполняется блок «else». Каждый блок должен иметь отступы, используя пробелы.
Подводя итог, условный оператор в Python имеет следующий синтаксис:
if condition : true-block several instructions that are executed if the condition evaluates to True else: false-block several instructions that are executed if the condition evaluates to False
Ключевое слово else
с блоком «false» может быть опущено в случае, если ничего не должно быть сделано, если условие ложно. Например, мы можем заменить переменную x
своим абсолютным значением следующим образом:
x = int(input()) if x < 0: x = -x print(x)
В этом примере переменная x
назначается -x
только если x < 0
. Напротив, команда print(x)
выполняется каждый раз, потому что она не имеет отступов, поэтому она не принадлежит блоку «истина».
Отступ является общим способом в Python для разделения блоков кода. Все инструкции в одном и том же блоке должны быть отступом одинаково, т. Е. Они должны иметь одинаковое количество пробелов в начале строки. Для отступов рекомендуется использовать 4 пробела.
Отступ - это то, что делает Python отличным от большинства других языков, в которых фигурные скобки {
и }
используются для формирования блоков.
Кстати, встроенная функция для абсолютного значения в Python:
x = int(input()) print(abs(x))
2. Вложенные условия
Любая инструкция Python может быть помещена в «истинные» блоки и «ложный» блок, включая другой условный оператор. Таким образом, мы получаем вложенные условия. Блоки внутренних условий имеют отступы, используя в два раза больше пробелов (например, 8 пробелов). Давайте посмотрим пример. Если заданы координаты точки на плоскости, напечатайте ее квадрант.
x = int(input()) y = int(input()) if x > 0: if y > 0: # x больше 0, y больше 0 print("Quadrant I") else: # x больше 0, y меньше или равно 0 print("Quadrant IV") else: if y > 0: # x меньше или равно 0, y больше 0 print("Quadrant II") else: # x меньше или равно 0, y меньше или равно 0 print("Quadrant III")
В этом примере мы используем комментарии: пояснительный текст, который не влияет на выполнение программы. Этот текст начинается с хеша #
и длится до конца строки.
3. Операторы сравнения
Обычно условие after if
имеет один или несколько из следующих операторов:
-
<
- Меньше - условие истинно, если левая сторона меньше правой.
-
>
- большая - условие истинно, если левая сторона больше правой.
-
<=
- меньше или равно.
-
>=
- больше или равно.
-
==
- равны.
-
!=
- не равный.
Например, условие x * x < 1000
означает «значение выражения x * x
меньше 1000», а условие 2 * x != y
означает «удвоенное значение переменной x
не равно значению переменной y
".
Операторы сравнения в Python могут быть сгруппированы следующим образом: a == b == c
или x <= y >= 10
. Это редкая вещь среди языков программирования.
4. Объекты Bool и логические операторы
Когда мы суммируем два целых объекта с помощью оператора +
, например 2 + 5
, мы получаем новый объект: 7
. Точно так же, когда мы сравниваем два целых числа с помощью оператора <
, как 2 < 5
, мы получаем новый объект: True
.
print(2 < 5) print(2 > 5)
True
и False
имеют специальный тип bool
. Поскольку каждое имя типа может использоваться для приведения объектов в этот тип, давайте посмотрим, что этот приведение дает для чисел:print(bool(-10)) # Правда print(bool(0)) # False - ноль - единственное ошибочное число print(bool(10)) # Правда print(bool('')) # False - пустая строка является единственной ложной строкой print(bool('abc')) # Правда
Иногда вам нужно сразу проверить несколько условий. Например, вы можете проверить, делится ли число n
на 2, используя условие n % 2 == 0
( n
дает остаток 0
при делении на 2
). Если вам нужно проверить, что два числа n
и m
оба делятся на 2, вы должны проверить как n % 2 == 0
и m % 2 == 0
. Для этого вы присоединяетесь к ним с помощью оператора and
(логическое И): n % 2 == 0 and m % 2 == 0
.
Python имеет логическое И, логическое ИЛИ и отрицание.
Оператор and
является двоичным оператором, который оценивает значение True
тогда и только тогда, когда и его левая сторона, и правая сторона являются True
.
Оператор or
является двоичным оператором, который оценивает значение True
если хотя бы одна из его сторон имеет значение True
.
Оператор not
является унарным отрицанием, за ним следует некоторое значение. Он оценивается как True
если это значение False
и наоборот.
Давайте проверим, что хотя бы одно из двух чисел заканчивается 0:
a = int(input()) b = int(input()) if a % 10 == 0 or b % 10 == 0: print('YES') else: print('NO')
Давайте проверим, что число a
положительно, а число b
неотрицательно:
if a > 0 and not (b < 0):
Вместо not (b < 0)
мы можем написать (b >= 0)
.
5. слово 'elif'
Если у вас есть более двух опций, которые можно разделить с помощью условного оператора, вы можете использовать if... elif... else
.
Давайте покажем, как это работает, переписав пример с точкой (x, y) на плоскости и квадрантами сверху:
x = int(input()) y = int(input()) if x > 0 and y > 0: print("Quadrant I") elif x > 0 and y < 0: print("Quadrant IV") elif y > 0: print("Quadrant II") else: print("Quadrant III")
В этом случае условия в if
и elif
проверяются один за другим, пока не будет найдено первое истинное условие. Затем выполняется только истинный блок для этого условия. Если все условия ложны, блок «else» выполняется, если он присутствует.