Инструкции if (если) используются в повседневной жизни постоянно, пусть она и не написана на Python. Если горит зеленый, тогда можно переходить дорогу; в противном случае нужно подождать. Если солнце встало, тогда нужно выбираться из постели; в противном случае можно продолжать спать. Возможно, все не настолько строго, но когда действия выполняются на основе условий, мозг делает то же самое, что и компьютер — оценивает условия и действует в зависимости от результата.
Однако у компьютера нет подсознания, поэтому для занятий data science нужно понимать, как работает инструкция if, и как ее использовать в Python!
Это практическое руководство! Желательно повторять те части, где нужно писать код, и решать задачи в конце статьи! Также рекомендуется вернуться к прошлым материалам, если вы еще не ознакомились с ними:
- #1 Python для Data Science – Руководство для начинающих
- #2 Python для Data Science — Структуры данных
- #3 Python для Data Science — встроенные функции и методы Python
Основы инструкций if в Python
Логика инструкции if очень проста.
Предположим, что есть два значения: a = 10
и b = 20
. Сравниваем эти два значения. Сравнение даст один из двух выводов: True
или False
. (Проверьте в своем Jupyter Notebook)
Можно пойти дальше и написать условие: if a == b
вернет True
, тогда вывести 'yes'
. Если False
— тогда 'no'
. И это все — это логика инструкций if в Python. Синтаксис следующий:
a = 10
b = 20
if a == b:
print('yes')
else:
print('no')
Запустите этот скрипт в Jupyter Notebook. Очевидно, что результат будет 'no'
.
Теперь попробуйте то же самое, но со значением b
равным 10
.
a = 10
b = 10
if a == b:
print('yes')
else:
print('no')
На этот раз сообщение будет 'yes'
.
Синтаксис инструкции if в Python
Нужно рассмотреть синтаксис подробно, потому что в нем есть строгие правила. Основы просты:
Имеются:
- ключевое слово
if
- условие
- инструкция
- ключевое слово
else
- другая инструкция
Но есть две вещи, о которых нужно всегда помнить:
- Никогда не пропускать двоеточие в конце строк
if
иelse
!
- Никогда не пропускать отступы в начале строк с инструкциями!
Если что-то из этого пропустить, вернется сообщение об ошибке с текстом «invalid syntax», а скрипт не будет работать.
Инструкции if в Python — 2-й уровень
Теперь, когда вы знаете основы, пришло время сделать условия более сложными: с помощью арифметики, сравнений и логических операторов. (Примечание: если слово «оператор» ни о чем не говорит, лучше вернуться к первому материалу из серии).
Вот пример:
a = 10
b = 20
c = 30
if (a + b) / c == 1 and c - b - a == 0:
print('yes')
else:
print('no')
Код вернет yes
, поскольку оба условия, (a + b) / c == 1
и c - b - a == 0
вернут True
, а логический оператор между ними — это and
.
Конечно, код можно сделать еще более сложным, но суть в том, что в инструкции if легко можно использовать несколько операторов — подобное часто встречается на практике.
Инструкции if в Python — 3-й уровень
Можно перейти на еще один уровень выше, используя ключевое слово elif
(это короткая форма фразы «else if») для создания последовательностей условий. «Последовательность условий» звучит красиво, но на самом деле — это всего лишь инструкция if
, вложенная в другую инструкцию if
:
Другой пример:
a = 10
b = 11
c = 10
if a == b:
print('first condition is true')
elif a == c:
print('second condition is true')
else:
print('nothing is true. existence is pain.')
Очевидно, что результат будет "second condition is true"
.
Это можно делать миллионы раз и построить огромную последовательность if-elif-elif-elif, если хочется, конечно.
И это более-менее все, что нужно знать об инструкциях if в Python. А теперь:
Проверьте себя
Вот случайное целое число: 918652728452151
.
Нужно узнать две вещи о нем:
- Делится ли оно на 17 без остатка?
- В нем больше 12 цифр?
Если оба условия верны, тогда вернем super17
.
Если одно из них ложно, тогда стоит запустить второй тест:
- Делится ли оно без остатка на 13?
- В нем больше 10 цифр?
Если оба условия верны, тогда вернем awesome13
.
Если оригинальное число не определяется ни как super17
, ни как awesome13
, тогда выведем просто meh, this is just an average random number
.
Итак: является ли число 918652728452151
super 17
или awesome13
или это просто случайное число?
Решение
918652728452151
— это число super17
.
Рассмотрим подробнее код:
my_number = 918652728452151
if my_number % 17 == 0 and len(str(my_number)) > 12:
print("super17")
elif my_number % 13 == 0 and len(str(my_number)) > 10:
print("awesome13")
else:
print("meh, this is just a random number")
В первой строке число 918652728452151
сохраняется в переменную, так что его не придется записывать каждый раз, а код будет смотреться изящнее: my_number = 918652728452151
.
После этого создается последовательность условия if-elif-else.
В строке if
есть два условия. Первое — проверка, делится ли my_number
на 17 без остатка. Это часть my_number % 17 == 0
. Во втором нужно подсчитать количество цифр в my_number
. Из-за ограничений языка сделать это нельзя, поэтому нужно преобразовать число в строку с помощью функции str()
. После этого необходимо использовать функцию len()
и узнать количество символов. Это часть len(str(my_number))
.
Выходит, что оба оригинальных условия были верны, потому что на экран вывелось super17
. Но если бы это было не так, следующая строка elif
проделала бы то же самое, но проверяла, делится ли число на 13 (а не 17), а символов должно было быть больше 10 (не 12).
Если бы и это условие оказалось ложным, инструкция else
запустила бы print("meh, this is just an average random number")
.
Не так уж и сложно, не правда ли?
Итого
Инструкции if
широко используются в каждом языке программирования. Теперь вы тоже знаете, как пользоваться ими. Логика их работы проста, а синтаксис можно даже пересказать обычными словами.
В следующий раз речь пойдет о циклах for в Python.