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

Python住房入住率报告:浮点数保留1位小数及格式错误修复求助

修复方案

以下是针对问题的完整修复代码,同时优化了代码结构:

def get_data():
    occupants_labels = ["0", "1", "2", "3", "4", "5", "6", ">6"]
    house_counts = []
    for label in occupants_labels:
        count = int(input(f"Provide the number of houses with {label} occupants: "))
        house_counts.append(count)
    return occupants_labels, house_counts

def calculate_percentages(house_counts):
    total = sum(house_counts)
    return [(count * 100 / total) for count in house_counts]

def display_results(occupants_labels, house_counts, percentages):
    print("Results")
    # 打印表头与分隔线
    print("{0:>10} | {1:>12} | {2:>12}".format("Occupants", "No. Houses", "Percentage (%)"))
    print("-" * 40)
    # 逐行输出数据
    for label, count, pct in zip(occupants_labels, house_counts, percentages):
        print("{0:>10} | {1:>12} | {2:>12.1f}".format(label, count, pct))

if __name__== "__main__":
    occupants_labels, house_counts = get_data()
    percentages = calculate_percentages(house_counts)
    display_results(occupants_labels, house_counts, percentages)

问题修复细节

1. 表头重复显示问题

原代码采用横向布局,每个数据行都附带表头标签,导致重复。修复后改为纵向表格:

  • 仅在顶部显示一次统一表头
  • 每行对应一个居住人数类别,数据与表头列一一对应,结构更清晰

2. 百分比格式化与类型错误

原代码直接输出未格式化的浮点数,且错误地对字符串应用f格式符导致报错。修复方式:

  • 直接对浮点型百分比值使用.1f格式符,确保保留1位小数
  • 用>12设置固定列宽,保持表格对齐
  • 避免将百分比转换为字符串后再格式化,彻底解决Unknown format code 'f' for object of type 'str'错误

代码优化点

  • 用列表替代分散的h0-h7变量,减少冗余,便于后续扩展类别
  • 使用zip批量遍历数据,简化循环逻辑
  • 添加分隔线提升表格可读性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:20:33