Что делает инструкция elif оператор ветвления

Разбираемся с основными составляющими функции в Python: аргументы, тело, возвращаемое значение. Изучаем структуру и синтаксис условного оператора if..elif..else. Учимся писать циклы for и while. Решаем задачи.

Logo Python Course Lesson 3

Урок 3
Функции, условные выражения и циклы

Разбираемся с основными составляющими функции в Python: аргументы, тело, возвращаемое значение. Изучаем структуру и синтаксис условного оператора if..elif..else. Учимся писать циклы for и while. Решаем задачи.

ТЕОРЕТИЧЕСКИЙ БЛОК

One

Функция

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

Существуют некоторые правила для создания функций в Python.

  1. Блок функции начинается с ключевого слова def, после которого следуют название функции и круглые скобки ().
  2. Любые аргументы, которые принимает функция, должны находиться внутри этих скобок.
  3. После скобок идет двоеточие : и с новой строки с отступом начинается тело функции.

Python Функция Синтаксис

Функция в Python. Синтаксис.

Т. е. функция определяется следующим образом: def <имя_функции>(<аргументы функции>):.

Пример функции:

def calc(a, b):
    print(a)
    print(b)
    return a + b

После создания функции, ее можно исполнять вызывая из другой функции или напрямую из оболочки Python. Для вызова функции следует ввести ее имя и добавить скобки.

Например:

Выражение return прекращает выполнение функции и возвращает указанное после выражения значение. Выражение return без аргументов — это то же самое, что и выражение return None. Соответственно, теперь становится возможным, например, присваивать результат выполнения функции какой либо переменной.

Например, создадим переменную sum и присвоим ей значение :

def calc(a, b):
    print(a)
    print(b)
    return a + b

sum = calc(21, 19)

Two

Аргументы функции

Вызывая функцию, мы можем передавать ей следующие типы аргументов:

  1. Обязательные аргументы (Required arguments)
  2. Аргументы-ключевые слова (Keyword arguments)
  3. Аргументы по-умолчанию (Default arguments)
  4. Аргументы произвольной длины (Variable-length argumens)

Рассмотрим каждый из типов подробнее.

1. Обязательные аргументы
Если при создании функции мы указали количество передаваемых ей аргументов и их порядок, то и вызывать ее мы должны с тем же количеством аргументов, заданных в нужном порядке.

Например:

# Определим функцию hour_to_sec
# Она переводит часы в секунды
def hour_to_sec(hour, min, sec):
     return hour * 60 * 60 + min * 60 + sec

# Вызовем функцию. Количество и порядок аргументов очень важны!
# Иначе результат вычислений будет неверным
>>> hour_to_sec(0, 5, 50)
350

2. Аргументы-ключевые слова
Аргументы-ключевые слова используются при вызове функции. Благодаря ключевым аргументам, вы можете задавать произвольный (то есть не такой, каким он описан при создании функции) порядок аргументов.

Например:

# Используем ту же самую функцию
def hour_to_sec(hour, min, sec):
     return hour * 60 * 60 + min * 60 + sec

# Хотя в определении первым параметром идут часы,
# мы можем передать секунды в качестве первого аргумента.
# В таком случае мы обязаны указать имя параметра
>>> hour_to_sec(sec=50, hour=0, min=5)
350

3. Аргументы по-умолчанию
Аргумент по умолчанию, это аргумент, значение для которого задано изначально, при создании функции. Если при вызове функции вы не будете передавать данный аргумент, то функция возьмет его значение по-умолчанию.

Например:

# Функция принимает два параметра: имя и возраст
# Параметр age имеет значение по-умолчанию
def person(name, age=25):
     print(name, 'is', age, 'years old')

# Передадим функции оба параметра и посмотрим результат
>>> person('Ivan', 19)
Ivan is 19 years old

# Теперь передадим функции только 1 параметр
# Параметр age примет свое значение по-умолчанию
>>> person('Ivan')
Ivan is 25 years old

4. Аргументы произвольной длины
Иногда возникает ситуация, когда вы заранее не знаете, какое количество аргументов будет необходимо принять функции. В этом случае следует использовать аргументы произвольной длины. Они задаются произвольным именем переменной, перед которой ставится звездочка (*).

Например:

# Определим функцию с произвольным количеством параметров
# Данная функция выводит переданные ей аргументы в консоль
def print_args(*args):
     print(args)

# Вызовем функцию без аргументов
>>> print_args()
()

# Вызовем функцию с 1 аргументом
>>> print_args('Строка')
('Строка')

# Вызовем функцию с 5ю аргументами
>>> print_args(1, 'Строка', 'Еще строка', 38, 4)
(1, 'Строка', 'Еще строка', 38, 4)

Задачи по теме


