鱼C论坛

 找回密码
 立即注册
查看: 5018|回复: 6

关于求阶梯有多少阶编程不明白,求大神指点

[复制链接]
发表于 2013-9-27 11:38:45 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 翱翔飛龍 于 2013-9-27 11:49 编辑

请编程求解该阶梯至少有多少阶?
  • 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('在程序限定的范围内找不到答案!')

请问其中 flag = 0 这句是什么作用呢?else 语句为什么要 x = 7*(i+1)?
i +=1 为什么i要加1呢?
好凌乱啊,求大神为小白指点

我的思路是:设x为阶梯总长
当2阶时(x%2=1)
当3阶时(x%3=2)
当5阶时(x%5=4)
当6阶时(x%6=5)
当7阶时(x%7=0)
但这时候就不知怎么编了,555

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-27 22:14:23 | 显示全部楼层
本帖最后由 福禄娃娃 于 2013-9-28 08:25 编辑

flag相当于一个标志位,当flag=1时表明条件符合正确的台阶数。最后再根据flag的值便可以进行判断是否符合条件。
i+=1是提供循环得以进行,i初始值为1,如果i一直不发生变化,那么wihile始终为真,变成死循环了。
else 后接 x = 7*(i+1) 的意思是这个楼梯的台阶数对7取余为0,所以台阶数为7的整数倍。用于对x的自增。

这个程序只需要循环16次便可求出117了,后面的84次循环多余了。我觉得可以改进下效率:
  1. x = 7
  2. i = 1
  3. flag = 0
  4. while i <= 16:
  5.         if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
  6.                 flag = 1
  7.         else:
  8.                 x = 7 * (i+1)
  9.         i += 1
  10. if flag == 1:
  11.         print('阶梯数是:', x)
  12. else:
  13.         print('在程序限定的范围内找不到答案!')
复制代码


  1. for i in range(7, 120, 7):
  2.     if (i % 2 == 1) and (i % 3 == 2) and (i % 5 == 4) and (i % 6 == 5) and (i % 7 == 0):
  3.         print("台阶数为:", i)
复制代码

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

使用道具 举报

发表于 2013-9-28 14:32:32 | 显示全部楼层
娃娃好样的,支持你!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-28 20:52:38 | 显示全部楼层
十分感谢福禄娃娃版主的详细解答,给我这个菜鸟上了精彩的一课,虽然好像还是有点哪里有点不明白,但我会努力学习的,再次感谢福禄娃娃版主的解答!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-3 14:05:07 | 显示全部楼层
同样学到了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-4 11:26:45 | 显示全部楼层
我也好多不明白的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-20 00:43:13 | 显示全部楼层
福禄娃娃 发表于 2013-9-27 22:14
flag相当于一个标志位,当flag=1时表明条件符合正确的台阶数。最后再根据flag的值便可以进行判断是否符合条 ...

原程序循环应该为17次,阶数应为119。

另外,新程序中range()函数的结束数,我认为不能人为规定为120。最好当作未知数去对待编程解决。

我的程序如下:
x = 7
i = 1
while not(x%2 == 1 and x%3 == 2 and x%5 == 4 and x%6 == 5):
    x = 7 * i
    i += 1

print("这个阶梯数为:", x)
print('程序结束')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 12:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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