Условная структура в 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:
Это решение для
оговоренных значений переменной,
но может обработать и —
"Мы так не договаривались!"