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

时间:2018-08-16 22:04:52

标签: python python-3.x f-string

如何使用带有逻辑的f字符串将int格式化为float?我想将ppl格式化为True到小数点后两位,如果numppl格式化为任意形式。

类似False的方法,但这不起作用。下面的代码演示了我想通过尽可能简单的f字符串实现的行为:

string = f'i am {num:.2f if ppl else num}'

2 个答案:

答案 0 :(得分:8)

您可以嵌套表达式以在f字符串中计算表达式内部。这意味着您可以在f字符串内向右移动三进制:

string = f'I am {num:{".2f" if ppl else ""}}'

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

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

答案 1 :(得分:2)

我建议您实际上将fstring分成两行

num_str = f'{num:.2f}' if ppl else f'{num}'
str = f'I am {num_str}'

这样,每一行都尽可能地简单。