如何使用带有逻辑的f字符串将int
格式化为float
?我想将ppl
格式化为True
到小数点后两位,如果num
将ppl
格式化为任意形式。>
类似False
的方法,但这不起作用。下面的代码演示了我想通过尽可能简单的f字符串实现的行为:
string = f'i am {num:.2f if ppl else num}'
答案 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}'
这样,每一行都尽可能地简单。