鱼C论坛

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

[已解决]求助:PythonP11课练习计算阶梯数,I为100时,找不到答案,I为100000时,没有输出.

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

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

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

x
X = 7
i = 1
FIND = False

while i < 100000:
    if (X % 2==1) and (X % 3==2 )and (X % 5==4 )and (X% 6==5) and (X % 7==0):
        FIND = True
        break
    else:
        X=X*(i+1)
    i = i + 1

if FIND == True:
    print(X)
else:
    print('在程序限定的范围内找不到答案!')
最佳答案
2022-8-9 14:04:13
else:
        X=X*(i+1)
        print(X)

每次结果打印出来,你就可以发现问题所在了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-8-9 11:05:13 | 显示全部楼层
想计算出正确的阶梯数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-9 11:19:09 | 显示全部楼层
本帖最后由 柿子饼同学 于 2022-8-9 14:27 编辑
eileen_李 发表于 2022-8-9 11:05
想计算出正确的阶梯数。


浅谈爱因斯坦阶梯问题
https://fishc.com.cn/thread-199725-1-1.html
(出处: 鱼C论坛)
你这个应该每次 加 7 吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-9 12:06:55 | 显示全部楼层
本帖最后由 jackz007 于 2022-8-9 12:14 编辑
while i < 100000:
    if (X % 2==1) and (X % 3==2 )and (X % 5==4 )and (X% 6==5) and (X % 7==0):
. . . . . .
        X=X*(i+1)   # 问题出在这里,这一句的意图是什么?
    你得这么改:
i = 1
FIND = False

while i < 100000:
    X = 7 * i
    if (X % 2 == 1) and (X % 3 == 2 ) and (X % 5 == 4 ) and (X % 6 == 5) :
        FIND = True
        break
    i = i + 1

if FIND == True:
    print(X)
else:
    print('在程序限定的范围内找不到答案!')
     我是这么写的:
C = 0
for X in range(7 , 700000 , 7):
    if (X % 2 == 1) and (X % 3 == 2 ) and (X % 5 == 4 ) and (X % 6 == 5) :  # X 从 7 起步,以 7 为步长增加,自然就是 7 的倍数
        print('\t%d' % X , end = '') if C else print('%d' % X , end = '')
        C += 1
if C:
    print()
    print('一共找到了' , C , '个答案!')
else:
    print('在程序限定的范围内找不到答案!')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-9 13:58:43 | 显示全部楼层
本帖最后由 一点点儿 于 2022-8-9 15:38 编辑

X=X*(i+1)     这句有问题,
本意是想获得7的2倍、3倍、4倍……,
但是X=7*2=14,下一次运行 X=X*(i+1) 时 X=14*3=7*6,遗漏了X=7*3、X=7*4、X=7*5的情况

修改方法:
将X=X*(i+1)改为X=7*(i+1)就行了

如下
X = 7
i = 1
FIND = False

while i < 100000:
    if (X % 2==1) and (X % 3==2 )and (X % 5==4 )and (X% 6==5) and (X % 7==0):
        FIND = True
        break
    else:
        X=7*(i+1)
    i = i + 1

if FIND == True:
    print(X)
else:
    print('在程序限定的范围内找不到答案!')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-9 14:04:13 | 显示全部楼层    本楼为最佳答案   
else:
        X=X*(i+1)
        print(X)

每次结果打印出来,你就可以发现问题所在了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-9 17:38:21 | 显示全部楼层
谢谢各位,知道原因所在了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 04:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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