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

Python按重量区间统计包裹数量代码出错,请求排查

问题分析与修正代码

原代码的错误点:

  • 输入分割后得到的是字符串列表,未转换为数值类型,无法进行重量区间的数值比较
  • 使用了range(...) from weight这种Python不存在的语法,属于完全错误的筛选方式
  • 对字符串列表直接排序会按字典序(比如"10"会排在"2"前面),排序逻辑错误
  • 区间范围定义错误:range(0,5)只包含0-4,不包含5,不符合需求的0-5区间;同理6-10、11-25的range范围都遗漏了上限值

修正后的代码:

# 欢迎语
print("Hello Welcome to ACME GRocery Store ")
# 获取包裹重量输入,处理为数值列表
# 示例输入:10, 20, 38, 49, 18, 29, 10, 39
weight_input = input("Please enter the weight's of all packages with commas in between: ")
# 分割字符串并去除空格,转换为整数列表
weights = [int(w.strip()) for w in weight_input.split(",")]
# 对数值列表排序
weights.sort()

# 统计各区间包裹数量
small_count = sum(1 for w in weights if 0 <= w <=5)
medium_count = sum(1 for w in weights if 6 <= w <=10)
large_count = sum(1 for w in weights if 11 <= w <=25)
extra_large_count = sum(1 for w in weights if w >=26)

print("Amount of packages submitted = ", len(weights))
print("Amount of small packages submitted = ", small_count)
print("Amount of medium packages submitted = ", medium_count)
print("Amount of large packages submitted = ", large_count)
print("Amount of extra large packages submitted = ", extra_large_count)

关键修改说明:

  1. 类型转换:通过列表推导式将分割后的字符串转换为整数,同时用strip()处理输入中可能存在的空格(比如输入"10, 20"中的空格)
  2. 正确筛选:使用生成器表达式结合sum()统计符合区间的数量,逻辑清晰且符合Python语法
  3. 区间修正:直接用数值比较明确区间范围,避免range左闭右开特性导致的边界遗漏
  4. 排序修复:先转换为数值列表再排序,保证排序结果是按重量大小排列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:55:18