鱼C论坛

 找回密码
 立即注册
查看: 1974|回复: 5

[已解决]我错在哪儿了?

[复制链接]
发表于 2020-11-30 20:19:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
第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 21:34:42
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
所以形成了死循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-30 20:21:57 | 显示全部楼层
本帖最后由 昨非 于 2020-11-30 20:24 编辑

i作为循环变量
必须保证经过一次循环无论如何都要加一
而你放在if判断里,当if条件不满足时,i+1就被“跳过”了
然后i不变,死循环


而且题目要求到10000000,直循环到10是不对的



而且
sum=sum+i必须放到if条件里,不然无论就都会加到sum里
结果就错了


总之

你把你的代码改成和答案一摸一样就对了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-30 20:29:35 | 显示全部楼层
        何必那么麻烦?
i , sum = 0 , 0
while i <= 1000000:
    sum = sum + i
    i += 2
print("1000000以内所有偶数的和是",sum)
    这样写不简单吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-30 21:34:42 | 显示全部楼层    本楼为最佳答案   
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
所以形成了死循环。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-1 08:20:26 | 显示全部楼层

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+……+∞

我理解的对吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-1 10:20:37 | 显示全部楼层
阿你爸爸 发表于 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.......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 06:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表