鱼C论坛

 找回密码
 立即注册
查看: 911|回复: 8

[已解决]关于第六讲的课后练习爱因斯坦的难题

[复制链接]
发表于 2020-5-6 22:17:41 | 显示全部楼层 |阅读模式

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

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

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('在程序限定的范围内找不到答案!')


大家可以给我解释一下这个是什么意思嘛?为什么要设定i?flag又是什么东西呢?为什么不能是简单的:a%2==1,然后直接打印a?
最佳答案
2020-5-7 09:44:17
本帖最后由 sunrise085 于 2020-5-7 09:45 编辑

i和flag都可以不要
i只是为了每次房间直接将x加7
flag是个标记,一旦标记flag为1说明找到了,若循环结束后都没有找到,你们flag会一直为0,在循环外就会执行else语句
完全可以不进行标记,找到后就直接输出。

去掉i和flag的程序如下
x = 7
while x <= 700:
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
        print('阶梯数是:', x)
        break
    x += 7 # 根据题意,x一定是7的整数倍,所以每次加7
else:
    print('在程序限定的范围内找不到答案!')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-6 22:23:06 | 显示全部楼层
如果有原题目就更好了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-6 22:56:56 | 显示全部楼层
我不知道怎样添加
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-6 23:01:06 | 显示全部楼层
flag就是一个过渡,=0说明没有符合条件的值。等于1说明找到了一个值,后面才会输出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-6 23:46:10 | 显示全部楼层
首先说i,i在这里只是起到一个辅助作用,意在帮助你理解这个循环是怎么进行的,不是必须的,你直接将x作为循环变量进行循环也是可行的。
给你个范例:
x = 7
flag = 0
while x <= 700:
        if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
                flag = 1
                break
        x += 7
       

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

然后是flag,这是一个标志,初始值为0,循环中一旦出现满足条件的数flag就会变为1,因此循环结束后只需观察flag的值即可判断是否有符合条件的数。并且根据这个判断结果写出不同情况下的输出语句
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-7 09:44:17 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-5-7 09:45 编辑

i和flag都可以不要
i只是为了每次房间直接将x加7
flag是个标记,一旦标记flag为1说明找到了,若循环结束后都没有找到,你们flag会一直为0,在循环外就会执行else语句
完全可以不进行标记,找到后就直接输出。

去掉i和flag的程序如下
x = 7
while x <= 700:
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
        print('阶梯数是:', x)
        break
    x += 7 # 根据题意,x一定是7的整数倍,所以每次加7
else:
    print('在程序限定的范围内找不到答案!')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-9 17:08:15 | 显示全部楼层
sunrise085 发表于 2020-5-7 09:44
i和flag都可以不要
i只是为了每次房间直接将x加7
flag是个标记,一旦标记flag为1说明找到了,若循环结束 ...

那while X<=700,700这个数字又是怎么来的呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-9 17:22:00 | 显示全部楼层

是根据你的程序中i<=100来的啊。
这不就是你要查找的范围么~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-9 17:24:54 | 显示全部楼层
sunrise085 发表于 2020-5-9 17:22
是根据你的程序中i

我刚自己写了一下,明白了这个给出的范围。意思就是这个范围是自己定的。
谢谢哈!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-27 06:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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