Функции, их типы, причины применения. Аргументы и параметры, разновидности. Примеры использования и задачи с решениями.


Three

Условные операторы

Условная инструкция if-elif-else (оператор ветвления) — основной инструмент выбора в Python. Говоря простым языком, она выбирает, какое действие следует выполнить, в зависимости от значения переменных в момент проверки условия. Существует несколько вариаций использования данной инструкции.

1. Условная конструкция if
Команда if в Python работает по той же схеме, что и в других языках программирования. Она содержит в себе логическое условие, и если это условие истинно (равно True) — выполнится блок кода, записанный внутри команды if. Если же логическое условие ложно (равно False), то блок кода записанный внутри команды if пропускается, а выполнение кода переходит на следующую после блока if строчку кода.

Python If Else Синтаксис

# Если число больше нуля, печатаем сообщение с данной информацией
# Если число НЕ больше нуля, то пропускаем содержимое блока if
# Переходим с следующей команде программы
if number > 0:
    print('Число больше нуля')
print('Идем дальше')

2. Конструкция if…else
В конструкцию if может быть добавлена команда else. Она содержит блок кода, который выполняется, если условие в команде if ложно.

Команда else является опциональной, в каждой if — конструкции может быть только одна команда else.

Например:

# Если выражение number > 0 истинно, то печатаем 'Число больше нуля'
# Если выражение number > 0 ложно, то печатаем 'Число меньше либо равно нулю'
if number > 0:
    print('Число больше нуля')
else
    print('Число меньше либо равно нулю')

3. Команда elif
Команда elif позволяет проверить истинность нескольких выражений и в зависимости от результата проверки выполнить нужный блок кода.

Как и команда else, команда elif является опциональной, однако, в отличие от команды else, у одной if-конструкции может существовать произвольное количество команд elif.

Например:

if number > 0:
    print('Число больше 0')
elif number == 0:
    print('Число равно 0')
else
    print('Число меньше 0')

А как же switch..case?
Условные конструкции, это типичная структура для реализации механизма принятия решений, и они существуют в подавляющем большинстве языков программирования. Обратите внимание, что базовый Python не поддерживает конструкцию switch/case, как, например, JavaScript, но ее можно реализовать при помощи if…elif…else конструкции.

Задачи по теме


Особенности и структура условных выражений в Python. Полные и неполные условные выражения, примеры задач с решениями.


Four

Проверка истинности в Python

Основные принципы проверки истинности выражений:

  1. Любое число, не равное 0, или непустой объект — истина.
  2. Числа, равные 0, пустые объекты и значение Noneложь.
  3. Операции сравнения применяются к структурам данных рекурсивно.
  4. Операции сравнения возвращают True или False


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

True False

Five

Циклы

Python Цикл For While Синтаксис

Циклы While и For в Python. Синтаксис.

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

  1. Цикл while
  2. Цикл for

.Поговорим о каждом из них более подробно.

1. Цикл while в Python
Инструкция while в Python повторяет указанный блок кода до тех пор, пока указанное в цикле условие будет оставаться истинным. While — один из самых универсальных циклов в Python, поэтому довольно медленный.

Цикл while записывается следующим образом:

while <условие>:
    <выражение>

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

Когда условие становится ложным интерпретатор переводит выполнение программы на строку, следующую за циклом. Рассмотрим следующий пример цикла:

apples = 5
# Запускаем цикл
while(apples > 0):
    # Работаем внутри цикла, печатаем сообщение
    print('We have', apples, 'apples')
    # Уменьшаем счетчик на 1
    apples -= 1
# Вышли из цикла
print('We have no apples any more!')

А вот как выглядит результат выполнения:

Терминал — интерактивный режим

>>> count_apples(5)
We have 5 apples
We have 4 apples
We have 3 apples
We have 2 apples
We have 1 apples
We have no apples any more!

Бесконечный цикл
Цикл while становится бесконечным в случае, когда условие цикла никогда не становится ложным. Примером задачи, для реализации которой необходим бесконечный цикл, может быть, например, создание программы «Часы», которая бесконечно будет обновлять и отображать время. Однако, часто бесконечный цикл является ошибкой начинающего программиста, который забыл добавить изменение условия цикла. Например:

num = 1
while num < 10 :

____print(‘We are still in cycle!’)

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

Задачи по теме


Задачи по циклам в Python: for, while. Синтаксис, особенности выхода из циклов, вложенные циклы.


2. Цикл for в Python

Цикл for уже чуточку сложнее, чуть менее универсальный, но выполняется гораздо быстрее цикла while. Этот цикл проходится по любому итерируемому объекту (например, строке или списку), и во время каждого прохода выполняет тело цикла. Синтаксис данного цикл выглядит следующим образом:

