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

Python字典列表处理:筛选高价书籍并计算平均重量及代码修正

代码修正与解释

需求回顾

筛选价格超过800的书籍,显示其名称,并计算这类书籍的平均重量。

原代码存在的问题

  • 函数calcWeight逻辑偏离需求:遍历所有书籍的重量并判断重量≥800,而非针对价格超过800的书籍计算平均重量,且硬编码除以2,未动态统计符合条件的书籍数量。
  • 外层循环冗余且逻辑错误:遍历书籍的键值对查找价格,每找到一本价格≥800的书就调用calcWeight,导致重复计算所有书籍的重量,而非仅统计符合条件的书籍。
  • 变量未初始化:totalWeight未定义初始值,运行时会抛出NameError。
  • 缩进错误:if value >= 800:后的代码未缩进,不符合Python语法规范。

修正后的代码

# 初始化变量:存储符合条件的书籍名称、总重量、数量
qualified_books = []
total_weight = 0
count = 0

books = [
    {"name": "textbook", "weight": 500, "price": 800},
    {"name": "notebook", "weight": 100, "price": 200},
    {"name": "storybook", "weight": 700, "price": 1000}
]

# 遍历所有书籍,筛选价格超过800的
for book in books:
    if book["price"] > 800:  # 需求是"超过800",所以用>而非>=
        qualified_books.append(book["name"])
        total_weight += book["weight"]
        count += 1

# 显示符合条件的书籍名称
print("价格超过800的书籍名称:")
for name in qualified_books:
    print(name)

# 计算并显示平均重量(避免除以0错误)
if count > 0:
    avg_weight = total_weight / count
    print(f"这类书籍的平均重量:{avg_weight}")
else:
    print("没有价格超过800的书籍")

修正逻辑说明

  • 直接遍历每本书籍,通过book["price"] > 800精准筛选符合需求的书籍,无需嵌套遍历键值对,代码更简洁高效。
  • 用qualified_books存储符合条件的书名,total_weight累加重量,count统计数量,动态计算平均重量,避免硬编码的不合理性。
  • 添加了空值判断,防止没有符合条件书籍时出现除以0的运行错误。
  • 严格遵循Python缩进规范,变量提前初始化,避免未定义错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:00:22