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

我这个思路有问题吗?为什么会多1 呢?

sum = 0

x = 1

n = 1

while True:

    x = x * 2

    sum = x

    if x > 2**19:

       break

print sum


正在回答

3 回答

 if x > 2**19: 不知道你这行是什么意思哦

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

朋友你好,你这个算法得出来的是2的20次方,你的while块只用上了x=x*2,sum并没有用上。我猜测,你是想用等比数列的算法来计算该题吧。那你可以尝试这段代码

a=1

q=2

def f(x):

    return a*(1-q**x)/(1-2)

print(f(20))

如果根据题目要求的话,那就老老实实一个一个加呗

sum = 0

x = 1

n = 1

while True:

    sum=sum+x

    x=x+x

    n=n+1

    if n>20:

        break

print(sum)

,注意sum很重要哦

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

小烽工作室3358476

你不觉得,应该把判断n的大小,写在最前面吗?要不然,容易出错,判断条件不符合,立即跳出循环,这个才是正确的思路,所以,您的if n>20: break 放在最后面,是不合理的。
2018-12-20 回复 有任何疑惑可以回复我~
#2

慕函数3031282 回复 小烽工作室3358476

谢谢指导!有道理,加在前面防止出错。
2018-12-20 回复 有任何疑惑可以回复我~
#3

慕函数3031282 回复 小烽工作室3358476

我这段是将n=n+1放在了最后,所以没出错,以后会多关注此类问题的
2018-12-20 回复 有任何疑惑可以回复我~
#4

慕函数3031282 回复 小烽工作室3358476

不是啊,兄弟,这段代码怎么放都没影响啊==
2018-12-20 回复 有任何疑惑可以回复我~
#5

小烽工作室3358476

哈哈,好像是这么一回事,因为您把n=n+1放前面了,所以,你那个也是没有问题的。
2018-12-20 回复 有任何疑惑可以回复我~
查看2条回复

sum = 0

x = 1

n = 1

while True:

    if n > 20 :

        break

    sum = sum + x

    x = x * 2

    n = n + 1

print sum

这个才是正确的。

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

举报

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

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

进入课程

我这个思路有问题吗?为什么会多1 呢?

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