for <элемент> in <последовательность>:
    <выражение>

Переменной присваивается значение первого элемента последовательности, после чего выполняется выражение(или несколько выражений) внутри цикла. Затем переменной присваивается следующее по порядку значение и так далее до тех пор, пока не будут перебраны все элементы последовательности.

Например:

# Перебираем буквы в строке
word = 'Слово'
for letter in word:
    print(letter)

# Результат выполнения
С
л
о
в
о

# Перебираем элементы списка
shopping_list = ['milk', 'bread', 'cucumber', 'butter']
for element in shopping_list:
    print(element)

# Результат выполнения
milk
bread
cucumber
butter

# Перебираем элементы словаря
# По-умолчанию цикл проходится по ключам словаря
# Значение по ключу получаем самостоятельно seasons[s]
seasons = {1: 'Зима', 2: 'Весна', 3: 'Лето', 4: 'Осень'}
for s in seasons:
    print('Номер сезона:', s)
    print('Название:', seasons[s])

# Результат выполнения
Номер сезона: 1
Название: Зима
Номер сезона: 2
Название: Весна
Номер сезона: 3
Название: Лето
Номер сезона: 4
Название: Осень

Операторы continue и break
Оператор continue начинает следующий проход цикла, минуя оставшееся тело цикла ( for или while). Пример:

for letter in ‘Стол’:
____if letter == ‘т’:
________continue
____print(letter)

Результат выполнения:
С
о
л

Оператор break досрочно прерывает цикл. Пример:

for letter in ‘Стол’:
____if letter == ‘т’:
________break
____print(letter)

Результат выполнения:
С

Six

Функция range()

range() является универсальной функцией питона для создания списков( list), содержащих арифметическую прогрессию. Чаще всего она используется в циклах for.

Функция range() может принимать от одного до трех аргументов, при этом аргументами должны быть целые числа ( int). Так выглядит стандартный вызов функции range():

range(старт, стоп, шаг)

# Возвращает список целых чисел в форме
[старт, старт + шаг, старт + шаг*2 ..]

По умолчанию старт равняется нулю, шаг единице.
Примеры использований функции range() :

# Создаем последовательность с шагом 1
>>> for i in range(1, 5):
...     print(i)
1
2
3
4

# Создаем последовательность с шагом 3
>>> for i in range(0, 11, 3):
...     print(i)
0
3
6
9

Таким образом, функция range() позволяет нам генерировать ряд чисел в рамках заданного диапазона. В зависимости от того, как много аргументов вы передаете функции, вы можете решить, где этот ряд чисел начнется и закончится, а также насколько велика разница будет между двумя числами.

ПРАКТИЧЕСКИЙ БЛОК

One

Что такое IDE?

IDE (или интегрированная среда разработки) — это программа, предназначенная для разработки программного обеспечения. Как следует из названия, IDE объединяет несколько инструментов, специально предназначенных для разработки. Эти инструменты обычно включают:

  1. Редактор, предназначенный для работы с кодом (например, подсветка синтаксиса и автодополнение)
  2. Инструменты сборки, выполнения и отладки
  3. Определённую форму системы управления версиями.

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

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

Итак, что нам нужно от среды разработки? Набор функций разных сред может отличаться, но есть набор базовых вещей, упрощающих программирование:

  1. Сохранение файлов.
  2. Запуск кода из среды.
  3. Поддержка отладки, т. е. возможности пошагового выполнения кода.
  4. Подсветка синтаксиса.
  5. Автоматическое форматирование кода.

Two

PyCharm

Одной из лучших полнофункциональных IDE, предназначенных именно для Python, является PyCharm. Существует как бесплатный open-source (Community), так и платный (Professional) варианты IDE. PyCharm доступен на Windows, Mac OS X и Linux.

PyCharm «из коробки» поддерживает разработку на Python напрямую — откройте новый файл и начинайте писать код. Вы можете запускать и отлаживать код прямо из PyCharm. Кроме того, в IDE есть поддержка проектов и системы управления версиями.

PyCharm Logo

Преимущества использования PyCharm: это среда разработки для Python с поддержкой всего и вся и хорошим коммьюнити. В ней «из коробки» можно редактировать, запускать и отлаживать Python-код.

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

Three

Установка PyCharm

PyCharm Window

Как установить PyCharm? Легко! Выполняем несколько простых шагов:

  1. Скачиваем установочный файл с официального сайта. Обратите внимание, что качать надо бесплатную Community версию. Ссылка на страницу для скачивания: https://www.jetbrains.com/pycharm…
  2. Запустите установочный файл и следуйте инструкциям.

Демонстрацию установки PyCharm смотрите ниже в записи:

