如何使用带逻辑的f-string将int格式化为float?我希望如果ppl为True,则将num格式化为2位小数,如果ppl为False,则将其重新格式化为任何值。
类似于string = f'i am {num:.2f if ppl else num}',但这不起作用。如果可能的话,下面的代码演示了我想用一个更简单的f-string实现的行为:
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发布于 2018-08-17 06:10:54
您可以在f字符串中嵌套表达式以在表达式内部求值。这意味着您可以将三元数据移到f-string中:
string = f'I am {num:{".2f" if ppl else ""}}'请注意嵌套所需的额外一对大括号。
但我不认为这样更干净。就我个人而言,我发现很难分析这里发生了什么,而不是你清晰的原始版本。毕竟,简单比复杂好;平面比嵌套好。
发布于 2018-08-17 06:15:11
我建议您实际上将fstring分成两行
num_str = f'{num:.2f}' if ppl else f'{num}'
str = f'I am {num_str}'这样,每一行都尽可能简单。
https://stackoverflow.com/questions/51885913
复制相似问题