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

不懂哪里错了,求指点

sum = 0

x = 1

n = 1

while True:

    if n>=20:

        break

    x=2**(n-1)

    sum+=x

    n+=1

print sum


正在回答

3 回答

http://img1.sycdn.imooc.com//5712483400019f6404850623.jpg并不行= -

0 回复 有任何疑惑可以回复我~
sum = 0
x = 1
n = 1
while True:
    if n>=20:    ## 这句是错误的关键,应该是 n > 20,下面有解释。
        break
    x=2**(n-1)
    sum+=x
    n+=1
print sum

## 在第二十次执行的时候, 进入循环的 第一个行为, 就是做判断 n 是否大于等于20, 成立,结果直接break
## 跳出, 也就是说少执行了一次, 得将判断语句 改成
if n>=20:
    xxxx
    

## 最后在啰嗦一句, 在 这种 while True: if condition:break 的句式中, 一定要做好边际判断, 其实凡是
## 做数字判断的时候, 我们都要当心边际判断是否准确, 否则很容易 多做或者少做依次循环。


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

首先要感谢题主,如果不是因为题主这个问题,我写的程序中的逻辑错误就会一直存在下去了。

题主这个问题主要在于if n>=20:这句。n是从1开始的,到n=20时,下面的语句就不会执行了,也就是说,sum只加到了1-19项,第20项没有加上。


修改方面,可以把if判断语句放在while循环体的最下面,或者修改一下条件为:n>20


sum=0

x=1

n=1

while True:

    if n>20:

   break

    x=2**(n-1)

#    sum+=x

    sum=sum+x

    n+=1

print sum


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

举报

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

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

进入课程

不懂哪里错了,求指点

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