鱼C论坛

 找回密码
 立即注册
查看: 2727|回复: 5

[已解决]零基础入门学习python 第6讲 爱因斯坦题

[复制链接]
发表于 2017-1-3 22:01:45 | 显示全部楼层 |阅读模式

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

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

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

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

请问为什么最后只得到一个答案是 119?

i 在小于100的情况下应该会一直循环啊,为什么i=16,flag = 1的情况下会跳出循环?
最佳答案
2017-1-3 23:22:49
本帖最后由 Formula_HM 于 2017-1-3 23:26 编辑

当i == 16的时候,并没有跳出循环,你可以试着在最后加上print(i)这一个语句,发现输出了101。
事实上这个循环一共进行了100次,只不过else语句只在第16次循环的时候进入了一次,这一次对x进行了赋值119,后面的循环均没有进入else语句,因此不影响x的赋值。

我也是python初学者一起来学习、探讨吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-1-3 23:22:49 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Formula_HM 于 2017-1-3 23:26 编辑

当i == 16的时候,并没有跳出循环,你可以试着在最后加上print(i)这一个语句,发现输出了101。
事实上这个循环一共进行了100次,只不过else语句只在第16次循环的时候进入了一次,这一次对x进行了赋值119,后面的循环均没有进入else语句,因此不影响x的赋值。

我也是python初学者一起来学习、探讨吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-4 08:19:57 | 显示全部楼层
一直在循环,直到i》100
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-4 09:24:41 | 显示全部楼层
这个while后面的条件设置错了,应该设置成flag != 1,那样当找到符合条件的数的时候循环就会结束,如果像你这样,后面的i是没有意义的,因为X的值不会变了!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-4 10:45:42 | 显示全部楼层
X在得到第一个正确的数字之后x的值就不再变了。。。i一直在变
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-1-4 10:46:55 | 显示全部楼层
得到x=119之后if后面一直为true
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-24 19:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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