如何使用带有逻辑的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 = f'I am {num:{".2f" if ppl else ""}}'
请注意嵌套所需的另一对大括号。
但是我认为这不干净。就个人而言,与您的原始版本相比,我很难解析这里发生的事情。毕竟简单胜于复杂;扁平比嵌套更好。