If-elif-else в Python: что это, как работает

Python

В статье подробно разбираем if, else, elif в Python: принцип работы оператора выбора, синтаксис и примеры вложенного оператора.

Часто перед любым человеком возникает необходимость сделать выбор, основываясь на определенных факторах. Причем чаще всего делается это неосознанно, на интуитивном уровне. Компьютерные программы не способны так свободно мыслить, вместо этого в них используются операторы выбора или условия. Рассмотрим, как строить условные конструкции If в ЯП python.

Оператор выбора If-elif-else в Python

Как мы сказали выше, с помощью операторов if-elif-else разработчик может проверить что-либо, а после на основе полученного результата выполнить определенные действия. Представьте, что необходимо выбрать сертификат в качестве подарка на день рождение другу. В кошельке осталась только одинокая банкнота с номиналом 5000 рублей, а продавец предлагает три сертификата на 10000, 4000 и 400 рублей. Поразмыслив вы решили взять сертификат на 4000 рублей, чтобы сделать достойный подарок и уложиться в бюджет.

Теперь решим эту задачу с точки зрения программы на python. Нам необходимо проверить, укладывается ли подарок в наш бюджет и не стоит ли он слишком дешево, чтобы не позориться. Допустим, зададим минимальную цену – 800 рублей. Условие будет выглядеть следующим образом (не разочаровывайтесь, если не поймете, это только пример для ознакомления):

money = 5000
gift1 = 6000
gift2 = 4000
gift3 = 400
chosen_gift = 0;  
min_price = 800 # цена, ниже которой нет смысла покупать подарок
if money > gift1 and gift1 > min_price:
	chosen_gift = gift1
elif money > gift2 and gift2 > min_price:
	chosen_gift = gift2
elif money > gift3 and gift3 > min_price:
	chosen_gift = gift3
else:
	chosen_gift = 0 # при отсутствии нужного сертификата не выбираем ни один сертификат
print("Куплен сертификат на", chosen_gift, "рублей")

На выводе пользователь получит строку «Куплен сертификат на 4000 рублей». Теперь попробуем разобраться, как это работает.

Оператор if

Начнем с самой основной конструкции, а именно оператора выбора if в питоне. С английского это слово переводится как «если». Этим практически все сказано. С помощью if программист говорит интерпретатору: «Если истинно это условие, тогда выполни следующий код». Конструкция if в python выглядит следующим образом:

if (условие):
	l = 5 # Код, который выполнится, если условие истинно.
l = 8 # Код, который выполнится в любом случае.

Примечательно, что в python доступны сложные условные конструкции. Сложные условные конструкции состоят из множества простых. Пример:

  • (x > 5 and x < 10) # значение переменной x больше 5 и меньше 10, тогда истина;
  • (x == «hello» or x == «world») # Значение строки x равно слову «Hello» или слову World;
  • (k == 5 and t != 7) # Значение переменной k равняется пяти и значение переменной t не равняется семи.

Как вы поняли, «and» – это логическое «и», когда должны быть истинны два условия, «or» — это логическое «или», когда должно быть выполнено хотя бы одно из условий и «not» — это логическое «не», которое превращает истину в ложь, а ложь в истину. Вернемся к нашему первому примеру:

if money > gift1 and gift1 > min_price

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

Примеры

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

x = input("Введите температуру:")
if(int(x) < -15):
	print("Градусник говорит, что замерз, а потому рекомендует надеть перчатки и шапку")
print("Приятного дня")

Готово, теперь, когда пользователь введет, например, -23 градуса, программа выведет указанное в условие сообщение. В противном случае будет выведена только последняя фраза, которая находится вне цикла.

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

guests = ["David", "Emma", "Sherlock", "Watson"];
username = "Steve"
if (username in guests):
	return ("Подравляем, Вы в списке приглашенных")

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

Оператор if-else

Как вы могли заметить, в первой и второй программе не хватает альтернативного варианта. Например, если пользователя нет в списке приглашенных, то ему нужно как-то сообщить об этом. Или это температура такая теплая, надо сказать об этом, а не молчать. Конечно, можно использовать еще один if, но тогда ему придется задавать еще одно условие. Разработчикам часто приходится указать альтернативный вариант, проще говоря, что делать в противном случае, когда условие не сработало. Для этого используется конструкция else, которая с английского так и переводится «иначе».

