鱼C论坛

 找回密码
 立即注册
查看: 2993|回复: 7

[已解决]小甲魚第11課作業求教

[复制链接]
发表于 2022-12-12 11:55:39 | 显示全部楼层 |阅读模式

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

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

x
steps = 7 #步數為7的倍數
i = 1 #i到底是什麼呢?
FIND = False #為什麼要用ture or false??

while i < 100:
    if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
        FIND = True
        break
    else:
        steps = 7 * (i + 1)
    i = i + 1

if FIND == True:
    print('阶梯数是:', steps)
else:
    print('在程序限定的范围内找不到答案!')

各位朋友
可能到第11講都未正式學到while函數
不明白這個代碼的思路是什麼
為什麼i / step / find 要三個一起用上呢??
最佳答案
2022-12-12 15:42:54
網絡奇人怪小四 发表于 2022-12-12 12:15
然後我自已做了這個為什麼跑不起來


1. 第二行steps = 7*(i+1),这一句将会执行 steps = 7*(0+1) = 7,此时 steps 的值已经是7,不需要执行steps = int(steps)

2. 此时 steps 是 7,如果你想让 steps 一直增加,则 while 的条件 steps >= 0 将会一直被满足,而 while 循环中又没有 break 语句,所以这个循环永远不会结束,需要在 print 那一行的后面加上一句 break

3. 尽管 while 循环中有 i=i+1 这一条语句,但是 steps 并没有被重新赋值,所以 steps 的值将一直是 7,因此需要在 i=i+1 后面加上一行 steps =7*(i+1)

最终结果:
i = 0
steps = 7*(i+1)

while True:
    if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
        print("階梯數是",step)
        break
    else:
        i=i+1
        steps = 7*(i+1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-12-12 12:15:11 | 显示全部楼层
i = 0
steps = 7*(i+1)
steps = int(steps)

while steps >=0:
        if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
                print("階梯數是",step)
        else:
                i=i+1

然後我自已做了這個為什麼跑不起來
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-12 12:31:00 | 显示全部楼层
i = 0
steps = 7*(i+1)   #实际上steps = 7
steps = int(steps)   #实际上steps = 7
#上面这些语句在循环体之外,执行一次就不会再执行了
#下面是循环内的语句,如果条件成立就会一直执行,steps = 7 >= 0: 是成立的,但是循环内没有改变 steps值的语句,所以steps的值一直为7。
while steps >=0:
        if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
                print("階梯數是",step)
        else:
                i=i+1    #你改变 i 的值并不会返回去执行 steps = 7*(i+1) ,这个语句在循环外,执行一次就结束了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-12 15:42:54 | 显示全部楼层    本楼为最佳答案   
網絡奇人怪小四 发表于 2022-12-12 12:15
然後我自已做了這個為什麼跑不起來


1. 第二行steps = 7*(i+1),这一句将会执行 steps = 7*(0+1) = 7,此时 steps 的值已经是7,不需要执行steps = int(steps)

2. 此时 steps 是 7,如果你想让 steps 一直增加,则 while 的条件 steps >= 0 将会一直被满足,而 while 循环中又没有 break 语句,所以这个循环永远不会结束,需要在 print 那一行的后面加上一句 break

3. 尽管 while 循环中有 i=i+1 这一条语句,但是 steps 并没有被重新赋值,所以 steps 的值将一直是 7,因此需要在 i=i+1 后面加上一行 steps =7*(i+1)

最终结果:
i = 0
steps = 7*(i+1)

while True:
    if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
        print("階梯數是",step)
        break
    else:
        i=i+1
        steps = 7*(i+1)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-12 19:53:13 | 显示全部楼层
如果问题已被解决,请楼主不要忘记设置最佳答案,比如4楼的,他的回答就很好,成功抢在我前面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-13 10:12:00 | 显示全部楼层
steps = 7 #步數為7的倍數
i = 1 #你可以这么理解i是一个玻璃容器,只不过贴了个标签名叫i,立面放了数字1进去
FIND = False #find是标记,判断是否找到某个事物的标记

while i < 100:
    if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
        FIND = True
        break
    else:
        steps = 7 * (i + 1)
    i = i + 1

if FIND == True:
    print('阶梯数是:', steps)
else:
    print('在程序限定的范围内找不到答案!')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-13 18:30:01 | 显示全部楼层
编程追风梦 发表于 2022-12-12 19:53
如果问题已被解决,请楼主不要忘记设置最佳答案,比如4楼的,他的回答就很好,成功抢在我前面

很清楚, 跑起來了,謝謝
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-12-13 18:31:51 | 显示全部楼层
tommyyu 发表于 2022-12-12 15:42
1. 第二行steps = 7*(i+1),这一句将会执行 steps = 7*(0+1) = 7,此时 steps 的值已经是7,不需要执行 ...

很清楚, 跑起來了,謝謝
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 21:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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