Условная структура в f-строке

Имеются условия, от которого будет зависеть значение текстовой строки.
Условий три - значений строки тоже три.

Как мне это впихнуть в f-строку?

Не поймите превратно, но в интернете про f-строки в гайдах пишут максимум, как она круто может значения подставлять.

Про условия я нашел только запись вида:

   f'{"<значение 1>" if <условие> else "<значение 2>"}'  

А можно ли сделать, чтобы три значения (пробовал встраивать еще одну f-строку на место <значение 2> - не получается)?


Ответы (4 шт):

Автор решения: S. Nick

Попробуйте так

>>> a = 1
>>> 
>>> f'{"2" if a == 2 else "3" if a == 3 else "1"}'
'1'
>>> a = 2
>>> f'{"2" if a == 2 else "3" if a == 3 else "1"}'
'2'
>>> a = 3
>>> f'{"2" if a == 2 else "3" if a == 3 else "1"}'
'3'
>>> 
>>> a = 33
>>> f'{"2" if a == 2 else "3" if a == 3 else "1"}'
'1'
>>> 
→ Ссылка
Автор решения: AnnaBazueva

Магический метод str.__mul__(bool).

Если строка зависит от значения переменной,
то можно решить так:

magic_numbers = (13, 42, 54)

for num in magic_numbers:
    print(''.join(('Это самое'*(num == 13),
                   '"неочевидное"'.__mul__(num == 42),
                   'решение!'*(num == 54))
                  )
        )

output:

Это самое
"неочевидное"
решение!

И тут могут быть тысячи вариантов без ущерба читаемости! ;)
(хотя для 1000 лучше уже использовать dict)

→ Ссылка
Автор решения: SVBazuev

dict только при key == num:

magic_numbers = (_ for _ in (13, "42", 54))

any_strings = {
    13: 'Это решение',
    "42": 'пригодно только —',
    54: '"при оговоренных значениях переменной".'
}

for _ in any_strings:
    print(any_strings[next(magic_numbers)])

output:

Это решение
пригодно только —
"при оговоренных значениях переменной".
→ Ссылка
Автор решения: SVBazuev

Ещё вариант с match:

magic_numbers = (_ for _ in ('13', 42, '54'))

for _ in range(4):
    try:
        num = next(magic_numbers)
    except Exception:
        num = _

    match num:
        case '13':
            s = 'Это решение для'
        case 42:
            s = 'оговоренных значений переменной,'
        case '54':
            s = 'но может обработать и —'
        case _:
            s = '"Мы так не договаривались!"'
    print(s)

output:

Это решение для
оговоренных значений переменной,
но может обработать и —
"Мы так не договаривались!"
→ Ссылка