鱼C论坛

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

第六节课后题,动动手爱因斯坦台阶,看不懂每次赋值的意思

[复制链接]
发表于 2019-9-18 09:24:07 | 显示全部楼层 |阅读模式

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

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

x
x = 7
i = 1
flag = 0 #请问为何这个赋值为零,以及他起的作用

while i <= 100:
    if (x%2 == 1) :
        flag = 1
   
    else:
        x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
    i += 1 #  这个作用是什么也不懂

if flag == 1:
    print('阶梯数是:', x)
else:
    print('在程序限定的范围内找不到答案!')
能不能给每句程序后面都给个解释,谢谢了。本人比较笨,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-9-18 09:29:17 | 显示全部楼层
flag是个标记,等于1时符合要求并输出。
i += 1 相当于 i = i+1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-18 09:39:09 | 显示全部楼层
如果没有flag = 0,你在while循环中直接给flag赋值 =1是会报错的,在循环之前要先给flag一个值不一定是0,
i += 1是i = i+1,当 i>100的时候循环结束,这里的i是为了控制循环的次数用的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2019-9-18 10:27:36 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-18 23:25:26 | 显示全部楼层
x = 7 #根据题意,台阶数为7的倍数,从1倍7开始计算
i = 1# 设置循环次数
flag = 0 #相当一个数组,符合条件的答案数值,放在flag=1里面,不符合的在flag=0

while i <= 100:#循环一百次,一百次中找出所有符合条件的数
   if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5);#%求余数,题意可知 走2剩1个,那么台阶为x的话,除以2的余数==1,and 真真为真
        flag = 1#满足上述条件,那么x已经求出来,此时flag赋值为1,
   
    else:
        x = 7 * (i+1) # 不满足情况,我们操作7的倍数,开始已经数7.i=1,下次尝试7*2=14,用14来测试是否满足条件
    i += 1 #  上面已经x已经赋值为14进入循环了,无论14是否满足条件,我们循环需要尝试100次,下次应该用7*3=21来进行尝试了,i就应该加1

if flag == 1:
    print('阶梯数是:', x)#上面已经知道,计算到符合条件的x,flag就=1,执行print,打印出这个x,
else:
    print('在程序限定的范围内找不到答案!')#else情况就是flag!=1,也就是初始的赋值flag=0,说明在100次循环计算中,找不到满足条件的x,也就是找不到答案啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-19 22:14:43 | 显示全部楼层
本帖最后由 XiaoPaiShen 于 2019-9-19 22:30 编辑

这道题的思路如下:

1. 因为台阶数是7的倍数,所以循环从7开始,每次循环给 x 加7,直到 x 满足其他所有条件,或者循环次数达到100次,停止循环。
2. x 表示台阶数,i 表示循环次数,flag=0 是初始值,表示还没找到。当找到满足条件的台阶数时,把flag的值设为1
3. 当找到符合条件的台阶数时,把flag的值设为1,然后应该退出while循环,因为即使继续向后循环,每次if 条件都会为真,x 的值不会再改变,直到循环次数达到100为止。

  1. x = 7
  2. i = 1
  3. flag = 0

  4. while i <= 100:
  5.     if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):        # 要满足所有条件,不仅仅是(x%2==1)
  6.         flag = 1
  7.         break                # 这里应该退出循环
  8.     else:
  9.         x = 7 * (i+1)         # 根据题意,x一定是7的整数倍,所以每次乘以7
  10.         
  11.     i += 1                        # 每次循环,都会将 i 的值加1(i = i + 1)
  12.    
  13. if flag == 1:
  14.     print('阶梯数是:', x)
  15. else:
  16.     print('在程序限定的范围内找不到答案!')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-19 10:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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