You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何设置模字符串格式化的最大宽度以对齐输出?

如何用模字符串格式化实现对齐的菜单输出?

你当前的问题出在格式化字符串的结构上:"%d. %s $%20.2f" 把$和价格分开,还给价格设置了20字符的左对齐最小宽度,导致价格被推到右侧,同时商品描述没有固定宽度,整体排版混乱。

要实现你期望的对齐效果,需要调整两个关键点:

  • 给商品描述设置固定宽度的左对齐格式,让所有描述占满相同宽度,自动补空格
  • 把$和价格放在一起,不需要给价格设置过大的最小宽度

修改后的代码如下:

print("%d. %-20s $%.2f" % (count, i.description, i.price))

格式说明:

  • %-20s:-指定左对齐,20设置宽度为20字符。商品描述会左对齐显示,长度不足20时自动在右侧补空格,超过20时会完整显示(如果需要限制最大长度,可以用%.20s,会截断超出部分)
  • $%.2f:直接紧跟在描述的空格后,%.2f保证价格保留两位小数,不需要额外设置宽度,自然对齐到同一列

对于最后一行Cancel Purchased Item,如果是在同一个循环里处理,可以加个判断:

if hasattr(i, 'price'):
    print("%d. %-20s $%.2f" % (count, i.description, i.price))
else:
    print("%d. %s" % (count, i.description))

调整后输出就会和你期望的一致:

Menu
---------------------------------
1. Pants                     $19.99
2. Shirt                     $12.50
3. Dress                     $79.00
4. Socks                     $1.00
5. Sweater                   $49.99
6. Cancel Purchased Item

内容的提问来源于stack exchange,提问作者Justin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:07:51