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

Python while循环条件为false时未终止运行该如何排查解决?

问题排查与修复方案

问题根因

  • 循环嵌套逻辑错误:你将遍历所有价格的for循环完全放在了while循环内部,while的终止条件price_t <= k只会在所有价格全部累加完成后才会校验,无法在累加中途判断是否超出阈值,自然不会提前跳出。
  • 无中途终止逻辑:累加过程中没有增加超出阈值后的跳出判断,即使中间price_t已经大于k,也会继续跑完整个for循环。
  • 额外问题:print(count)放在while循环内部,如果出现多轮while执行的情况会重复打印输出,不符合预期。

修复后代码

first_multiple_input = input().rstrip().split()

n = int(first_multiple_input[0])
k = int(first_multiple_input[1])
prices = list(map(int, input().rstrip().split()))

prices = sorted(prices)
price_t = 0
count = 0

for price in prices:
    # 累加前判断是否会超过阈值,避免超阈值后还执行累加操作
    if price_t + price <= k:
        price_t += price
        count +=1
    else:
        # 超出阈值直接跳出,无需遍历后续更大的价格
        break

print(count)

测试用例验证

测试输入:

7 50
1 12 5 111 200 1000 10

排序后价格为[1,5,10,12,111,200,1000],累加前4个总和为28 ≤50,加第5个111后总和为139>50,最终输出为4,符合预期。

内容的提问来源于stack exchange,提问作者Zhengxi Jiang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:36:03