ロジックでf文字列を使用してint
をfloat
としてフォーマットするにはどうすればよいですか? ppl
がTrue
である場合、num
を小数点以下2桁にフォーマットし、ppl
がFalse
である場合、それを何にでもフォーマットしますそうです。
何かのようなもの string = f'i am {num:.2f if ppl else num}'
しかし、これは機能しません。以下のコードは、可能であれば、より簡単なf文字列で実現したい動作を示しています。
ppl = True
num = 3
string = f'I am {num:.2f}' if ppl else f'I am {num}'
print(string)
#if ppl False
#=> i am 3
#if ppl True
#=> i am 3.00
式をネストして、f文字列の内部式を評価できます。これは、f-string内で三項を右に移動できることを意味します。
string = f'I am {num:{".2f" if ppl else ""}}'
ネストに必要な追加のブレースのペアに注意してください。
しかし、これはcleanerだとは思わない。個人的には、元の明確なバージョンとは対照的に、ここで何が行われているのかを解析するのが難しいと感じています。結局のところ、単純な方が複雑よりも優れています。ネストよりもフラットの方が優れています。
実際にfstringを2行に分けることをお勧めします
num_str = f'{num:.2f}' if ppl else f'{num}'
str = f'I am {num_str}'
そうすれば、各行ができる限りシンプルになります。