#4 Python для Data Science — инструкции if в Python

273

Инструкции if (если) используются в повседневной жизни постоянно, пусть она и не написана на Python. Если горит зеленый, тогда можно переходить дорогу; в противном случае нужно подождать. Если солнце встало, тогда нужно выбираться из постели; в противном случае можно продолжать спать. Возможно, все не настолько строго, но когда действия выполняются на основе условий, мозг делает то же самое, что и компьютер — оценивает условия и действует в зависимости от результата.

Однако у компьютера нет подсознания, поэтому для занятий data science нужно понимать, как работает инструкция if, и как ее использовать в Python!

Это практическое руководство! Желательно повторять те части, где нужно писать код, и решать задачи в конце статьи! Также рекомендуется вернуться к прошлым материалам, если вы еще не ознакомились с ними:

  1. #1 Python для Data Science – Руководство для начинающих
  2. #2 Python для Data Science — Структуры данных
  3. #3 Python для Data Science — встроенные функции и методы Python

Основы инструкций if в Python

Логика инструкции if очень проста.

Логика инструкции 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')

Логика инструкций if в Python

Запустите этот скрипт в Jupyter Notebook. Очевидно, что результат будет 'no'.

Тест на знание python

Что выведет этот код?
#4 Python для Data Science — инструкции if в Python
Какой будет результат выполнения кода — print(type(lambda: None)) ?
Как нельзя назвать функцию?
Какой код выведет строку — "C:\Common\testString.doc" ?
Что делает код ниже?
#4 Python для Data Science — инструкции if в Python

Теперь попробуйте то же самое, но со значением b равным 10.

a = 10
b = 10
if a == b:
    print('yes')
else:
    print('no')

На этот раз сообщение будет 'yes'.

Синтаксис инструкции if в Python

Нужно рассмотреть синтаксис подробно, потому что в нем есть строгие правила. Основы просты:

Синтаксис инструкции if в Python

Имеются:

  • ключевое слово if
  • условие
  • инструкция
  • ключевое слово else
  • другая инструкция

Но есть две вещи, о которых нужно всегда помнить:

  1. Никогда не пропускать двоеточие в конце строк if и else!
    Никогда не пропускать двоеточие в конце строк
  2. Никогда не пропускать отступы в начале строк с инструкциями!
    Никогда не пропускать отступы в начале строк

Если что-то из этого пропустить, вернется сообщение об ошибке с текстом «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 легко можно использовать несколько операторов — подобное часто встречается на практике.

Инструкции if в Python — 3-й уровень

Можно перейти на еще один уровень выше, используя ключевое слово elif (это короткая форма фразы «else if») для создания последовательностей условий. «Последовательность условий» звучит красиво, но на самом деле — это всего лишь инструкция if, вложенная в другую инструкцию if:

Ключевое слово elif

Другой пример:

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-else

Это можно делать миллионы раз и построить огромную последовательность 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.

Инструкции if в Python — задача

Рассмотрим подробнее код:

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.