Хронометраж
00:25 Установка IDE PyCharm(Windows)
03:30 Настройка и запуск первой программы(Windows)
07:00 Установка IDE PyCharm(MacOS)
08:00 Настройка и запуск первой программы(MacOS)

Four

Разбираем задачи

Мы с вами изучили, как работать с условными выражениями и циклами в Python. Также выяснили, что для работы нам понадобится IDE PyCharm и получили инструкции по ее установке. Теперь пришло время воспользоваться нашими новыми знаниями и инструментами.

Приводим вам небольшой список задачек для тренировки:

Подробный разбор решения задач:

Хронометраж
00:40 Синтаксис функции
04:40 Отладка программы(Debug)
09:35 Точка входа в программу
12:00 Задача 1
18:40 Задача 2
27:10 Задача 3

Five

Домашнее задание

Предлагаем вам выполнить следующие действия:
1. Установить PyCharm(см. инструкцию по установке PyCharm в соответствующем пункте практической части урока)
2. Написать 2 небольших программы в качестве решения к следующим задачам:

Задача 1

Дан список lst = [11, 5, 8, 32, 15, 3, 20, 132, 21, 4, 555, 9, 20].
Необходимо вывести элементы, которые одновременно 1) меньше 30 и 2) делятся на 3 без остатка. Все остальные элементы списка необходимо просуммировать и вывести конечный результат.

Задача 2

Написать функцию month_to_season(), которая принимает 1 аргумент — номер месяца — и возвращает название сезона, к которому относится этот месяц.
Например, передаем 2, на выходе получаем ‘Зима’.

Делитесь возможными решениями задач в комментариях. Также предлагаем вам к рассмотрению и изучению наши варианты решений и соответствующие комментарии к каждому из заданий.

Как вам материал?

Читайте также

На чтение 4 мин Просмотров 4.4к. Опубликовано 02.04.2021

В этой статье вы научитесь создавать операторы ветвления в своих программах на Python, используя операторы if, elif и else.

Содержание

  1. Введение
  2. Использование оператора if
  3. Использование оператора if и else
  4. Использование оператора if, elif и else
  5. Вложенность операторов
  6. Заключение

Введение

В разработке бывают моменты, когда мы хотим принять решения только при выполнении определенного условия. Для этого мы используем различные формы оператора if-elif-else.

Официальная документация на сайте Python.org

Использование оператора if

Рассмотрим пример использования одиночного оператора if.

Синтаксис оператора if выглядит таким образом:

if function_returned_true:
    other_function()

Здесь программа вычисляет function_returned_true — тестовое выражение, и выполняет условия оператора только в том случае, если тестовое выражение истинно — True.

Если function_returned_true ложно — False, оператор(ы) не выполняется.

В Python тело оператора if обозначается отступом. Тело начинается с углубления, и первая неиндентированная линия отмечает конец.

Python интерпретирует ненулевые значения как True. None и 0 интерпретируются как False.

Теперь рассмотрим конкретный пример в написании кода:

chislo = 12
if chislo > 0:
    print(chislo, "Положительное число.")
print("Этот текст будет напечатан всегда.")

chislo = -5
if chislo > 0:
    print(chislo, "Положительное число.")
print("Этот текст будет напечатан всегда.")

Вывод программы:

12 Положительное число.
Этот текст будет напечатан всегда.
Этот текст будет напечатан всегда.

В приведенном выше примере chislo > 0 является тестовым выражением.

Тело if выполняется только в том случае, если оно имеет значение True.

Когда переменная chislo равна 12, тестовое выражение истинно и выполняются операторы внутри тела if.

Если переменная chislo равна -5, то тестовое выражение ложно и операторы внутри тела if пропускаются.

Оператор print выходит за пределы блока if. Следовательно, он выполняется независимо от тестового выражения.

Использование оператора if и else

Рассмотрим пример использования оператора if вместе с else.

Синтаксис оператора if вместе с else выглядит таким образом:

if function_returned_true_or_false():
    function_true()
else:
    function_false()

Оператор if и else вычисляет тестовое выражение — function_returned_true_or_false и выполняет тело if только тогда, когда условие теста истинно — True.

Если условие ложно — False, выполняется тело else. Отступ используется для разделения блоков.

Рассмотрим пример:

numeric = 7

if numeric >= 0:
    print("Положительное число или ноль")
else:
    print("Отрицательное число")

Вывод программы:

Положительное число или ноль

В приведенном выше примере, когда numeric равно 7, тестовое выражение истинно, тело if выполняется, а тело else пропускается.

Если numeric равно -5, то тестовое выражение ложно, тело else выполняется, а тело if пропускается.

Если numeric равно 0, то тестовое выражение истинно, тело if выполняется, а тело else пропускается.

Использование оператора if, elif и else

Рассмотрим пример использования оператора if вместе с elif и else.

