eileen_李 发表于 2022-8-9 11:04:18

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

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('在程序限定的范围内找不到答案!')

eileen_李 发表于 2022-8-9 11:05:13

想计算出正确的阶梯数。

柿子饼同学 发表于 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 吧

jackz007 发表于 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('在程序限定的范围内找不到答案!')

一点点儿 发表于 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('在程序限定的范围内找不到答案!')

爱俯卧撑的123 发表于 2022-8-9 14:04:13

else:
      X=X*(i+1)
      print(X)

每次结果打印出来,你就可以发现问题所在了

eileen_李 发表于 2022-8-9 17:38:21

谢谢各位,知道原因所在了。{:5_109:}
页: [1]
查看完整版本: 求助:PythonP11课练习计算阶梯数,I为100时,找不到答案,I为100000时,没有输出.