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

Python代码运行卡顿无响应,如何排查并修复?

问题排查与修复

核心问题:多处死循环 + 变量引用错误

你的代码卡顿无响应是因为存在3处死循环,同时还有变量引用逻辑错误,逐一拆解修复:

1. isPrime函数的双重错误

  • 函数接收参数y,但内部却误用未定义的全局变量number,完全偏离素数判断逻辑,应该用参数y作为判断对象。
  • i = i + 1写在while循环外部,导致循环内i始终为初始值2,无法递增,直接陷入死循环。

修复后的isPrime:

def isPrime(y):
    if y <= 1:
        return False
    i = 2
    while i < y:  
        if y % i == 0: 
           return False
        i = i + 1  # 将递增操作移到循环内部
    return True

2. printNum函数的死循环

k = k + 1同样在while循环外部,k永远停留在初始值2,无法推进循环,导致while k <= x无限执行。

修复后的printNum:

def printNum(x):
    k = 2  
    while k <= x:
        if isPrime(k):
            primeNum.append(k)
        k = k + 1  # 移到循环内部实现变量递增

3. 求和循环的死循环

j = j + 1放置在while循环外,j始终为0,永远满足j < numOfPrime的条件,陷入无限循环。

修复后的求和部分:

j = 0
while j < numOfPrime:
    sum_total += primeNum[j]
    j = j + 1  # 移到循环内部推进计数

4. 补充:定义number变量

原代码中printNum(number)的number未定义,需要在调用前添加具体数值,例如:

number = 10  # 可自行修改目标数值

完整修复后的代码

primeNum = []

def isPrime(y):
    if y <= 1:
        return False
    i = 2
    while i < y:  
        if y % i == 0: 
           return False
        i = i + 1
    return True

def printNum(x):
    k = 2  
    while k <= x:
        if isPrime(k):
            primeNum.append(k)
        k = k + 1        

number = 10  # 定义目标数值
printNum(number)

numOfPrime = len(primeNum)
sum_total = 0  # 避免使用内置函数名sum作为变量

j = 0
while j < numOfPrime:
    sum_total += primeNum[j]
    j = j + 1  

print(sum_total)

额外优化:避免用sum作为变量名,它是Python内置函数,容易引发命名冲突,改用sum_total更安全。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 14:54:23