商品列表已按特定规则排序,每个商品包含三个信息:编号、价格、库存量,对应三元组 (id, price, stock) 。现有预算 M 元,按排好的顺序依次购买,只要当前商品的价格不超过剩余预算并且尚有剩余就购买并扣款,否则立即停止。以下哪个选项是正确的?( ) budget = M products.sort(key=lambda x: (x[1], x[2], x[0])) # 按规则排序 bought = [] for item in products: if ________: # 此处需要填入适当的代码 budget -= item[1] bought.append(item[0]) else: break
A:budget > 0 and item[2] != 0
B:budget >= item[1] and item[2] != 0
C:budget > item[1] and item[2] > 0
D:budget 0
正确答案:B
答案解析
根据题目逻辑,遍历已排序的商品列表,对每个商品判断是否满足购买条件。购买条件需同时满足:剩余预算足以支付当前商品价格,且该商品库存大于0。若条件成立,则扣减预算并记录购买;否则终止遍历。循环中判断依据必须基于当前剩余预算与商品价格的比较,以及库存是否充足。条件表达式需确保价格不超过剩余预算,且库存非零。比较操作应允许预算恰好等于商品价格时仍可购买。库存判断应等价于大于0的判定。所有判断均在单次循环中即时求值,不依赖后续状态。
试卷来源:202606 CCF-GESP编程能力等级认证Python四级真题