课程
/后端开发
/Python
/初识Python
sum = 0 x = 1 n = 1 while True: sum=sum+x x=x*2 if n>20: break n=n+1 print sum
为何这样的代码结果是错的?(好像得到的是前21项之和)
2016-02-16
源自:初识Python 5-6
正在回答
循环到n=21的时候,先执行sum=sum+x;
然后x=x*2,
再执行break循环
这样实际上sum算的是前21项之和。
所以:将if判断放到while行下面就可以了。
rick2015 提问者
sum = 0 x = 1 n = 1 while True: sum=sum+x x=x*2 n=n+1 if n>20: break print sum
谢谢答复!但是好像还是有点问题,我把if语句放在最底下是可以的(如上代码)。关键好像是在于n=n+1这个赋值是在if语句的上面(先执行)还是下面(后执行)(如下截图)。
循环代码是从上至下执行的。
你的代码问题出在求和环节,应该把
sum = sum + x
放在if语句下方。
或者把if放在开头
或者直接在while上改动条件
while n>20
原因是,在if判断循环次数前,sum的值已经发生了改变
举报
学python入门视频教程,让你快速入门并能编写简单的Python程序