鱼C论坛

 找回密码
 立即注册
查看: 177|回复: 14

[已解决]第11讲课后习题

[复制链接]
发表于 2024-8-1 18:04:49 | 显示全部楼层 |阅读模式

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

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

x
大家好,关于下面的这个问题,我自己写了代码,但是运行的时候得不到结果,有没有大神可以帮忙解答一下原因?写的非常简略(勿喷谢谢)
有一个长阶梯,若每步上 2 阶,最后剩 1 阶;若每步上 3 阶,最后剩 2 阶;若每步上 5 阶,最后剩 4 阶;若每步上 6 阶,最后剩 5 阶;只有每步上 7 阶,最后刚好一阶也不剩。求解该阶梯的最终数量?
step = 7
i = 1
while step >= 7:
    if step % 7 == 0 and step % 6 == 5 and \
       step % 5 == 4 and step % 3 == 2 and \
       step % 2 == 1:
        print(step)
        break
    else:
        i = i + 1
        step = step * i


最佳答案
2024-8-1 18:14:15
最后一行代码有问题,你 step = step * i  下次循环开始都是用上个循环 step * i 后的值了,而不是以 7 的倍数增加

比如第一次循环: i = 2  step = 7 * 2 = 14 ,此时你将 step = 14 了

那么第二次循环: i = 3  step = 14 * 3 = 42  中间都跳过其它 7 的倍数了

所以这个数增长的非常快,越往后,漏 7 的倍数越多,所以你应该将最后一行代码修改成 step = i * 7 即可
step = 7
i = 1
while step >= 7:
    if step % 7 == 0 and step % 6 == 5 and \
       step % 5 == 4 and step % 3 == 2 and \
       step % 2 == 1:
        print(step)
        break
    else:
        i = i + 1
        step = i * 7
1722506491499.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-8-1 18:14:14 | 显示全部楼层
球最佳~
step = 7
i = 1
while step >= 7:
    if step % 6 == 5 and (step % 5 == 4) and (step % 3 == 2) and (step % 2 == 1):
        print(step)
        break
    else:
        i += 1
        step = 7 * i
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2024-8-1 18:14:15 | 显示全部楼层    本楼为最佳答案   
最后一行代码有问题,你 step = step * i  下次循环开始都是用上个循环 step * i 后的值了,而不是以 7 的倍数增加

比如第一次循环: i = 2  step = 7 * 2 = 14 ,此时你将 step = 14 了

那么第二次循环: i = 3  step = 14 * 3 = 42  中间都跳过其它 7 的倍数了

所以这个数增长的非常快,越往后,漏 7 的倍数越多,所以你应该将最后一行代码修改成 step = i * 7 即可
step = 7
i = 1
while step >= 7:
    if step % 7 == 0 and step % 6 == 5 and \
       step % 5 == 4 and step % 3 == 2 and \
       step % 2 == 1:
        print(step)
        break
    else:
        i = i + 1
        step = i * 7
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-1 18:14:59 | 显示全部楼层
Twilight6 发表于 2024-8-1 18:14
最后一行代码有问题,你 step = step * i  下次循环开始都是用上个循环 step * i 后的值了,而不是以 7 的 ...

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

使用道具 举报

发表于 2024-8-1 18:15:59 From FishC Mobile | 显示全部楼层
这个问题不需要那么麻烦,这就是一个穷举的问题,不需要那个什么step变量
直接就无限自增1   直到找到第一个数据为止
那个else语句也没必要存在
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-1 18:16:09 | 显示全部楼层
另外没必要判断step % 7 == 0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-1 18:28:49 | 显示全部楼层
wp231957 发表于 2024-8-1 18:15
这个问题不需要那么麻烦,这就是一个穷举的问题,不需要那个什么step变量
直接就无限自增1   直到找到第一 ...

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

使用道具 举报

发表于 2024-8-1 18:36:36 From FishC Mobile | 显示全部楼层
某一个“天” 发表于 2024-8-1 18:28
效率

现在的电脑运行1000次和7000次,肉眼能感觉到吗,这个题目小甲鱼大概率是针对新手村的,对于新手来说要考虑语法还要考虑算法,有些头大
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-1 18:37:12 | 显示全部楼层
wp231957 发表于 2024-8-1 18:36
现在的电脑运行1000次和7000次,肉眼能感觉到吗,这个题目小甲鱼大概率是针对新手村的,对于新手来说要考 ...

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

使用道具 举报

发表于 2024-8-1 18:55:33 From FishC Mobile | 显示全部楼层
某一个“天” 发表于 2024-8-1 18:37

这题用数学算法算不算有效代码
根据23456的余数可知,此数等于60的倍数减1
所以我们在循环中判断60*x-1是否模7等于0
就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-1 19:07:09 | 显示全部楼层
建议画流程图,把编程问题想成数学问题,再将数学思路转化成python代码。
我是这么做的,代码ta们都替我打了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-1 19:08:23 | 显示全部楼层
这种题个人认为用数学方法还是蛮不错的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-1 20:33:36 | 显示全部楼层

哈哈~ 还是你手速快吼~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-1 21:55:55 | 显示全部楼层
我的评价是:
一个数,除以2余1,除以3余2,除以5余4,除以6余5,被7整除
简单的小学奥数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-8-2 00:33:38 | 显示全部楼层
sh-5.2$ cat main.py
#!/usr/bin/env python
#coding=utf-8

from itertools import count

for i in count(1):
    if i % 2 != 1: continue
    if i % 3 != 2: continue
    if i % 5 != 4: continue
    if i % 6 != 5: continue
    if i % 7 != 0: continue
    print(i)
    break
sh-5.2$ ./main.py
119
sh-5.2$
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 00:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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