Как использовать тернарный оператор Python

Как использовать тернарный оператор Python

В этом руководстве вы узнаете, как использовать тернарный оператор в Python. Вы изучите синтаксис и закодируете несколько примеров, чтобы понять, как это работает.

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

Далее мы напишем несколько примеров, а затем научимся эмулировать поведение тернарного оператора Python, используя кортежи Python и словарь. Наконец, мы рассмотрим несколько вариантов использования, когда вы предпочитаете использовать тернарный оператор.

Давай начнем!

Оператор If-Else в Python: обзор

Вы можете кодировать, запустив Python REPL или в онлайн-редакторе Python vdzvdz.

Общий синтаксис оператора if-else в Python выглядит следующим образом:

if condition:
    # do this
else:
    # do this

В приведенном выше фрагменте condition указывает условие, которое необходимо проверить. Если условие оценивается как True, то выполняется блок if. Если условие оценивается как False, то выполняются операторы внутри блока else.

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

  • Если энергия
  • В противном случае game_over имеет значение False.

В следующем фрагменте кода показано, как это сделать с помощью условных операторов if-else:

energy = -1

if energy 

У овом примеру, енергија је -1 што је мање од 0. Дакле, гаме_овер је Тачно.

Питхон тернарни оператор: синтакса и примери

Питхон има тернарни оператор који функционише као тернарни условни оператор у језицима као што су Ц и Ц++. Општа синтакса за коришћење је следећа:

expression1 if condition else expression2

Разберем приведенный выше синтаксис:

  • условие: условие для проверки.
  • выражение1: выражение для оценки истинности условия.
  • выражение2: выражение для оценки, является ли условие ложным.

Теперь мы определим, какое выражение1, выражение2 и условие должны быть из версии кода if-else.

Собрав все это вместе, мы имеем следующее использование тернарного оператора Python.

game_over = True if energy 

Хајде да кодирамо још један пример. Претпоставимо да имате књижару и дате читаоцима попуст на куповину у зависности од тога колико су често посећивали вашу продавницу у последњих годину дана.

Нека нумВиситс означава број посета.

  • Если количество посещений > 7, процент скидки, Discount_perc равен 20.
  • В противном случае, Discount_perc равно 5.

Мы используем тернарный оператор, чтобы присвоить значение переменной Discount_perc.

numVisits = 10

discount_perc = 20 if numVisits > 7 else 5

print(discount_perc)
# 20 (as numVisits = 10 which is > 7)

Далее мы узнаем, как эмулировать тернарный оператор, используя кортежи Python и словарь.

Эмуляция тернарного оператора с кортежем Python

Как и все итерации в Python, кортежи следуют нулевой индексации. Итак, если у вас есть два элемента в кортеже, tuple_name[0] указывает первый элемент в кортеже и tuple_name[1] возвращает второй элемент в кортеж.

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

Запустите Python REPL и выполните следующие примеры. Если вы попытаетесь преобразовать целые числа в логические значения, вы заметите следующее:

  • логическое значение (0) равно False.
  • bool() возвращает Истина.
>>> bool(0)
False
>>> bool(1)
True
>>> bool(-1)
True
>>> bool(10)
True

Точно так же, когда мы преобразуем логические значения в целые числа, мы имеем следующее:

>>> int(True)
1
>>> int(False)
0

Комбинируя приведение типов и индексацию, мы можем сделать следующее:

  • Элемент с индексом 0 в кортеже: значение, используемое, когда условие равно False.
  • Элемент с индексом 1 в кортеже: значение, используемое, когда условие истинно.

Используя вышеизложенное, имеем следующее:

>>> numVisits = 10
>>> discount_perc = (5,20)[numVisits > 7]
>>> discount_perc
# 20

Здесь условие numVisits > 7 истинно, потому что numVisits равно 10. Поскольку int(True) равно 1, значение Discount_perc равно 20, элемент с индексом 1.

Эмуляция тернарного оператора с использованием словаря Python

Вы можете установить True и False в качестве ключей словаря. И вы можете установить выражение1 и выражение2 как значения, соответствующие ключам True и False соответственно.

some_dict = {True: expression1,
             False: expression2
            }

что ты собираешься делать дальше? Теперь, если вы используете some_dict[condition], выражение1, соответствующее ключу True, оценивает, истинно ли условие. И выражение2 оценивается, когда условие имеет значение False.

Давайте закодируем пример Discount_perc (снова), но на этот раз с использованием словаря Python.

>>> numVisits = 10
>>> discount_dict = {True: 20, False:5}
>>> discount_perc = discount_dict[numVisits > 7]
>>> discount_perc
# 20

