Part 2

Объединение условий

Логические операторы

Условия можно объединять с помощью логических операторов and и or. Оператор and указывает, что все заданные условия должны быть истинны одновременно. Оператор or указывает, что хотя бы одно из заданных условий должно быть истинным.

Например, условие number >= 5 and number <= 8 определяет, что number должен быть одновременно не меньше 5 и не больше 8. То есть он должен находиться между 5 и 8.

number = int(input("Please type in a number: "))
if number >= 5 and number <= 8:
    print("The number is between 5 and 8")

А условие number < 5 or number > 8 определяет, что number должен быть либо меньше 5, либо больше 8. То есть он не должен находиться в диапазоне от 5 до 8.

number = int(input("Please type in a number: "))
if number < 5 or number > 8:
    print("The number is not within the range of 5 to 8")

Следующая таблица истинности показывает поведение этих операторов в разных ситуациях:

aba and ba or b
FalseFalseFalseFalse
TrueFalseFalseTrue
FalseTrueFalseTrue
TrueTrueTrueTrue

Иногда нужно узнать, что что-то не истинно. Оператор not отрицает условие:

anot a
TrueFalse
FalseTrue

Пример выше с исключенным диапазоном от 5 до 8 можно было бы запрограммировать и так:

number = int(input("Please type in a number: "))
if not (number >= 5 and number <= 8):
    print("The number is not within the range of 5 to 8")

Именно в программировании логические операторы часто называют булевыми операторами.

Объединение и цепочки условий

Следующая программа просит пользователя ввести четыре числа. Затем с помощью условий она выясняет, какое из четырех чисел самое большое:

n1 = int(input("Number 1: "))
n2 = int(input("Number 2: "))
n3 = int(input("Number 3: "))
n4 = int(input("Number 4: "))

if n1 > n2 and n1 > n3 and n1 > n4:
    greatest = n1
elif n2 > n3 and n2 > n4:
    greatest = n2
elif n3 > n4:
    greatest = n3
else:
    greatest = n4

print(f" {greatest} is the greatest of the numbers.")
Пример вывода

Number 1: 2 Number 2: 4 Number 3: 1 Number 4: 1 4 is the greatest of the numbers.

В примере выше первое условие n1 > n2 and n1 > n3 and n1 > n4 истинно только если все три условия внутри истинны.

Вложенные условные операторы

Условные операторы также можно вкладывать внутрь других условных операторов. Например, следующая программа проверяет, больше ли число нуля, а затем проверяет, четное оно или нечетное:

number = int(input("Please type in a number: "))

if number > 0:
    if number % 2 == 0:
        print("The number is even")
    else:
        print("The number is odd")
else:
    print("The number is negative or zero")

Несколько примеров того, как ведет себя эта программа:

Пример вывода

Please type in a number: 3 The number is odd

Please type in a number: 18 The number is even

Please type in a number: -4 The number is negative or zero

При вложенных условных операторах крайне важно правильно расставить отступы. Отступы определяют, какие ветви связаны друг с другом. Например, ветвь if и ветвь else с одинаковым количеством пробельных символов считаются ветвями одного и того же условного оператора.

Того же результата часто можно добиться либо с помощью вложенных условных операторов, либо с помощью условий, объединенных логическими операторами. Пример ниже функционально не отличается от примера выше в том смысле, что он выводит ровно то же самое при тех же вводах:

number = int(input("Please type in a number: "))

if number > 0 and number % 2 == 0:
    print("The number is even")
elif number > 0 and number % 2 != 0:
    print("The number is odd")
else:
    print("The number is negative or zero")

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

Вы дошли до конца этого раздела! Перейти к следующему разделу:

Текущие баллы можно посмотреть в синем индикаторе в правом нижнем углу страницы.