Синтаксис оператора if вместе с elif и else выглядит таким образом:

if test_one():
    run_test_one()
elif test_two():
    run_test_two()
else:
    run_test_else()

Elif — это сокращение от else..if. Это позволяет нам проверять наличие нескольких выражений.

Если условие if ложно, то оно проверяет состояние следующего блока elif и так далее.

Если все условия ложны — False, то тело else выполняется.

Только один блок из нескольких блоков if…elif…else выполняется в соответствии с условием.

Блок if может иметь только один блок else. Но он также может иметь несколько блоков elif.

Давайте рассмотрим конкретный пример:

numeric = 4.5

if numeric > 0:
    print("Положительное число")
elif numeric == 0:
    print("Ноль")
else:
    print("Отрицательное число")

Когда переменная numeric положительна, печатается положительное число.

Если numeric равно 0, то выводится ноль.

Если numeric отрицательно, то печатается отрицательное число.

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

Мы можем иметь оператор if…elif…else внутри другого оператора if…elif…else. Это называется вложенностью в программировании.

Любое число этих утверждений может быть вложено друг в друга. Отступ — это единственный способ определить уровень вложенности. Они могут сбить с толку, поэтому их следует избегать, если в этом нет необходимости. Вот пример:

numeric = float(input("Введите число: "))
if numeric >= 0:
    if numeric == 0:
        print("Ноль")
    else:
        print("Положительное число")
else:
    print("Отрицательное число")

Вывод программы № 1:

Введите число: 5
Положительное число

Вывод программы № 2:

Введите число: -2
Отрицательное число

Вывод программы № 3:

Заключение

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

На этом всё!

Содержание:развернуть

  • Как работает if else
  • Синтаксис

  • Отступы

  • Примеры

  • Оператор elif
  • Заглушка pass
  • if else в одну строку
  • Вложенные условия
  • Конструкция switch case

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

Говоря простыми словами, конструкция if else в Python указывает интерпретатору, следует ли выполнять определенный участок кода или нет.

Как и все прочие составные инструкции языка, оператор выбора также поддерживает свойство вложенности. Это означает, что использование if else позволяет создавать внутри программного модуля так называемое логическое ветвление.

Как работает if else

Синтаксис

Оператор if else в языке Python — это типичная условная конструкция, которую можно встретить и в большинстве других языков программирования.

# самый простой пример, где есть всего одно условие
a = 1
if a == 1:
print("It is true")

> It is true

Синтаксически конструкция выглядит следующим образом:

  1. сначала записывается часть if с условным выражением, которое возвращает истину или ложь;
  2. затем может следовать одна или несколько необязательных частей elif (в других языках вы могли встречать else if);
  3. Завершается же запись этого составного оператора также необязательной частью else.

Принцип работы оператора выбора в Python
count = 1
# условное выражение может быть сколь угодно сложным,
# и может быть сколь угодно много elif-частей
if True and count == 1 and count == 2:
print("if")
elif count == 'count':
print("First elif")
elif count == 14.2:
print("Second elif")
elif count == 1:
print("Nth elif")
else:
print("Else")

> Nth elif

Для каждой из частей существует ассоциированный с ней блок инструкций, которые выполняются в случае истинности соответствующего им условного выражения.

b = 10
if b == 10:
# любое количество инструкций
print(b)
b = b * 15
b = b - 43
b = b ** 0.5
print(b)
elif b == 20:
print("You will not see me")
else:
print("And me")

> 10
> 10.344080432788601

То есть интерпретатор начинает последовательное выполнение программы, доходит до if и вычисляет значение сопутствующего условного выражения. Если условие истинно, то выполняется связанный с if набор инструкций. После этого управление передается следующему участку кода, а все последующие части elif и часть else (если они присутствуют) опускаются.

Отступы

Отступы — важная и показательная часть языка Python. Их смысл интуитивно понятен, а определить их можно, как размер или ширину пустого пространства слева от начала программного кода.

# начало кода
# код
# код
# код
# начало первого отступа
# первый отступ
# первый отступ
# начало второго отступа
# второй отступ
# второй отступ
# конец второго отступа
# конец первого отступа

Благодаря отступам, python-интерпретатор определяет границы блоков. Все последовательно записанные инструкции, чье смещение вправо одинаково, принадлежат к одному и тому же блоку кода. Конец блока совпадает либо с концом всего файла, либо соответствует такой инструкции, которая предшествует следующей строке кода с меньшим отступом.

var_a = 5
var_b = 10
var_c = 20
if var_c**2 > var_a * var_b:
# блок №1
if var_c < 100:
# блок №2
if var_c > 10:
# блок №3
var_a = var_a * var_b * var_c
# блок №2
var_b = var_a + var_c
# блок №1
var_c = var_a - var_b
print(var_a)
print(var_b)
print(var_c)

