鱼C论坛

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

[已解决]循环问题

[复制链接]
发表于 2020-10-8 17:48:02 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 见招拆招小冬喜 于 2020-10-8 18:07 编辑

问题:
成功赋值flag等于1后,因为还没有出循环,i 还在不断变大,不再满足 if 条件,但else 还在执行,根据 x=7*(i+1),x也在不断变大,i=101出循环的时候,x 已经不是119了。那为什么后面 if 语句输出的时候想有记忆似的还是输出 flag=1 时的 x 值,而不是出循环的(也就是现在的)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)
    i+=1
if flag==1:
    print("楼梯阶数是:",x)
else:
    print("未在设定范围内找到答案")

输出结果:
>>>
=========================== RESTART: d:/我的文档/桌面/1.py ===========================
楼梯阶数是: 119

请各位指教~
最佳答案
2020-10-8 18:19:27
x = 7
i = 1
flag = 0
while i <= 100:
    print(i)
    print(x)
    if (x % 2 == 1) and (x % 3 == 2) and (x % 5 == 4) and (x % 6 == 5):
        flag = 1
    else:
        print('没找到x')
        x = 7 * (i + 1)
    i += 1
if flag == 1:
    print("楼梯阶数是:", x)
else:
    print("未在设定范围内找到答案")
16
112
没找到x
17
119
18
119
19
119


你可以这样打印看一下,你理解的i和x是关联的,实际是:x判断的那句判断对了之后,x就固定了,不再执行else后面的代码了,x从i=17之后开始就不再变化了,一直是119,但是i还在增加变化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-8 18:04:19 | 显示全部楼层
双等于不是……判断吗?怎么成了赋值(是我理解错了吗?)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-8 18:06:45 | 显示全部楼层
weiter 发表于 2020-10-8 18:04
双等于不是……判断吗?怎么成了赋值(是我理解错了吗?)

不是,我想表达的是flag等于1,=是赋值,==是等于。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-8 18:19:27 | 显示全部楼层    本楼为最佳答案   
x = 7
i = 1
flag = 0
while i <= 100:
    print(i)
    print(x)
    if (x % 2 == 1) and (x % 3 == 2) and (x % 5 == 4) and (x % 6 == 5):
        flag = 1
    else:
        print('没找到x')
        x = 7 * (i + 1)
    i += 1
if flag == 1:
    print("楼梯阶数是:", x)
else:
    print("未在设定范围内找到答案")
16
112
没找到x
17
119
18
119
19
119


你可以这样打印看一下,你理解的i和x是关联的,实际是:x判断的那句判断对了之后,x就固定了,不再执行else后面的代码了,x从i=17之后开始就不再变化了,一直是119,但是i还在增加变化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-8 18:25:28 | 显示全部楼层
楼上正解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-8 18:40:34 | 显示全部楼层


可以理解为:一旦满足 if 条件,就出了if的循环,不再执行if else语句,只是在单纯循环i+=1,是这样吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-8 18:43:10 | 显示全部楼层
见招拆招小冬喜 发表于 2020-10-8 18:40
可以理解为:一旦满足 if 条件,就出了if的循环,不再执行if else语句,只是在单纯循环i+=1,是这样吗 ...

不是退出,是找到了满足符合判断的x值后,每次循环x都满足这个判断,就没执行esle的代码了,而这个代码才是x变化的代码
如果按你想的那样,那应该把x变化的这个代码放在if外面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-8 18:44:26 | 显示全部楼层
疾风怪盗 发表于 2020-10-8 18:43
不是退出,是找到了满足符合判断的x值后,每次循环x都满足这个判断,就没执行esle的代码了,而这个代码才 ...

哦哦对!我明白了,谢谢老师!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 12:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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