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

为什么计算出来是两倍的数

x = 1

sum = 0

n = 1

while True:

    if n > 20:

        break

    n = n + 1

    x = x * 2

    sum = sum + x

print sum


正在回答

3 回答

while True:

    sum = sum + x

    x = x * 2

    n = n + 1

    if n > 20:

        break

print sum

这个是答案代码,在n = n + 1 结果为21时,会出发if条件,结束。 不会执行最后一步的print sum

你的代码

while True:

    if n > 20:

        break

    n = n + 1

    x = x * 2

    sum = sum + x

print sum

当n = n + 1 结果为21时,还是会继续执行下边步骤,直到print sum 执行完成后,才是你的if条件,才会识别出目前是大于20了,需要停止,但是结果已经按21位数计算完的了。

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

你的代码中是先计算x = x*2后计算sum = sum + x的值,所以sum中少了第一次x = 1时的值,而多了一次x = x*2的最后一次计算,所以你的结果时答案的2倍,正确答案应该改为

n = n + 1
sum = sum + x
x = x*2


0 回复 有任何疑惑可以回复我~
参考答案的代码,在某一次运行到n = n + 1后正好n > 20,
这时答案里的代码已经全部运行了20次
而你的代码才运行到n = n + 1,下面的 x = x * 2和sum = sum + x还没有运行
参考答案:
sum = 0
x = 1
n = 1
while True:
    if n > 20:
        break
    sum = sum + x
    x = x * 2
    n = n + 1
print sum


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

子女良

收回我的回答,应该是sum = sum + x比答案多运行了一次...
2020-03-23 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

为什么计算出来是两倍的数

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