鱼C论坛

 找回密码
 立即注册
查看: 1034|回复: 12

[已解决]006课后作业爱因斯坦求阶梯数量这道题看不明白,求大牛指点一下。

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

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

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

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

#爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
#答案是119

我想请问这段代码开头  x=7 i=1 flag=0怎么理解,还有 while i <= 100:  为什么i要定义在100以内,i是什么含义 。if flag == 1时打印阶梯数量,不应该是0吗? 后面对i一直在进行+1操作,那刚开始对i=1的定义是什么意思呀。新人完全不能理解,求大牛解释一下,谢谢谢谢
最佳答案
2020-5-23 17:53:52
x=7 i=1 flag=0怎么理解
设个初始值,防止报 NameError
为什么i要定义在100以内,i是什么含义
你愿意定义在10000000以内也一样,能找到答案就行。i 是变量。
if flag == 1时打印阶梯数量,不应该是0吗
0是没找到
后面对i一直在进行+1操作,那刚开始对i=1的定义是什么意思呀。
我不知道你想问什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-23 17:12:58 From FishC Mobile | 显示全部楼层
while  i<100   是因为作者知道在这个范围内,可以取到答案,实际上,这个问题不止一个答案,你可以while  i<10000试一下
i=1   一个是赋初值,另一个就是让程序在7 14 21 28      里面筛选,也是为了提高效率
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-23 17:15:34 | 显示全部楼层

那flag跟x的初值赋予的意义是什么呀?赋值我好像看着乱糟糟的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 17:15:57 | 显示全部楼层
1,你搞成1000,10000都行。
2,就是一个变量,让循环可以结束。
3,flag 设置为1代表找到了答案,为0就是没有。
4,你得先定义一个东西,才能对它进行操作吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-23 17:19:05 | 显示全部楼层
qiuyouzhi 发表于 2020-5-23 17:15
1,你搞成1000,10000都行。
2,就是一个变量,让循环可以结束。
3,flag 设置为1代表找到了答案,为0就是 ...

我以为flag是往前走一步楼梯的意思,原来是True跟False的意思 你这么一说我好像有点眉目了,谢谢,我再看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 17:19:28 From FishC Mobile | 显示全部楼层
Aber 发表于 2020-5-23 17:15
那flag跟x的初值赋予的意义是什么呀?赋值我好像看着乱糟糟的

flag就是设置一个标记,程序中经常用到的一个手法,x=7不是说了吗,在7的倍数里面筛选数据,节省循环次数

这个样板代码,写的一般,如果看不懂,你可以自己尝试写一下,按照自己的思维去写,不要把思维固定在别人的脑袋里
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 17:23:14 | 显示全部楼层
Aber 发表于 2020-5-23 17:19
我以为flag是往前走一步楼梯的意思,原来是True跟False的意思 你这么一说我好像有点眉目了,谢 ...

这个flag你可以理解为一个旗子,一开始是放倒的,
如果找到答案了,就把它立起来,否则就一直放倒。
最后,判断这个旗子是否立起来,如果立起来了,就打印答案
否则就不打印。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-23 17:29:15 | 显示全部楼层
wp231957 发表于 2020-5-23 17:19
flag就是设置一个标记,程序中经常用到的一个手法,x=7不是说了吗,在7的倍数里面筛选数据,节省循环次数 ...

微信截图_20200523172634.png

这样理解正确吗?我现在纠结的不是题目,是代码的表达含义,我看的有点含糊不清,想弄清楚,麻烦您了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 17:32:00 From FishC Mobile | 显示全部楼层
Aber 发表于 2020-5-23 17:29
这样理解正确吗?我现在纠结的不是题目,是代码的表达含义,我看的有点含糊不清,想弄清楚,麻烦您了

所以说,编程应该有自己的思维
你应该考虑的是,如果是我,我应该怎么写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 17:53:52 | 显示全部楼层    本楼为最佳答案   
x=7 i=1 flag=0怎么理解
设个初始值,防止报 NameError
为什么i要定义在100以内,i是什么含义
你愿意定义在10000000以内也一样,能找到答案就行。i 是变量。
if flag == 1时打印阶梯数量,不应该是0吗
0是没找到
后面对i一直在进行+1操作,那刚开始对i=1的定义是什么意思呀。
我不知道你想问什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-23 18:15:47 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-23 17:53
设个初始值,防止报 NameError你愿意定义在10000000以内也一样,能找到答案就行。i 是变量。0是没找到我不 ...

麻烦你看看楼上我发的图,这样理解合理吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 18:18:44 | 显示全部楼层
Aber 发表于 2020-5-23 18:15
麻烦你看看楼上我发的图,这样理解合理吗

else 和 if 相反。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-23 18:19:19 | 显示全部楼层
1.i因为阶梯数肯定是7的某个整数倍,i递增用来逐个判断某个7的整数倍是否满足第一个条件

2.flag为用户自定义,用来判断此时的阶梯数是否符合所有的条件,若符合,则flag = 1.

3.关于i<=100,是设置的阶梯可能满足的范围,即阶梯数在7~700之间是否有符合所有条件,若无符合,则输出该范围找不到答案。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-21 02:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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