If-elif-else в Python: что это, как работает
По сути, if-else – это выбор между «да» и «нет»

Пример программы для проверки возраста:

age = 19 
if(age >= 18): # Если возраст больше или равен 18
	print("С вас 40 рублей за товар") # Вывести это сообщение
else: # Иначе
	print("Извините, нельзя продавать этот товар несовершеннолетним") # Вывести это сообщение

Теперь, пользователь в любом случае получит сообщение, изменяется только его содержимое. Между прочим, добавлять else – это довольно хорошая практика, чтобы учесть все возможные исходы. Также существует трехместное выражение if/else, с помощью которого можно проверить какое-то условие всего одной строкой. Привычная запись:

if (5 > x):
	x = 5
else:
	x = 10

Простое условие, но сколько строк. Все это можно записать в трехместное выражение:

x = 5 if 5 > x else 10.

Результат тот же.

Примеры

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

x = input("Введите температуру:")
if(int(x) < -15):
	answer = "Градусник говорит, что замерз, а потому рекомендует надеть перчатки и шапку"
else:
	answer = "Не беспокойтесь, там не холодно"

Давайте сделаем простой алгоритм ориентирования по светофору:
color = "red"
if color == "green":
	go() # функции на деле не существует, она указана только для примера
else:
	stop()
If-elif-else в Python: что это, как работает
Блок-схема работы со светофором

В ЯП python if else примеры встречаются практически в каждом коде, а потом знать их обязательно. Теперь, когда вы поняли важность этого оператора, идем дальше.

Оператор elif

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

if (condition1):
	#code
elif(condition2): # Срабатывает, если не сработал if
	#code
elif(condition3): # Срабатывает, если не сработал if и предыдущие elif-ы
	#code
else: # Срабатывает, если не сработало ни одно из условий выше
	#code 

Напомним, что в самом первом примере используется именно эта конструкция. Количество elif в коде питона неограниченно, потому разработчик может просчитать все варианты. Примечание для тех, кто знаком с си-подобными языками: в python не реализована конструкция выбора switch, только elif-ы.

Примеры

Давайте сделаем простую программу, которая подбирает фразу на основе введенного города:

country = input("Откуда вы? :")
if (country == "Russia"):
	x = "О, суровые зимы и великий и могучий русский"
elif (country == "USA"):
	x = "Романтичный Лос-Анджелес, наверное там красиво даже зимой"
elif (country == "North Korea"):
	x = "Как вы смогли воспользоваться интернетом оттуда"
else:
	x = "В этой стране побывать еще не удалось, увы"
print (x)

По желанию пользователь может расширить диапазон стран и комментариев. Пожалуй, это станет отличной практикой.

If-elif-else в Python: что это, как работает
Еще пример elif условия, но уже блок схемой

Отступы в Python

Для тех, кто перешел в Python с другого языка, была неожиданностью не увидеть ни одной фигурной скобки и точки с запятой (которые в том же C++ разграничивают блоки, циклы и функции). Здесь такого нет, вместо скобок блоки определяются с помощью отступов, которые состоят из 4 пробелов или одного знака табуляции. Рекомендуем использовать один стиль: либо пробелы, либо табы, иначе может возникнуть ошибка. Пример синтаксиса отступов:

if (condition):
	x = 10 # Оператор в блоке
	x -= 3 # Еще оператор в блоке
	y = x * 3 # Этот тоже в блоке
y -= 1 # А этот уже вне блока условия.
If-elif-else в Python: что это, как работает
Отступы — это границы блоков

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

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

day = "friday"
shoes = "black"
money = 200
if (day == "friday"): # по пятницам герой программы любит ходить на дискач	
	if (shoes == "white"):
		shirt = "white" # белый туфли - белая рубашка
	elif(shoes = "blue"):
		shirt = "black" # ну такой вкус у героя
	else:
		shirt = "black" # универсальный вариант
	if(money < 150) # Если не хватит денег на такси
		walk()
	else:
		taxi()
else: # а в остальные дни в спортзал
	training()

Трудно представить программу, в которой все действия выполнялись без каких-либо условий. В таком случае все вычислительные утилиты оказались бы бесполезны, а игровая логика и вовсе исчезла. В общем, условные операторы – это must-have для программиста.

Айтистанция
Добавить комментарий

Мы используем файлы cookie на нашем сайте

OK