← Все вопросы

Как вставить тернарный оператор прямо внутрь f-строки?

Задан 18 месяцев назад468 просмотров2 ответа
13

Хочу в f-строке вывести «товаров» или «товар» в зависимости от количества, не разбивая на if/else до строки. Можно ли засунуть условие прямо в фигурные скобки f-строки?

2 ответа

18
✓ Принятый ответ — помог автору

Да, тернарник прекрасно живёт внутри { }:

n = 1
print(f"Найдено {n} {'товар' if n == 1 else 'товаров'}")

Внутри фигурных скобок можно любое выражение, в том числе a if cond else b. Единственная тонкость — следи за кавычками: f-строка снаружи в двойных, значит литералы внутри бери в одинарные (или наоборот), иначе строка оборвётся раньше времени.

Дмитрий Конопацкий Проблема кавычек реально частая, в 3.12 уже можно одинаковые, но лучше чередовать · 18 месяцев назад
6

Можно, но если логика чуть сложнее (3+ формы множественного числа) — вынеси в отдельную функцию, f-строка с длинным тернарником читается тяжело.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект