Python中get_checkin_bags函数实现及for循环问题求助
Python行李筛选函数问题修正
你的代码存在以下几个关键问题:
- 参数顺序错误:题目明确函数参数顺序为
bag_weights(行李重量列表)、min_weight(托运最小重量)、max_weight(托运最大重量),你定义的函数参数顺序完全颠倒,会导致参数传递错位。 - range函数误用:
range()仅接受整数类型的起始、结束参数,你传入了浮点数min_weight,还错误地给len()传递两个参数,语法完全错误。遍历行李列表不需要用索引,直接遍历元素更简洁。 - 条件判断错误:题目要求包含边界值(即重量需
>= min_weight且<= max_weight),你用了>和<,会漏掉刚好等于最小/最大重量的行李。 - append操作错误:你将整个
bag_weights列表添加到output,而不是当前符合条件的单个行李重量。 - 提前返回问题:你在循环内第一次满足条件就执行
return,函数只会返回第一个符合条件的元素,无法收集所有符合要求的行李。 - 全局变量使用不当:全局变量
output会导致函数多次调用时结果混乱,应在函数内部初始化结果列表。
修正后的代码
基础循环版本
def get_checkin_bags(bag_weights, min_weight, max_weight): output = [] for weight in bag_weights: if min_weight <= weight <= max_weight: output.append(weight) return output # 测试示例 bag_weights = [33.0, 6.3, 5.1, 53.4, 31.5] min_weight = 10.0 max_weight = 50.0 print(get_checkin_bags(bag_weights, min_weight, max_weight)) # 输出 [33.0, 31.5]
简洁列表推导式版本
def get_checkin_bags(bag_weights, min_weight, max_weight): return [weight for weight in bag_weights if min_weight <= weight <= max_weight] # 测试示例 bag_weights = [33.0, 6.3, 5.1, 53.4, 31.5] min_weight = 10.0 max_weight = 50.0 print(get_checkin_bags(bag_weights, min_weight, max_weight)) # 输出 [33.0, 31.5]
内容的提问来源于stack exchange,提问作者etena_fantom
相关产品推荐
相关产品推荐

