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
相关产品推荐
相关产品推荐

