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

关于break放置顺序的问题

为什么这样写

sum = 0

x = 1

n = 1

while True:

    

    sum = sum + x

    x = 2*x

    n +=1

    if n >20:

        break

print sum

和这样写

sum = 0

x = 1

n = 1

while True:

    if n >20:

        break

    sum = sum + x

    x = 2*x

    n +=1

    

print sum

得出的结果是一样的,第二种不应该少执行一次吗?

正在回答

2 回答

只要你的n+=1 在sum+=x 之后你的退出判断放在那执行的次数都是一样的,除非第二种把n+=1 移动到sum+=x前面

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

Jude33 提问者

明白了,只要把n+=1放在sum+=x之后,在判断语句之前,结果都是一样的,因为两种写法都是接在n+=1后,就是n自增之后两种写法都是进行判断n自增后是否大于20,而不是自增后进行累加
2017-01-22 回复 有任何疑惑可以回复我~

楼主觉得第二种写法在最后一次被break了所以觉得它少执行了一次, 其实不然, 因为在整个过程中, 第一种写法一共执行了20次, 而第二种写法执行完同样的20次后在执行第21次的时候n的值为21, 大于20被break了, 所以说它并没有少执行一次, 反而是多执行了"半次"(比第一种写法多执行了一次判断), 所以结果是一样的.

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

举报

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

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

进入课程

关于break放置顺序的问题

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