В этом руководстве вы узнаете, как использовать тернарный оператор в 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 energyTraceback (most recent call last): File "ternary_op.py", line 39, inprint(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.