如何使用带有逻辑的f字符串将int格式化为float?我想如果pplTrue来将num格式化为2个小数位,并且如果pplFalse来将其格式化为任何形式。

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 ""}}'

请注意嵌套所需的另一对大括号。

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

10-06 12:14