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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:36:02