Conditions: if, then, else - Learn Python 3 - Snakify

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