首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用f-string,格式取决于条件

使用f-string,格式取决于条件
EN

Stack Overflow用户
提问于 2018-08-17 06:04:52
回答 2查看 31.6K关注 0票数 40

如何使用带逻辑的f-string将int格式化为float?我希望如果pplTrue,则将num格式化为2位小数,如果pplFalse,则将其重新格式化为任何值。

类似于string = f'i am {num:.2f if ppl else num}',但这不起作用。如果可能的话,下面的代码演示了我想用一个更简单的f-string实现的行为:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-17 06:10:54

您可以在f字符串中嵌套表达式以在表达式内部求值。这意味着您可以将三元数据移到f-string中:

代码语言:javascript
复制
string = f'I am {num:{".2f" if ppl else ""}}'

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

但我不认为这样更干净。就我个人而言,我发现很难分析这里发生了什么,而不是你清晰的原始版本。毕竟,简单比复杂好;平面比嵌套好。

票数 57
EN

Stack Overflow用户

发布于 2018-08-17 06:15:11

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

代码语言:javascript
复制
num_str = f'{num:.2f}' if ppl else f'{num}'
str = f'I am {num_str}'

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

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51885913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档