Python报错unsupported operand between int和list实例 maximum_toys代码问题求解
错误定位与修复方案
错误根源
报错unsupported operand between instances of int and list的触发点是if (sum+x <= K)判断逻辑:你将K定义为了列表类型,无法和整数做比较运算。
具体问题点
- 驱动代码中
K = input().split()写法错误:split()会将输入字符串按空格切割返回列表,你需要的是读取总预算这一个整数,不需要调用split。 maximum_toys函数存在逻辑冗余:在for循环中反复执行cost.sort(),排序操作仅需执行1次即可,无需遍历N次重复排序。- 函数返回值缩进错误:
return count当前写在第二个for循环内部,第一次循环执行完成就会直接返回结果,无法遍历所有玩具价格。 - 优化点:可以在读取
cost时直接批量将元素转为整数,无需在循环中单独转换。
修复后完整代码
def maximum_toys(cost, N, K): count = 0 sum = 0 # 升序排序仅执行一次 cost.sort() for i in range(N): x = cost[i] if sum + x <= K: sum += x count += 1 else: # 已升序排序,当前玩具买不起时后续更贵的也买不起,直接跳出循环 break # 遍历完成后再返回结果 return count # 驱动代码 if __name__ == '__main__': # 读取总预算为整数 K = int(input()) # 读取价格列表并直接转为整数类型 cost = list(map(int, input().split())) N = len(cost) print(maximum_toys(cost, N, K))
内容的提问来源于stack exchange,提问作者Babli Sharma
相关产品推荐
相关产品推荐