Здесь numVisits = 10, что больше 7. Следовательно, условие numVisits > 7 истинно. Итак, Discount_dict[numVisits > 7] оценивается как Discount_dict[True] что равно 20.

Всегда ли следует использовать тернарный оператор Python?

Итак, мы научились использовать тернарный оператор. Но должны ли мы всегда использовать тернарный оператор? Что ж, тернарный оператор может быть не лучшим выбором для всех случаев использования. В этом разделе объясняется, когда вы предпочитаете использовать тернарный оператор вместо операторов if-else. Мы также рассмотрим, когда вам следует рассмотреть возможность использования оператора if-else вместо тернарного оператора.

Более лаконичный, чем блоки Ako-Else

Как уже упоминалось, в Python выражение тернарного оператора является более кратким, чем оператор if-else. Поэтому вы можете использовать его для проверки условий и условного вычисления выражений на лету.

В следующем примере nums — это список из 100 случайно сгенерированных целых чисел. Для каждого из 100 чисел мы проверяем, четное оно или нечетное. И эта оценка происходит внутри f-строки.

import random

nums = [random.choice(range(100)) for i in range(10)]

for num in nums:
    print(f"{num} is {'even' if num%2==0 else 'odd'}")
# sample output

0 is even
56 is even
6 is even
53 is odd
62 is even
7 is odd
8 is even
77 is odd
41 is odd
94 is even

Тернарный оператор требует предложения Else

При использовании условных операторов if-else предложение else необязательно. Возьмем пример. Переменная game_over устанавливается в значение True, если энергия падает до значения, меньшего или равного нулю.

Однако, если энергия больше нуля, переменная game_over никогда не инициализируется. Таким образом, вы столкнетесь с ошибками, если попытаетесь получить доступ к переменной game_over.

energy = 5
if energy 
Traceback (most recent call last):
  File "ternary_op.py", line 39, in 
    print(f"Is the game over? {game_over}")
NameError: name 'game_over' is not defined

Один из способов исправить это — установить для game_over значение False в начале и обновить его до True, если уровень энергии меньше или равен нулю.

energy = 5
game_over = False
if energy 

Међутим, када користите Питхон тернарни оператор еквивалентан горе наведеном, клаузула елсе није опциона. Тернарни оператор захтева да се израз процени када је услов Фалсе.

game_over = True if energy 

Ако промените горе наведено у гаме_овер = Тачно ако је енергија

File "ternary_op.py", line 42
    game_over = True if energy 

Да бисте проверили више услова, користите изјаве Иф-Елсе

Размотрите пример: Свако питање у сету питања кодирања интервјуа има придружени резултат тежине. У зависности од овог резултата, одређеном питању додељујемо један од три нивоа тежине: лак, средњи или тежак. Претпоставимо да имамо следеће:

Оцена Ниво тежине Мање од 10 лако Између 10 и 20 средње веће од 20 тешко

С обзиром на оцјену тежине, можете добити његов ниво тежине користећи Питхон тернарни оператор као што је приказано:

score = 12

difficulty_level = "easy" if score  20 else "medium"

print(difficulty_level)
# medium

Выражение тернарного оператора в приведенном выше блоке кода имеет следующий вид:

expression1 if condition1 else expression2 if condition2 else expression3

Несмотря на лаконичность, его несколько сложно читать и анализировать. На следующем рисунке показано, как в этом случае происходит поток управления.

В следующем фрагменте кода показана эквивалентная реализация с использованием операторов if-else. Как видите, поток управления намного проще для понимания, а код более читаем.

if score  20:
    difficulty_level="hard"
else:
    difficulty_level="medium"

print(difficulty_level)

Поэтому, когда у вас есть несколько условий, вы должны использовать блоки if-else вместо тернарного оператора. Это гарантирует легкость чтения и понимания кода.

Кроме того, когда вам нужно выполнить несколько операторов — в зависимости от того, является ли условие истинным или ложным — вам следует рассмотреть возможность использования оператора if-else.

Заключение

Вот краткое изложение того, что вы узнали из этого руководства.

  • В Python тернарный оператор может использоваться со следующим синтаксисом: выражение1, если условие, иначе выражение2.
  • Вы можете эмулировать поведение тернарного оператора, используя кортежи и словари Python.
  • Хотя тернарный оператор может быть более лаконичной альтернативой блокам if-else, вы должны убедиться, что код читаем. Чтобы улучшить читаемость кода, вы можете использовать операторы if-else вместо тернарного оператора, особенно когда вам нужно связать несколько условий.

Затем изучите учебник по равным и не равным операторам в Python.

Поделиться в соцсетях