为何下述代码中的while循环无法运行?如何用while循环实现求和需求?
问题分析与解决:1000以内3或5的倍数之和(while循环死循环问题)
先看你给出的原代码:
a = 0 suma = 0 while( a <= 1000): if (a%3 == 0 or a%5 == 0): suma = suma + a a = a + 1 print("The final answer is: %s " % suma)
为什么会出现死循环?
核心问题出在**a = a + 1的位置**:你把自增语句放在了if条件块里面,这意味着只有当a是3或5的倍数时,a才会加1。那当a不是3/5的倍数时(比如a=1、2、4、7...),这个自增代码根本不会执行,a的值就一直停在当前数,while(a <=1000)的条件永远为真,循环就会无限跑下去,自然没有输出。
修正后的while循环实现
只需要把a = a + 1移到if块外面,确保不管a是否满足条件,每次循环都让a自增,就能跳出循环了:
a = 0 suma = 0 while a <= 1000: # Python里while的括号可以省略,更符合PEP8规范 if a % 3 == 0 or a % 5 == 0: suma += a # 用+=简化赋值,更简洁 a += 1 # 把自增移到这里,保证每次循环都执行 print("The final answer is: %s " % suma)
这样运行就能得到正确结果啦~另外也可以小优化一下,比如从a=3开始初始化,减少几次无意义的循环,但上面的代码已经完全能解决你的需求。
内容的提问来源于stack exchange,提问作者dheeraj devaraj
相关产品推荐
相关产品推荐

