+---------------------------+
|.-------------------------.|
|| kee_reel@blog:~$ cd     ||
|| c  c++  python  linux   ||
|| opengl  sql  networks   ||
||                         ||
||                 обо_мне ||
|.-------------------------.|
+-::---------------------::-+
.---------------------------.
 // /oooooooooooooooooooooo\\ \\ 
 // /oooooooooooooooooooooooo\\ \\ 
//-------------------------------\\
\\-------------------------------//

◀ Контейнеры Циклы ▶

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 (если) исполнится если указанное условие истинно.

Все секции в Python отделяются отступом: табуляцией “Tab” или равным количеством пробелов.

Это очень важно! Не смешивай пробелы и табуляцию, а если используешь пробелы, то ставь везде одинаковое количество пробелов для отступа. Если что-то напутаешь, то программа просто не запустится.

if this_is_false:
	condition_message += 'one'
  • Секция под 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')

if value_2 >= 8:
	print('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_string = 'Some string'
another_string = 'Another string'

if some_string == another_string:
	print('Strings are equal')
else:
	print('Strings are not equal')
	

if another_string == 'Another string':
	print('another_string contains value "Another string"')

# Вывод:
# Value 1 is or less than value 2
# Value 1 is equal to or more than 8
# some_list items count is equal to 5
# Strings are not equal
# another_string contains value "Another string"

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

Операция проверки наличия значения в контейнере

Ещё часто используется операция проверки на наличие значения в контейнере.

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

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

Вот примеры использования операции:

some_list = [1, 2, 3]
some_dict = {
	1: 2,
	3: 4,
	5: 6
}
value = 5
if value in some_list:
	print('value is in some_list')
else:
	print('value is not in some_list')
if value in some_dict:
	print('value is in some_dict')
else:
	print('value is in not some_dict')
# Вывод:
# value is not in some_list
# value is in some_dict

Задание на закрепление

Для этого задания мы изучим ещё одну функцию – randint(). Эта функция используется для генерации случайного числа. Вот так выглядит пример её использования:

# Для её использования необходимо импортировать библиотеку random (мы поговорим про библиотеки потом)
import random
# randint принимает в параметры левую и правую границу возможных чисел
# В данном случае будет сгенерировано случайное целое число от 1 до 6
value = random.randint(1, 6)

Задание “симулятор N-гранного кубика”:

  • Создай переменную, и присвой ей любое значение больше 1 – это будет количество граней твоего кубика
  • Создай переменную, и присвой ей любое значение, которое может выпасть на твоём кубике – это будет твоё предсказание результата
  • Используя функцию randint() сгенерируй значение на кубике
  • Выведи выпавший результат, и предсказанное значение
  • Выведи “Больше на " + str(выражение-расчёта-разницы), если твоё предсказанное значение получилось больше выпавшего результата
  • Выведи “Предсказание верно”, если твоё предсказанное значение получилось равным выпавшему результату
  • Выведи “Меньше на " + str(выражение-расчёта-разницы), если твоё предсказанное значение получилось меньше выпавшего результата

Заключение

Итого, мы изучили:

  • Условия
  • Секции (отделяй или табуляцией (Tab), или пробелами)
  • Вложенные условия
  • Операции сравнения
  • Операция проверки наличия значения в контейнере
  • Функция randint()

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

Если что – пиши, я помогу и постараюсь объяснить лучше.

Дальше мы рассмотрим основную рабочую силу твоих программ – циклы.


▲ В начало ▲

◀ Контейнеры Циклы ▶