鱼C论坛

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

[已解决]第七课课后题求助!

[复制链接]
发表于 2018-3-23 18:16:19 | 显示全部楼层 |阅读模式

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

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

x

求解阶梯的那个题目!

x = 7
i = 1
flag = 0
while i <= 1000:
    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: #想问一下这里while循环的时候会判断吗,因为答案只有一个119啊,不应该还有很多吗
    print(x)
else:
    print('找不到')
最佳答案
2018-3-23 18:50:18
本帖最后由 ba21 于 2018-3-23 19:01 编辑

else: # 该处 找到 119后   x就不在递增。 所以会执行约1000个无用循环
        x = 7 *(i+1)

你上的这段代码也就是找一个119的阶梯数;优化程序不执行约1000个无用循环
if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
        flag = 1
        break

如果想找1000内的阶梯数,代码修改如下:

  1. '''
  2. 每步跨2阶,最后余一阶;每步跨3阶,最后余2阶;每步跨5阶,最后余4阶;
  3. 每步跨6阶,最后余5阶;每步跨7阶正好到阶梯顶
  4. '''
  5. i = 1
  6. while True:
  7.     x = 7 * i # 7的倍数   
  8.     if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
  9.         print(x)   
  10.     i +=1

  11.     if  x > 1000: # 1000以内的阶梯数
  12.         break

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-23 18:23:54 | 显示全部楼层
不会了,因为题目要求找到最小的好像,而且if语句满足后,不再进入else语句,x不会有新的值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2018-3-23 18:50:18 | 显示全部楼层    本楼为最佳答案   
本帖最后由 ba21 于 2018-3-23 19:01 编辑

else: # 该处 找到 119后   x就不在递增。 所以会执行约1000个无用循环
        x = 7 *(i+1)

你上的这段代码也就是找一个119的阶梯数;优化程序不执行约1000个无用循环
if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
        flag = 1
        break

如果想找1000内的阶梯数,代码修改如下:

  1. '''
  2. 每步跨2阶,最后余一阶;每步跨3阶,最后余2阶;每步跨5阶,最后余4阶;
  3. 每步跨6阶,最后余5阶;每步跨7阶正好到阶梯顶
  4. '''
  5. i = 1
  6. while True:
  7.     x = 7 * i # 7的倍数   
  8.     if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
  9.         print(x)   
  10.     i +=1

  11.     if  x > 1000: # 1000以内的阶梯数
  12.         break

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-23 20:17:02 | 显示全部楼层
不会啦,这个你用缩进来判断啊,if语句不属于while循环了已经。
把它放进去就好了,再加点条件,楼上已经演示了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-25 17:36:16 | 显示全部楼层
塔利班 发表于 2018-3-23 18:23
不会了,因为题目要求找到最小的好像,而且if语句满足后,不再进入else语句,x不会有新的值

谢谢谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-25 17:37:17 | 显示全部楼层
ba21 发表于 2018-3-23 18:50
else: # 该处 找到 119后   x就不在递增。 所以会执行约1000个无用循环
        x = 7 *(i+1)

谢谢啦;谢谢啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-25 17:41:50 | 显示全部楼层
现在明白啦,while开始循环,在没找到一个合适while中if语句的时候在运行else,运行else才会让X不断增加,终于有一点找到了符合If的那个X,但是IF语句中没法对X的值改变,只是I值在不断增加,也就是说while在不断的做无用功。I数值大于1000后退出了while。。。。。blahblah
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-9 16:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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