根据条件使用带格式的 f 字符串
Using f-string with format depending on a condition
如何使用带逻辑的 f 字符串将 int
格式化为 float
?我想如果 ppl
是 True
将 num
格式化为小数点后 2 位,如果 ppl
是 False
则将其重新格式化。
类似 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 ""}}'
请注意嵌套所需的额外一对大括号。
但我不认为这是 清洁剂。就我个人而言,与您清晰的原始版本相比,我更难解析这里发生的事情。毕竟简单总比复杂好;扁平比嵌套好。
我建议您实际上将字符串分成两行
num_str = f'{num:.2f}' if ppl else f'{num}'
final_str = f'I am {num_str}'
这样每一行都尽可能简单。
如何使用带逻辑的 f 字符串将 int
格式化为 float
?我想如果 ppl
是 True
将 num
格式化为小数点后 2 位,如果 ppl
是 False
则将其重新格式化。
类似 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 ""}}'
请注意嵌套所需的额外一对大括号。
但我不认为这是 清洁剂。就我个人而言,与您清晰的原始版本相比,我更难解析这里发生的事情。毕竟简单总比复杂好;扁平比嵌套好。
我建议您实际上将字符串分成两行
num_str = f'{num:.2f}' if ppl else f'{num}'
final_str = f'I am {num_str}'
这样每一行都尽可能简单。