python course for me
November 10, 2023

Stepik: Тернарный условный оператор

Синтаксис: <значение 1> if <условие> else <значение 2>

Определяем наибольшее значение a и b

# Стандартным способом:

a = 12
b = 7
if a > b:
	res = a
else:
	res = b
print(res)
# Вывод: 12
# То же самое, но с помощью тернарного оператора можно записать так:

a, b = 12, 7
res = a if a > b else b
print(res)
# Вывод: 12

a, b = 2, 7
res = a if a > b else b
print(res)
# Вывод: 7

Тернарный оператор автоматически возвращает результат, т.е. результат можно сохранить в переменную.

В тернарном операторе нет внутренних блоков, то есть прописывается только одна конструкция.

Так же в тернарном операторе к переменным можно применять математические функции или операции.

a, b = -12, -7
res = abs(a) if a > b else abs(b)
print(res)
# Вывод: 7
s = 'python'
t = 'upper'
res = s.upper() if t == 'upper' else s
print(res)
# Вывод: PYTHON

Тернарный оператор можно рассматривать как объект, который возвращает значения в зависимости от условия

a = 12
b = 7
lst = [1, 2, a if a < b else b, 4, 5]
print(lst)
# Вывод: [1, 2, 7, 4, 5]
a = 12
print('a - ' + ('четное' if a % 2 == 0 else 'нечетное') + ' число')
# Вывод: a - четное число

a = 13
print('a - ' + ('четное' if a % 2 == 0 else 'нечетное') + ' число')
# Вывод: a - нечетное число
a = 12
b = 7
c = max(1, 5, a if a > 0 else b, 4, 5)
print(c)
# Вывод: 12

Так же можно вкладывать тернарный оператор внутрь значений другого тернарного оператора

(<значение 1> if <условие 1> else <значение 2>) if <условие 2> else <значение 3>
(<значение 1> if <условие 1> else <значение 2>) if <условие 2> else (<значение 3> if <условие 3> else <значение 4>)

Такие конструкции редко используются на практике и лучше их избегать из-за плохой читаемости

Пример: найдем максимальную среди трех переменных

a, b, c = 2, 3, -4
d = (a if a > c else c) if a > b else (b if b >c else c)
print(d)
# Вывод: 3

ТЕКСТ ЛЕКЦИИ