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))
Advertising by Google, may be based on your interests

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")

В этом примере мы используем комментарии: пояснительный текст, который не влияет на выполнение программы. Этот текст начинается с хеша # и длится до конца строки.

Advertising by Google, may be based on your interests

3. Операторы сравнения

Обычно условие after if имеет один или несколько из следующих операторов:

<
Меньше - условие истинно, если левая сторона меньше правой.
>
большая - условие истинно, если левая сторона больше правой.
<=
меньше или равно.
>=
больше или равно.
==
равны.
!=
не равный.

Например, условие x * x < 1000 означает «значение выражения x * x меньше 1000», а условие 2 * x != y означает «удвоенное значение переменной x не равно значению переменной y ".

Операторы сравнения в Python могут быть сгруппированы следующим образом: a == b == c или x <= y >= 10 . Это редкая вещь среди языков программирования.

Advertising by Google, may be based on your interests

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) .

Advertising by Google, may be based on your interests

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

Advertising by Google, may be based on your interests