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» выполняется, если он присутствует.