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

Python中多列数据f-string右对齐失效问题求助

问题修复:f-string实现表格列对齐

你的表格对齐失效,核心原因是表头与内容的对齐方式、列宽度不匹配,以及混用两种格式化方式导致的逻辑冲突。以下是具体修复方案:

问题分析

  1. 表头使用旧式%格式化,内容用f-string,但两者的列对齐规则未统一:

    • 表头中%18s对"Starting balance"采用右对齐,但内容里startBalance:<18.2f是左对齐,直接导致该列错位。
    • 虽然Year列的宽度和对齐匹配,但其他列的格式化逻辑没有和表头严格对应。
  2. 数字列通常建议统一右对齐,更符合阅读习惯,你当前的起始余额列左对齐也会破坏整体表格的视觉一致性。

修复后的完整代码

# 输入数据
startBalance = float(input("Enter the investment amount: "))
years = int(input("Enter the number of years: "))
rate = int(input("Enter the rate as a %: "))

# 转换利率为小数
rate = rate / 100

# 初始化利息累计变量
totalInterest = 0.0

# 使用f-string统一表头格式,与内容对齐规则保持一致
print(f"{'Year':>4}{'Starting balance':>18}{'Interest':>10}{'Ending balance':>16}")

# 计算并逐年输出结果
for year in range(1, years + 1):
    interest = startBalance * rate
    endBalance = startBalance + interest
    # 所有数字列统一右对齐,宽度与表头严格匹配
    print(f"{year:>4}{startBalance:>18.2f}{interest:>10.2f}{endBalance:>16.2f}")
    startBalance = endBalance
    totalInterest += interest

# 输出汇总信息
print(f"Ending balance: ${endBalance:.2f}")
print(f"Total interest earned: ${totalInterest:.2f}")

关键修改说明

  • 表头改用f-string格式化,每列的宽度、对齐方式与内容完全对应:
    • {'Year':>4}:占4位,右对齐,匹配内容的year:>4
    • {'Starting balance':>18}:占18位,右对齐,匹配内容的startBalance:>18.2f
    • {'Interest':>10}:占10位,右对齐,匹配内容的interest:>10.2f
    • {'Ending balance':>16}:占16位,右对齐,匹配内容的endBalance:>16.2f
  • 汇总信息也改用f-string,保持代码风格统一;如果仍习惯旧式%格式化,也可以保留,但建议统一风格。

内容的提问来源于stack exchange,提问作者Ek'mii U-daidee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:55:16