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