鱼C论坛

 找回密码
 立即注册
查看: 3188|回复: 4

[已解决]怎么判断出循环体?

[复制链接]
发表于 2022-12-22 02:21:36 | 显示全部楼层 |阅读模式

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

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

x
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
         #这个不是要至少算到 i>100才出循环吗?
if flag == 1:
    print('阶梯数是:', x)    #这个出来不是已经不再是flag==1当时的那个x,不理解
else:
    print('在程序限定的范围内找不到答案!')
最佳答案
2022-12-22 10:13:51
本帖最后由 jackz007 于 2022-12-22 10:21 编辑
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 不满足 if 条件的时候,才会走这里,x 的值才会变,换句话说,如果 x 的值满足了 if 条件,就不再会走 else 分支,x 的值就不会改变了。
    i += 1
        在这个 while 循环中,唯一能够改变 x 值的语句在第 5 行,而这行语句是条件执行的,就是说,只有在 x 不满足 if 条件的情况下才会执行,x 的值也才会被调整,而一旦 if 条件得到了满足,在之后的循环中,每次循环都必定走 if 分支,else 分支从此就死掉了,x 的值也就得到了固定。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-22 06:54:59 | 显示全部楼层
你的问题也有点模棱两可,我就对代码作一次解析吧
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#判断如果X确实满足条件,就将FLAG设为一,以便进行下面的打印
    else:
        x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
    i += 1
         #这个不是要至少算到 i>100才出循环吗?
if flag == 1:
    print('阶梯数是:', x)    #这个出来其实还是那个FLAG==1时的X,为什么呢?因为X的值满足第一个条件时,就不会执行else的内容,因此执行的只是FLAG=1,X的值没有改变
else:
    print('在程序限定的范围内找不到答案!')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-22 07:02:55 | 显示全部楼层
每次循环 i都+1
当循环100次也就是 i 等于 101时,不符合循环条件,退出循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-22 09:55:21 | 显示全部楼层
while i <= 100:这个是说只有i<=100才会继续循环,如果不符合这个条件就立马退出,而后面有  i += 1,每循环一次就加1,这样就不会是死循环

另外,如果这个答案对你有帮助的话,请设置“最佳答案”!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-22 10:13:51 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-12-22 10:21 编辑
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 不满足 if 条件的时候,才会走这里,x 的值才会变,换句话说,如果 x 的值满足了 if 条件,就不再会走 else 分支,x 的值就不会改变了。
    i += 1
        在这个 while 循环中,唯一能够改变 x 值的语句在第 5 行,而这行语句是条件执行的,就是说,只有在 x 不满足 if 条件的情况下才会执行,x 的值也才会被调整,而一旦 if 条件得到了满足,在之后的循环中,每次循环都必定走 if 分支,else 分支从此就死掉了,x 的值也就得到了固定。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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