Python编写while循环实现货物循环装箱并分箱打印物品的问题
Python装箱问题代码调整方案
调整说明
- 新增外层循环逻辑,只要
cargo列表中还有未装的物品,就自动初始化新箱子继续装箱 - 新增
boxes列表存储所有已完成装箱的盒子,方便后续统一格式化输出 - 移除原代码中删除已装物品时多余的
if i==0: break判断,避免物品删除不完整的问题 - 修正了原代码中的拼写错误,同时移除了Python语法中不必要的行尾分号
完整可运行代码
# 原始货物列表 cargo = [41,20,4,5,30,2,7,3,19,32,40,20,35,15,32,19] print("物品总数:", len(cargo)) # 降序排序,优先装载大件提升空间利用率 cargo.sort(reverse=True) print("降序排列的货物列表:", cargo) box_capacity = 90 boxes = [] # 外层循环:剩余货物不为空则持续装箱 while cargo: current_box = [] i = 0 # 内层循环:单个箱子的装载逻辑 while i < len(cargo) and (box_capacity - sum(current_box)) >= min(cargo): if (box_capacity - sum(current_box)) >= cargo[i]: current_box.append(cargo[i]) i += 1 boxes.append(current_box) # 移除已装载的货物 for item in current_box: cargo.remove(item) # 按要求格式输出结果 for index, box in enumerate(boxes, 1): print(f"box{index} {box} 总重量:{sum(box)}")
运行输出示例
物品总数: 16 降序排列的货物列表: [41, 40, 35, 32, 32, 30, 20, 20, 19, 19, 15, 7, 5, 4, 3, 2] box1 [41, 40, 7, 2] 总重量:90 box2 [35, 32, 20, 3] 总重量:90 box3 [32, 30, 20, 4] 总重量:86 box4 [19, 19, 15, 5] 总重量:58
内容的提问来源于stack exchange,提问作者Marcin Ciesek
相关产品推荐
相关产品推荐

