Logo
Книга для начинающих
ВходРегистрация
/
Программирование
/
Курс Python
/

Тернарный оператор

Python: Тернарный оператор

Посмотрите на определение функции, которая возвращает модуль переданного числа:

# Модуль это само число без знака
def abs(number: int) -> int:
    if number >= 0:
        return number
    return -number

Но можно записать более лаконично. В Python есть конструкция, которая работает как if-else. Она называется тернарный оператор и является единственным оператором в Python, который требует три операнда:

def abs(number: int) -> int:
    return number if number >= 0 else -number

Общий паттерн выглядит так: <expression on true> if <predicate> else <expression on false>.

Тернарный оператор

Давайте перепишем начальный вариант get_type_of_sentence() аналогично.

Было:

def get_type_of_sentence(sentence: str) -> str:
    last_char = sentence[-1]
    if last_char == '?':
        return 'question'
    return 'normal'

Стало:

def get_type_of_sentence(sentence: str) -> str:
    last_char = sentence[-1]
    return 'question' if last_char == '?' else 'normal'

print(get_type_of_sentence('Hodor'))   # => normal
print(get_type_of_sentence('Hodor?'))  # => question

Тернарный оператор можно вкладывать в тернарный оператор. Но это считается плохой практикой, такой код очень сложно понимать.

Задание

Кнопка в приложении работает как переключатель: каждое нажатие меняет состояние на противоположное. Реализуйте функцию flip_flop(), которая принимает на вход строку и, если эта строка равна 'flip', возвращает строку 'flop'. В противном случае функция должна вернуть 'flip'.

Примеры вызова:

print(flip_flop('flip')) # => flop
print(flip_flop('flop')) # => flip

Попробуйте написать два варианта функции: с обычным if-else, и с тернарным оператором.

Коммерческий опыт и Трудоустройство

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
/
Программирование
/
Курс Python
/

Тернарный оператор

Python: Тернарный оператор

Посмотрите на определение функции, которая возвращает модуль переданного числа:

# Модуль это само число без знака
def abs(number: int) -> int:
    if number >= 0:
        return number
    return -number

Но можно записать более лаконично. В Python есть конструкция, которая работает как if-else. Она называется тернарный оператор и является единственным оператором в Python, который требует три операнда:

def abs(number: int) -> int:
    return number if number >= 0 else -number

Общий паттерн выглядит так: <expression on true> if <predicate> else <expression on false>.

Тернарный оператор

Давайте перепишем начальный вариант get_type_of_sentence() аналогично.

Было:

def get_type_of_sentence(sentence: str) -> str:
    last_char = sentence[-1]
    if last_char == '?':
        return 'question'
    return 'normal'

Стало:

def get_type_of_sentence(sentence: str) -> str:
    last_char = sentence[-1]
    return 'question' if last_char == '?' else 'normal'

print(get_type_of_sentence('Hodor'))   # => normal
print(get_type_of_sentence('Hodor?'))  # => question

Тернарный оператор можно вкладывать в тернарный оператор. Но это считается плохой практикой, такой код очень сложно понимать.

Задание

Кнопка в приложении работает как переключатель: каждое нажатие меняет состояние на противоположное. Реализуйте функцию flip_flop(), которая принимает на вход строку и, если эта строка равна 'flip', возвращает строку 'flop'. В противном случае функция должна вернуть 'flip'.

Примеры вызова:

print(flip_flop('flip')) # => flop
print(flip_flop('flop')) # => flip

Попробуйте написать два варианта функции: с обычным if-else, и с тернарным оператором.

Коммерческий опыт и Трудоустройство

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются
← ПредыдущийСледующий →
← ПредыдущийСледующий →
← ПредыдущийСледующий →

Ваше упражнение проверяется по этим тестам

import solution


def test1():
    assert solution.flip_flop("flip") == "flop"
    assert solution.flip_flop("flop") == "flip"
← ПредыдущийСледующий →

Решение учителя откроется через:

20:00

waiting_clock
← ПредыдущийСледующий →