> 1000
> 1020
> -20

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

Подробнее о табуляции и отступах в Python:

Примеры

Рассмотрим несколько практических примеров использования условного оператора.

Пример №1: создание ежедневного бэкапа (например базы данных):

from datetime import datetime

def daily_backup(last_backup_date):
"""
Передаем дату последнего бэкапа.
Если прошло больше 1 дня, создаем бэкап
"""
if not last_backup_date:
print(f"creating first backup [{datetime.now().date()}] ..")
return

delta = datetime.now() - last_backup_date
if delta.days > 0:
print(f"creating backup [{datetime.now().date()}] ..")
else:
print(f"backup on [{datetime.now().date()}] already exists")

daily_backup("")
> creating first backup [2020-08-15] ..

daily_backup(datetime(2020, 8, 14))
> creating backup [2020-08-15] ..

daily_backup(datetime(2020, 8, 15))
> backup on [2020-08-15] already exists

Пример №2: Проверка доступа пользователя к системе. В данном примере if проверяет наличие элемента в списке:

BLACK_LIST = ['192.34.12.3', '192.34.12.5', '192.34.10.23']
USERS = ['rolli34', 'constantinpetrovv', 'kate901']

def access_available(user_name, ip):
if user_name in USERS:
if ip not in BLACK_LIST:
return True
else:
print(f"write to log: user {user_name} [ip: {ip}] in block list")
else:
print(f"write to log: user {user_name} [ip: {ip}] does not exists")
return False

if access_available("rolli34", "192.34.12.111"):
print(f"Hello!!")
> Hello!!

if access_available("rolli34", "192.34.10.23"):
print(f"Hello!!")
> write to log: user rolli34 [ip: 192.34.10.23] in block list

if access_available("devnull", "192.34.10.11"):
print(f"Hello!!")
> write to log: user devnull [ip: 192.34.10.11] does not exists

Пример №3: Валидация входных данных. В примере к нам приходят данные в формате json. Нам необходимо выбрать все записи определенного формата:

NEED = {
"name": str,
"weight": int,
"age": int,
}

def is_valid(data):
valid = True
for need_key_name, need_type in NEED.items():
# проверяем наличие ключа
if need_key_name in data:
# если ключ есть, проверяем тип значения
data_type = type(data[need_key_name])
if data_type != need_type:
print(f"type error: '{need_key_name}' is {data_type}, need: {need_type}")
valid = False
else:
print(f"key error: '{need_key_name}' does not exists")
valid = False

return valid

if is_valid({"name": "Alex"}):
print("data is valid")
>
key error: 'weight' does not exists
key error: 'age' does not exists

if is_valid({"name": "Alex", "age": "18"}):
print("data is valid")
>
key error: 'weight' does not exists
type error: 'age' is <class 'str'>, need: <class 'int'>

if is_valid({"name": "Alex", "weight": 60, "age": 18}):
print("data is valid")
> data is valid

Оператор elif

elif позволяет программе выбирать из нескольких вариантов. Это удобно, например, в том случае, если одну переменную необходимо многократно сравнить с разными величинами.

shinobi = 'Naruto'
if shinobi == 'Orochimaru':
print('fushi tensei')
elif shinobi == 'Naruto':
print('RASENGAN')
elif shinobi == 'Sasuke':
print('chidori')

> RASENGAN

Такая конструкция может содержать сколь угодно большую последовательность условий, которые интерпретатор будет по порядку проверять.

Но помните, что первое условие всегда задается с if

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

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

Если ни одно из условий для частей if и elif не выполняется, то срабатывает заключительный блок под оператором еlse (если он существует).

Заглушка pass

Оператор-заглушка pass заменяет собой отсутствие какой-либо операции.

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

Наличие тела инструкции в Python обязательно

sum = 100000
account_first = 12000
account_second = 360000

if account_first > sum:
pass
elif account_second > sum:
pass
else:
print(sum)

if else в одну строку

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

# так выглядит условие в одну строку в JavaScript
const accessAllowed = (age > 21) ? true : false;

Читается это выражение так: если age больше 21, accessAllowed равен true, иначе — accessAllowed равен false.

В Python отсутствует тернарный оператор

Вместо тернарного оператора, в Питоне используют инструкцию if else, записанную в виде выражения (в одно строку):

<expression if True> if <predicate> else <expression if False>

Пример:

number = -10
abs_number = number if number >= 0 else -number

print(abs_number)

Такая конструкция может показаться сложной, поэтому для простоты восприятия, нужно поделить ее на 3 блока:

Для простоты восприятия if-else, записанного одной строкой, разделите выражение на 3 блока

Стоит ли использовать такой синтаксис? Если пример простой, то однозначно да:

