Python. Условия
Время чтения: 5 минут
Условие (condition) – это механизм, позволяющий выполнить действие, только если выполняется определённое условие.
Вот пример определения условия:
this_is_true = True
this_is_false = False
condition_message = 'Condition: '
if this_is_false:
condition_message += 'one'
elif this_is_true or this_is_false:
condition_message += 'two'
elif this_is_true:
condition_message += 'three'
else:
condition_message += 'four'
print(condition_message)
# Condition: two
Давай разберём:
- Секция под if (если) исполнится если указанное условие истинно.
if this_is_false:
condition_message += 'one'
Все секции в Python отделяются отступом: табуляцией “Tab” или равным количеством пробелов.
Это очень важно! Не смешивай пробелы и табуляцию, а если используешь пробелы, то ставь везде одинаковое количество пробелов для отступа. Если что-то напутаешь, то программа просто не запустится.
- Секция под elif (сокращённо от “else if”) исполнится если предыдущее условие ложно, а указанное условие истинно. elif это опциональное условие, и ты можешь его не указывать, и оставить только if. elif может использоваться после if неоднократно – то есть ты можешь написать if, потом elif, а потом ещё сколько хочешь elif.
elif this_is_true or this_is_false:
condition_message += 'two'
elif this_is_true:
condition_message += 'three'
- Секция под else (иначе) исполнится если все предыдущие условия ложны (относится к if и elseif). else это опциональное условие, и ты можешь его не указывать, и оставить только if или if+elif.
else:
condition_message += 'four'
-
Если хоть одно из условий выполняется (if, elif или else), то все другие условия не проходят проверку, и просто пропускаются. В примере выше, после того как выполнилось условие для
elif this_is_true or this_is_false
, программа не пошла проверятьelif this_is_true
, и просто вышла из всей этой цепочки условий. -
Помнишь в статье “переменные и операции с ними” мы рассматривали операции с булевыми переменными? Так вот – в условиях они очень часто используются. В примере выше,
this_is_true or this_is_false
это булевое выражение. Выражение это набор операций над какими-то значениями, которые порождают результат (“a = 2 + 2” – тут “2 + 2” это выражение).
Вложенные условия
Внутри секции условия может содержаться другое условие:
this_is_true = True
this_is_false = False
condition_message = 'Condition: '
if this_is_true:
if this_is_false:
condition_message += 'one'
else:
condition_message += 'two'
else:
condition_message += 'three'
print(condition_message)
# Condition: two
Главное не забывай отделять каждую секцию новым уровнем отступов.
Чем больше вложенность условия – тем сложнее его читать. Представь, что у тебя есть 5 уровней вложенности условий (я такое видел) – в таком коде очень просто запутаться и его очень сложно читать! Старайся упрощать условия, чтобы они проще читались.
Операции сравнения
В условиях очень часто операции сравнения применяются к числам и строкам:
- равенство: ==
- неравенство: !=
- больше: >
- больше или равно: >=
- меньше: <
- меньше или равно: <=
Вот примеры использования сравнений:
value_1 = 5
value_2 = 8
if value_1 > value_2:
print('Value 1 is more than value 2')
elif value_1 < value_2:
print('Value 1 is less than value 2')
else:
print('Value 1 is equal to value 2')
# Value 1 is or less than value 2
if value_2 >= 8:
print('Value 1 is equal to or more than 8')
# Value 1 is equal to or more than 8
some_list = [1, 2, 3, 4, 5]
if len(some_list) == 5:
print('some_list items count is equal to 5')
else:
print('some_list items count is not equal to 5')
# some_list items count is equal to 5
some_string = 'Some string'
another_string = 'Another string'
if some_string == another_string:
print('Strings are equal')
else:
print('Strings are not equal')
# Strings are not equal
if another_string == 'Another string':
print('another_string contains value "Another string"')
# another_string contains value "Another string"
Это просто набор искусственных примеров, чтобы ты освоился с правильным синтаксисом – на реальных примерах будет легче восприниматься.
Операция проверки наличия значения в контейнере
Ещё часто используется операция проверки на наличие значения в контейнере.
Контейнером, как мы узнали из статьи про контейнеры, может быть список, кортеж или словарь. В случае списка и кортежа мы проверяем что это значение содержится в нём, а в случае словаря мы проверяем что это значение есть в списке существующих ключей словаря.
Также, к этой операции можно применить булевую операцию not, чтобы проверить что такого значения в списке нет.
Вот примеры использования операции проверки наличия в контейнере:
some_list = [1, 2, 3]
value = 5
if value in some_list:
print('value is in some_list')
else:
print('value is not in some_list')
# value is not in some_list
some_dict = {
1: 2,
3: 4,
5: 6
}
if value in some_dict:
print('value is in some_dict')
else:
print('value is in not some_dict')
# value is in some_dict
Задание на закрепление
Для этого задания мы изучим ещё одну функцию – randint(). Эта функция используется для генерации случайного числа. Вот так выглядит пример её использования:
# Для её использования необходимо импортировать библиотеку random (мы поговорим про библиотеки потом)
import random
# randint принимает в параметры левую и правую границу возможных чисел
# В данном случае будет сгенерировано случайное целое число от 1 до 6
value = random.randint(1, 6)
Задание “симулятор N-гранного кубика”:
- Создай переменную, и присвой ей любое значение больше 1 – это будет количество граней твоего кубика
- Создай переменную, и присвой ей любое значение, которое может выпасть на твоём кубике – это будет твоё предсказание результата
- Используя функцию randint() сгенерируй значение на кубике
- Выведи выпавший результат, и предсказанное значение
- Выведи “Больше на " + str(выражение-расчёта-разницы), если твоё предсказанное значение получилось больше выпавшего результата
- Выведи “Предсказание верно”, если твоё предсказанное значение получилось равным выпавшему результату
- Выведи “Меньше на " + str(выражение-расчёта-разницы), если твоё предсказанное значение получилось меньше выпавшего результата
Заключение
Итого, мы изучили:
- Условия
- Секции (отделяй или табуляцией (Tab), или пробелами)
- Вложенные условия
- Операции сравнения
- Операция проверки наличия значения в контейнере
- Функция randint()
Это очень важный этап развития тебя, как программиста. Условия используются везде, и если ты понял их сейчас, то ты сможешь в будущем легко перенести это знание на другие языки программирования.
Если что – пиши, я помогу и постараюсь объяснить лучше.
Дальше мы рассмотрим основную рабочую силу твоих программ – циклы.