Discuss / Python / 非常非常疑惑,请大神帮忙啊!

非常非常疑惑,请大神帮忙啊!

Topic source

n=0 m=0 while (n<=100): n=n+1 m=m+n print(m)

最后结果是5150!多出来了100,不知道哪里来的!百思不得解啊啊

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

把自己当CPU执行一遍最后的循环不就明白了?

while (n<=100): # 现在n=100是最后一次循环
    n=n+1 # n=100+1=101, 现在n=101
    m=m+n # m=m+101,最后一次加的是101

如何修改?当然是先加m再加n了:

while (n<=100):
    m=m+n
    n=n+1

结论:写程序时务必仔细考虑循环边界问题,第一次和最后一次循环的代码执行的逻辑很可能不对

懂啦,懂啦! 谢谢大神!

实际上是结果为5151,多加了101

n=0 m=0 while (n<=100): n=n+1 m=m+n print(m)

这是你的代码,从0执行到100,共101次, 第0次循环,n=0判断循环条件后,先执行n = n +1,n为1 第99次循环,n=99判断可以循环后,n = n +1,n为100 第100次循环,....,n = n+ 1,n为101

累加后,多加了101

修改后:

num = 1 sum = 0 while(num <= 100): sum = sum + num num += 1

print(sum)


  • 1

Reply