# полная версия
count = 3
if count < 100:
my_number = count
else:
my_number = 100

# сокращенная версия
count = 3
my_number = count if count < 100 else 100

Вполне читаемо смотрятся и следующие 2 примера:

x = "Kate" if "Alex" in "My name is Alex" else "Mary"
print(x)
> Kate

y = 43 if 42 in range(100) else 21
print(y)
> 43

Но если вы используете несколько условий, сокращенная конструкция усложняется и становится менее читаемой:

x = 10
result = 100 if x > 42 else 42 if x == 42 else 0

print(result)
> 0

Вложенные условия

Ограничений для уровней вложенности в Python не предусмотрено, а регулируются они все теми же отступами:

# делать код менее читаемым можно до бесконечности
def run(action):
if action:
print(some_func())
else:
if some_func():
num = one_func()
if num:
if 0 < num < 100:
print(num)
else:
print('-')

Стоит ли использовать такие вложенности? Скорее нет, чем да. Одно из положений Python Zen гласит:

Flat is better than nested (развернутое лучше вложенного).

Большая вложенность имеет следующие недостатки:

  • становится трудно легко найти, где заканчивается конкретный блок;
  • код становится менее читаемым и сложным для понимания;
  • возможно придется прокручивать окно редактора по горизонтали.

Но что делать, если в скрипте не получается уйти от большой вложенности if-else? 🤷‍♂️

Чтобы уйти от большой вложенности, попробуйте не использовать оператор else

Пример выше, можно записать следующим образом:

def run(action):
if action:
print(some_func())
return

if not some_func():
return

num = one_func()
if not num:
return

if 0 < num < 100:
print(num)
return

print('-')

Конструкция switch case

В Python отсутствует инструкция switch case

В языках, где такая инструкция есть, она позволяет заменить собой несколько условий if и более наглядно выразить сравнение с несколькими вариантами.

# пример на C++
int main() {
int n = 5;
# сравниваем значение n поочередно со значениями case-ов
switch (n) {
case 1:
cout << n;
break;
case 2:
cout << n;
break;
# так как 5 не равняется ни 1-у, ни 2-м, то выполняется блок default
default:
cout << "There is not your number";
break;
}
return 0;
}

> There is not your number

Свято место пусто не бывает, поэтому в питоне такое множественное ветвление, в обычном случае, выглядит как последовательность проверок if-elif:

n = 5
if n == 1:
print(n)
elif n == 2:
print(n)
else:
print("There is not your number")

> "There is not your number"

Однако есть и более экзотический вариант реализации этой конструкции, задействующий в основе своей python-словари:

switch_dict = {
1: 1,
2: 2,
3: 3,
}
print(switch_dict.get(5, "There is not your number"))

> "There is not your number"

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

Условный оператор if/elif/else, ветвление кода программы.

Возможно, самый известный тип инструкций — это конструкция if/elif/else. Часто возникает необходимость, чтобы некоторый код выполнялся только при соблюдении определенного условия или код подлежащий выполнению, должен выбираться исходя из выполнения одного из нескольких взаимоисключающих условий.
Например:

>>> x = int(input("Please enter an integer: "))
# Please enter an integer: 42
>>> if x < 0:
...     x = 0
...     print('Negative changed to zero')
... elif x == 0:
...     print('Zero')
... elif x == 1:
...     print('Single')
... else:
...     print('More')

# More

Ключевое слово elif является сокращением от else if. Инструкции elif и else могут отсутствовать и не являются обязательными. Инструкция elif может повторяться сколько угодно раз if/elif/else. Такая последовательность инструкций elif является заменой для конструкции switch или case, которые есть в других языках программирования.

Составная инструкция if, elif и else обеспечивает условное выполнение блоков инструкций.
Она имеет следующий синтаксис:

if выражение:
    блок кода
elif выражение:
    блок кода
elif выражение:
    блок кода
...
...
else:
    блок кода

Конструкция if вычисляет и оценивает выражения одно за другим, пока одно из них не окажется истинным, затем выполняется соответствующий блок кода . После выполнения блока кода первого истинного (True) выражения, последующие инструкции elif/else не вычисляются и не оцениваются, а блоки кода в них не выполняется. Если все выражения ложны (False), выполняется блок кода инструкции else, если он присутствует.

В предложениях if и elif в качестве условия можно использовать любое выражение Python. В подобных случаях говорят, что условие используется в логическом контексте. В логическом контексте любое выражение рассматривается как истинное или ложное. Любое ненулевое число или любой непустой контейнер (строка, кортеж, список, словарь, множество) расценивается как истинное значение. Нуль (любого числового типа), None и пустой контейнер расцениваются как ложные значения. Для тестирования значения x в логическом контекстеиспользуйте следующий стиль написания кода:

