鱼C论坛

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

新手求助!第六讲,课后作业。

[复制链接]
发表于 2022-3-4 20:05:32 | 显示全部楼层 |阅读模式

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

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

x
不太明白示例中为什么满足第一个if条件flag=1后,while循环中止了?
2. 题目:请编程求解该阶梯至少有多少阶?
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('在程序限定的范围内找不到答案!')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-3-4 20:07:09 | 显示全部楼层
自己编写的代码和显示结果如下:
x = 7
i = 1
while i <= 100:
    if (x%2==1) and (x%3==2) and (x%5==4) and (x%6==5):
        print('这个数是:',x)
        print('倍数为:',i)
    i+=1
    x=7*i

显示结果:
这个数是: 119
倍数为: 17
这个数是: 329
倍数为: 47
这个数是: 539
倍数为: 77
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-4 20:08:55 | 显示全部楼层
里面并没有终止呀,都是到最后统一进行判断是否找到答案的!
想终止可以加 break ,都一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-4 20:11:18 | 显示全部楼层
67193114 发表于 2022-3-4 20:07
自己编写的代码和显示结果如下:
x = 7
i = 1

想只找到一个的话可以这样:
x = 7
i = 1
while i <= 100:
    if (x%2==1) and (x%3==2) and (x%5==4) and (x%6==5):
        print('这个数是:',x)
        print('倍数为:',i)
        break
    i+=1
    x=7*i
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-4 20:12:21 | 显示全部楼层
67193114 发表于 2022-3-4 20:07
自己编写的代码和显示结果如下:
x = 7
i = 1

想要只找到一个就终止的话可以这样:
x = 7
i = 1
while i <= 100:
    if (x%2==1) and (x%3==2) and (x%5==4) and (x%6==5):
        print('这个数是:',x)
        print('倍数为:',i)
        break
    i+=1
    x=7*i
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-4 20:15:01 | 显示全部楼层
本帖最后由 isdkz 于 2022-3-4 20:16 编辑
67193114 发表于 2022-3-4 20:07
自己编写的代码和显示结果如下:
x = 7
i = 1


实例里面的并没有终止,他只是因为满足一旦满足 if 条件后,

它就不会再进入 else 里面改变 x 的值,所以一直在 if 里面对 flag 赋值 1,

他那样子只能获取到 一个最小的满足条件的值,

你在示例代码中加个打印就知道循环并没有终止了。
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):
        print('in if')
        flag = 1
    else:
        x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
        print('in else')
    i += 1

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

你的代码就可以获取到多个满足条件的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-4 20:21:12 | 显示全部楼层
自己想明白了,还是谢谢了!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-4 20:32:28 | 显示全部楼层
isdkz 发表于 2022-3-4 20:15
实例里面的并没有终止,他只是因为满足一旦满足 if 条件后,

它就不会再进入 else 里面改变 x 的值 ...

是的是的,正如您说的。自己也刚刚看明白!十分感谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-4 20:34:09 | 显示全部楼层
python爱好者. 发表于 2022-3-4 20:08
里面并没有终止呀,都是到最后统一进行判断是否找到答案的!
想终止可以加 break ,都一样的

嗯嗯,是的!小白一枚,刚开始学。多谢!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-4 22:25:03 | 显示全部楼层
while并没有终止,只是满足了if语句以后,else就没有进去过了,所以x的值就没有变化了,但i的值一直在逐次加1到i是101的时候才跳出去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-5 10:51:02 | 显示全部楼层
YSW9527 发表于 2022-3-4 22:25
while并没有终止,只是满足了if语句以后,else就没有进去过了,所以x的值就没有变化了,但i的值一直在逐次 ...

是的是的,多谢指教!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-6 12:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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