不懂就问:python作业中的问题,帮忙看一下。
先上代码:steps = 7
i = 1
FIND = False
while i < 100:
if steps % 2 == 1 and steps % 3 == 2 and steps % 5 == 4 and steps % 6 == 5 and steps % 7 == 0:
FIND = True
break
else:
steps = 7 * ( i+ 1) # 为什么steps = steps * (i + 1)不行呢?
i = i + 1
if FIND == True:
print('阶梯数是:', steps)
else:
print('在程序限定的范围内找不到答案!')
-------------------------------------------------------------------------------------------------------------------------------------
这是11讲的动手作业,问一下代码中的问题,steps初始已经被赋值了,和 i 一样。为什么 steps = steps * (i + 1) ,不行呢? 本帖最后由 jackz007 于 2022-10-14 10:26 编辑
如果我们真的用
steps = steps * (i + 1)
来产生下一个 steps,那么,当 steps = 7,i = 1 时,下一个 steps 的值是 steps = steps * (i + 1) = 7 * 2 = 14,那么,再下一个 steps 的值是 steps = steps * (i + 1) = 14 * 3 = 42,第三个 steps = steps * (i + 1) = 42 * 4 = 168 ...于是,我们得到的 steps:7、14、42、168, 而我们需要的 steps 却是 7、14、21、28...。虽然这样得到的 steps 同样也是 7 的倍数,但是,steps 之间的间隔已经不是固定值 7 了,而且,这个间隔会越来越大,会漏掉很多的 steps,这就是问题之所在。
简单问题被复杂化了
FIND = False
for steps in range(7 , 700 , 7):
if steps % 2 == 1 and steps % 3 == 2 and steps % 5 == 4 and steps % 6 == 5:
FIND = True
break
print('阶梯数是:', steps) if FIND else print('在程序限定的范围内找不到答案!')
页:
[1]