如何使用带有逻辑的f字符串将int格式化为float?我想,如果pplTrue,格式是num到2位小数,如果pplFalse,格式是任意的.

大约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 ""}}'

请注意嵌套所需的额外一对支架.

但我不认为这是cleaner.就我个人而言,我发现很难分析这里发生的事情,而不是你清晰的原始版本.毕竟简单总比复杂好;平的比嵌套的好.

Python-3.x相关问答推荐

Pandas 数据帧断言等同于NaN

Django将任何查询显示为html表格

类变量的Python子类被视为类方法

如何确保 GCP Document AI 模型输出与输入文件同名的 JSON?

如何将 OLS 趋势线添加到使用 updatemenus 显示数据子集的 plotly 散点图图形对象?

如何键入提示函数,在 Python 中通过类decorator 添加到类中

仅当从 USB 摄像头接收到新图像时才处理图像

判断 gekko 中的表达式

没有可重定向到的 URL.提供一个 url 或在模型上定义一个 get_absolute_url 方法

Pandas 将列格式化为货币

保存 StandardScaler() 模型以用于新数据集

Python - For 循环数百万行

如何使 Python3 成为 Geany 中的默认 Python

发送Electron邮件时的 MIMEText UTF-8 编码问题

为什么`multiprocessing.Queue.get`这么慢?

AttributeError:系列对象没有属性iterrows

python中的订单字典索引

map 对象不是 JSON 可序列化的

带有自定义标头的 urllib.urlretrieve

将 Python 字节转换为无符号 8 位整数