为了账号安全,请及时绑定邮箱和手机立即绑定

各位大佬,这玩意还讲究顺序么?

sum=0
x=1
n=1
while True:
   x*=2
   n+=1
   sum+=x
   if n>20:
       break
print(sum)

这段代码求和出来是2097150

但是换一下顺序

sum=0
x=1
n=1
while True:
   sum+=x
   x*=2
   n+=1
   if n>20:
       break
print(sum)

结果就变成了1048575

求大佬详细解释一下啊

正在回答

4 回答

没换顺序:x*=2  n+=1  sum+=x 是先赋值给x,x计算的值为2,再运算sum的值为3;

换了顺序:sum+=x  x*=2  n+=1 是先赋值给sum,sum计算的值为2,再运算x的值为2。

0 回复 有任何疑惑可以回复我~

第一段代码中sum相当于0+2+4+...+2^19+2^20=2097150,第二段代码sum=0+1+2+4+...+2^19=1048575,所以sum和x的先后计算顺序影响了结果。不知道能不能理解?我是刚开始学,有问题多交流。

0 回复 有任何疑惑可以回复我~

先加后乘和先乘后加的结果当然不一样

0 回复 有任何疑惑可以回复我~

第一段代码与第二段代码执行次序不一样,第一段先改变x,n再计算sum,然后再判断,第二段先计算sum再改变x,n,所以第二段比第一段少执行了一次

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758620    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

各位大佬,这玩意还讲究顺序么?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信