我错在哪儿了?
第009讲:数字类型(下)| 课后测试题及答案在这一集的动手题目中,要求计算100万以内的偶数和。
参考答案给的代码如下:
i = 0
sum = 0
while i <= 1000000:
if i % 2 == 0:
sum = sum + i
i = i + 1
print("1000000 以内所有偶数的和是", sum)
完美运行。
而我写的是这样的:
i = 0
sum = 0
while i <= 10:
if i % 2 == 0:
i = i + 1
sum = sum + i
print("1000000以内所有偶数的和是",sum,end='')
F5运行之后,交互界面没有任何反应。关闭交互界面窗口的时候,提醒我有程序正在运行,是否要将它Kill掉。
讲真,参考答案我觉得我看懂了。但我自己的答案错在哪里了呢? 本帖最后由 昨非 于 2020-11-30 20:24 编辑
i作为循环变量
必须保证经过一次循环无论如何都要加一
而你放在if判断里,当if条件不满足时,i+1就被“跳过”了
然后i不变,死循环
而且题目要求到10000000,直循环到10是不对的
而且
sum=sum+i必须放到if条件里,不然无论就都会加到sum里
结果就错了
总之
你把你的代码改成和答案一摸一样就对了 何必那么麻烦?
i , sum = 0 , 0
while i <= 1000000:
sum = sum + i
i += 2
print("1000000以内所有偶数的和是",sum)
这样写不简单吗? while i <= 10:
if i % 2 == 0:
i = i + 1
while 第一次执行 i=0
if成立,i+1
while 第二次执行 i=1
if不成立,i不加1
继续循环,每次if都不成立,i始终为1
所以形成了死循环。 张晨旺 发表于 2020-11-30 21:34
while i
while第二次执行, i = 1
If不成立,i不加1
然后呢?会执行sum =sum + i 这一行吗?根据缩进来看,sum = sum + i是在while里面的,因此属于while循环的一部分,所以还是会执行一遍sunm = sunm + 1 的对吗?
因此程序的运行结果就变成了sum = 0+1+1+1+1+1+1+1+1+1+1+1+……+∞
我理解的对吗? 阿你爸爸 发表于 2020-12-1 08:20
while第二次执行, i = 1
If不成立,i不加1
恩,sum=sum+1这句不在if判断里,但是在while循环里。所以sum一直执行的是sum=sum+1.最后就是sum一直+1+1+1+1.......
页:
[1]