函数与无限循环:求0至10偶数和的while循环代码陷入死循环问题
问题分析与修复
无限循环的核心原因
你这段代码的内层while循环完全逻辑错误:
- 当传入
lex=10时,第一个内层循环while lex % 2 == 0的条件永远成立——因为lex的值自始至终没被修改过,它一直是10,永远是偶数,所以这个循环会无限执行,不停打印10,zero一直加1,外层循环的条件早晚会不满足,但内层循环根本跳不出来,直接卡死。 - 还有语法错误:
lex % 2 =! 0是错的,不等于的运算符是!=,不是=!。 - 另外你定义的
sum变量根本不存在,最后返回它会直接报错。 - 整体逻辑跑偏:你要遍历0到lex的每个数判断奇偶,但代码里一直在死磕传入的lex本身,根本没逐个遍历数字。
修复后的代码
要实现从0到lex(包含)的偶数之和,正确的while循环写法应该是这样:
def function(lex): current = 0 total = 0 while current <= lex: if current % 2 == 0: total += current current += 1 return total print(function(10)) # 输出30,0+2+4+6+8+10=30
修复说明
- 用
current变量从0开始遍历到lex,每次循环后自增1,保证能正常跳出外层循环。 - 每次判断当前
current是否为偶数,是的话加到总和total里。 - 定义了
total来存储累加的和,最后返回这个变量。
内容的提问来源于stack exchange,提问作者BroWhat
相关产品推荐
相关产品推荐

