Python格式化print语句实现Count/Sum/Average数值列对齐输出
Python数值统计脚本print排版对齐方案
问题描述
编写Python无限循环数值统计脚本时,需要实时累计计算计数(Count)、总和(Sum)、平均值(Average)。原print语句直接拼接字段和数值,输出内容横向混排,需要达到以下排版要求:
- 表头
Count/Sum/Average固定显示在上方 - 每轮计算的数值与表头按列对齐,数值保留2位小数,对齐效果匹配参考样例(计数为4时,总和335.00、平均值83.75)
- 循环结束后输出的总和、平均值结果也和上方列对齐
实现代码
直接用Python自带的f-string格式化功能,给每列设置固定宽度、指定对齐方式和小数位数即可,不需要安装第三方库。修改后的完整代码如下:
total_sum = 0 count = 0 header_printed = False # 标记表头是否已打印,避免重复输出 while True: data = input("Enter a number or press Enter to quit: ") if data == "": break total_sum += float(data) count += 1 average = total_sum / count # 第一次输入有效数值时先打印表头 if not header_printed: # 三列分别设置宽度为10、12、10,统一右对齐 print(f"{'Count':>10}{'Sum':>12}{'Average':>10}") header_printed = True # 数值列和表头保持同宽,浮点数统一保留2位小数 print(f"{count:>10}{total_sum:>12.2f}{average:>10.2f}") print("-"*38) if count > 0: final_average = total_sum / count # 汇总行标签占固定宽度左对齐,数值部分和上方列位置对齐 print(f"{'The sum is':<12}{total_sum:>10.2f}") print(f"{'The average is':<12}{final_average:>10.2f}")
格式说明
{内容:>n}表示内容右对齐,总共占用n个字符宽度,同列设置相同宽度就能自动对齐.2f表示浮点数保留2位小数,和参考样例的335.00/83.75格式完全匹配- 表头仅打印一次,不会因为循环重复输出打乱排版
- 注:原代码用
Sum做变量名会覆盖Python内置的求和函数,修改为total_sum避免潜在问题
参考输出效果
Enter a number or press Enter to quit: 100 Enter a number or press Enter to quit: 85 Enter a number or press Enter to quit: 70 Enter a number or press Enter to quit: 80 Enter a number or press Enter to quit: Count Sum Average 4 335.00 83.75 -------------------------------------- The sum is 335.00 The average is 83.75
内容的提问来源于stack exchange,提问作者user16959208
相关产品推荐
相关产品推荐

