Python结合for与while循环计算等差数列和结果异常问题
代码问题排查与修正
核心错误原因
你的求和逻辑用了错误的for-while嵌套结构,实际运行逻辑和预期的「按顺序累加序列元素、总和不超100就停止」完全不符:
- 初始
sum_arithmetic = 0,for循环第一次取到首个元素ele_f = 1时,就会进入内层while循环,反复执行sum_arithmetic += 1,直到sum值涨到100、不满足<100的判断条件才会跳出内层循环。 - 跳出内层循环时sum已经是100,后续for循环遍历剩下所有序列元素时,内层while的判断条件永远不成立,不会再执行任何累加操作,最终输出自然是错误的100。
简单说:你写的内层while是拿着第一个元素反复加凑到100,根本没有逐个遍历累加序列里的不同元素。
修正方案
不需要嵌套循环,遍历序列时每次先判断「加上当前元素后总和会不会超过100」,会超就直接终止遍历,不会超就累加即可,修正后代码如下:
# 生成等差数列部分逻辑无问题 ele = 1 diff = 3 arithmetic_sequence = [] while ele < 60: arithmetic_sequence.append(ele) ele += diff print(arithmetic_sequence) # 输出: [1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 49, 52, 55, 58] sum_arithmetic = 0 for ele_f in arithmetic_sequence: # 预判断:加当前元素超100就直接停止遍历 if sum_arithmetic + ele_f > 100: break sum_arithmetic += ele_f print(sum_arithmetic) # 输出: 92
内容的提问来源于stack exchange,提问作者Salwa Zhang
相关产品推荐
相关产品推荐