Это наиболее ясная и соответствующая духу Python форма кода.

Примеры if/elif/else конструкций

Использование None в конструкции if:

a = None
if a is not None:
    print('a НЕ равно None')
else:
    print('a равно None')

Использование False и True в конструкции if:

bul = False
if bul:
    print('bul = True')
else:
    print('bul = False')

Использование integer числа 0 в конструкции if:

number = 0
if number:
    print('number не равно 0')
else:
    print('number = 0')

Использование числовых сравнений в конструкции if:

a = 10
b = 20
if  a != b and a > b:
    print('a не равно b и a больше b')
else:
    print('a не равно b и a меньше b')

Вложенные конструкции if:

a = 15
b = 3
if  a != b 
    if a > b:
        print('a больше b')
    else:
        print('a меньше b')
else:
    print('a равно b')

Проверка наличия слова в строке str с помощью конструкции if:

string1 = 'Привет мир'
string2 = 'мир'
if string2 in string1:
    print('Слово "мир" присутствует в строке "Привет мир"')
else:
    print('Слово "мир" отсутствует в строке "Привет мир"')

Проверка вхождения элемента в список list с помощью конструкции if:

a = 'bc'
lst = ['ac', 'bc', 0, 1, 3, 'abc']
if a in lst:
    print('Значение "bc" входит в список', lst)
else:
    print('Значение "bc" не входит в список', lst)

Проверка вхождения элемента в кортеж tuple с помощью конструкции if:

a = 'bc'
tpl = ('ac', 'bc', 0, 1, 3, 'abc')
if a in tpl:
    print('Значение "bc" входит в кортеж', tpl)
else:
    print('Значение "bc" не входит в кортеж', tpl)

Проверка вхождения элемента в множество set с помощью конструкции if:

a = 'bc'
set_ = {'ac', 'bc', 0, 1, 3, 'abc'}
if a in set_:
    print('Значение "bc" входит в множество', set_)
else:
    print('Значение "bc" не входит в множество', set_)

Проверка наличия ключа key в словаре dict с помощью конструкции if:

key = 'bc'
dct = {'ac':None, 'bc':False, '0':0, '1':3, '3':1, 'abc':True}
if key in dct:
    print('Ключ "bc" присутствует в словаре', dct)
else:
    print('Ключ "bc" отсутствует в словаре', dct)

Условная инструкция if-elif-else (её ещё иногда называют оператором ветвления) — основной инструмент выбора в Python. Проще говоря, она выбирает, какое действие следует выполнить, в зависимости от значения переменных в момент проверки условия.

Сначала записывается часть if с условным выражением, далее могут следовать одна или более необязательных частей elif, и, наконец, необязательная часть else. Общая форма записи условной инструкции if выглядит следующим образом:

if test1:
    state1
elif test2:
    state2
else:
    state3

Простой пример (напечатает ‘true’, так как 1 — истина):

>>> if 1:
...     print('true')
... else:
...     print('false')
...
true

Чуть более сложный пример (его результат будет зависеть от того, что ввёл пользователь):

a = int(input())
if a < -5:
    print('Low')
elif -5 <= a <= 5:
    print('Mid')
else:
    print('High')

Конструкция с несколькими elif может также служить отличной заменой конструкции switch — case в других языках программирования.

Проверка истинности в Python

  • Любое число, не равное 0, или непустой объект — истина.
  • Числа, равные 0, пустые объекты и значение None — ложь
  • Операции сравнения применяются к структурам данных рекурсивно
  • Операции сравнения возвращают True или False
  • Логические операторы and и or возвращают истинный или ложный объект-операнд

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

X and Y

Истина, если оба значения X и Y истинны.

X or Y

Истина, если хотя бы одно из значений X или Y истинно.

not X

Истина, если X ложно.

Трехместное выражение if/else

Следующая инструкция:

if X:
    A = Y
else:
    A = Z

довольно короткая, но, тем не менее, занимает целых 4 строки. Специально для таких случаев и было придумано выражение if/else:

A = Y if X else Z

В данной инструкции интерпретатор выполнит выражение Y, если X истинно, в противном случае выполнится выражение Z.

>>> A = 't' if 'spam' else 'f'
>>> A
't'

Для вставки кода на Python в комментарий заключайте его в теги <pre><code class=»python3″>Ваш код</code></pre>

Понравилась статья? Поделить с друзьями:
  • Джозамицин 1000 инструкция по применению взрослым таблетки
  • Хлорофилл жидкий нсп инструкция по применению для детей
  • Скачать инструкция по эксплуатации на русском языке imax b6
  • Наше такси руководство
  • Эльцет инструкция по применению таблетки взрослым от аллергии инструкция