根据条件使用具有格式的 f 字符串

如何使用带逻辑的 f-string 将 a 格式化int为 a float?我想 if pplisTrue格式化num为 2 位小数,如果ppl是Falserformat 则不管它是什么。

类似的东西,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 ""}}'
请注意嵌套所需的额外一对大括号。

但我不认为这更干净。就我个人而言,与您清晰的原始版本相比,我发现更难解析这里发生的事情。毕竟简单总比复杂好;平面优于嵌套。

要回复问题请先登录注册