鱼C论坛

 找回密码
 立即注册
查看: 2324|回复: 10

[已解决]课程6的课后练习疑问

[复制链接]
发表于 2020-2-9 19:12:51 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 xinghan 于 2020-2-9 19:14 编辑

课程6的课后练习自己捣鼓了一下,越捣鼓越迷糊。。。
就是动一动手里面的第二题,最少有多少个台阶。
原来的问题答案是
x = 7
i = 1
flag = 0

while i <= 100:
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
        flag = 1
    else:
        x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
    i += 1

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

然后我捣鼓了一下变成
x = 7
i = 1
flag = 0

while i <= 30:
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
        flag = flag + 1
    else:
        x = 7 * (i+1)
    i += 1

print(flag)


为什么我的flag最后是14   ,不是应该是1 的吗 。。求解~
最佳答案
2020-2-9 21:17:21
xinghan 发表于 2020-2-9 19:56
因为以我理解的范围是i

看错了如果 x 满足条件,则一直执行 flag = flag + 1,不会对 x 进行更改(x = 7 * (i+1)),所以 flag 就一直累加,直到 i > 30。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-9 19:16:40 | 显示全部楼层
是flag=1 不是加等于1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-9 19:22:39 | 显示全部楼层
wp231957 发表于 2020-2-9 19:16
是flag=1 不是加等于1

我知道不应该加1,其实我主要想问的是,它在循环的时候为什么会在if判断错误的时候,还会继续进行循环累积加1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-9 19:25:52 From FishC Mobile | 显示全部楼层
xinghan 发表于 2020-2-9 19:22
我知道不应该加1,其实我主要想问的是,它在循环的时候为什么会在if判断错误的时候,还会继续进行循环累 ...

你打印一下,看循环里到底多少数值满足要求
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-9 19:30:58 | 显示全部楼层
xinghan 发表于 2020-2-9 19:22
我知道不应该加1,其实我主要想问的是,它在循环的时候为什么会在if判断错误的时候,还会继续进行循环累 ...

i += 1不在if的缩进内
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-9 19:37:08 | 显示全部楼层


小甲鱼的flag=1 的目的等同于  一个“触发机制”,   (flag就是旗帜,标志的意思),好让程序在算出第一个满足条件的值就不继续算下去了,至于你的  flag = flag + 1,不知道为啥哈
小甲鱼代码的意思是  让 x  以  7 的倍数变化 ,去试一试 能不能  触发  if  的  先决条件 ,然后flag=1,(相当于break)程序终止,输出结果  x
下面是我的代码

i=7
while True:
    i=i+1
    if i%7==0 and i%2==1 and i%3==2 and i%5==4 and i%6==5:
        print(i)
        break
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-9 19:47:57 | 显示全部楼层
有 14 个数满足要求,所以 flag 为 14。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-9 19:51:50 | 显示全部楼层
suda小鹿 发表于 2020-2-9 19:37
小甲鱼的flag=1 的目的等同于  一个“触发机制”,   (flag就是旗帜,标志的意思),好让程序在算出第 ...

就是闹着玩,还是谢谢回答~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-9 19:56:12 | 显示全部楼层
zltzlt 发表于 2020-2-9 19:47
有 14 个数满足要求,所以 flag 为 14。

因为以我理解的范围是i <=30里面 ,if能满足的条件不是只有1个吗,也就是(119%2 == 1) and (119%3 == 2) and (119%5 == 4) and (119%6==5)是True,其他i <=30的7的倍速应该都是False
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-9 21:17:21 | 显示全部楼层    本楼为最佳答案   
xinghan 发表于 2020-2-9 19:56
因为以我理解的范围是i

看错了如果 x 满足条件,则一直执行 flag = flag + 1,不会对 x 进行更改(x = 7 * (i+1)),所以 flag 就一直累加,直到 i > 30。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-9 21:40:17 | 显示全部楼层
zltzlt 发表于 2020-2-9 21:17
看错了如果 x 满足条件,则一直执行 flag = flag + 1,不会对 x 进行更改(x = 7 * (i+1)), ...

感谢~~理解了~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-3 18:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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