请问 第十一讲的作业 爱因斯坦的数学题 我这样写有问题吗?
我是这样写的steps = 7
i = 1
FIND = False
while i < 100:
steps = 7 * i
# 请在此处填写需要满足的条件 #:
if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
FIND = True
break
else:
# 请在此处填写正确的代码 #
i += 1
steps
if FIND == True:
print('阶梯数是:', steps)
else:
print('在程序限定的范围内找不到答案!')
区别是i += 1 写到else里面了
算出来是对的
就不知道有没有什么问题 你把 `i += 1` 写到了 `else`语句 中,与代码的逻辑不符合。正确的操作应该是在每次循环结束后增加步数`steps`的计数器 `i`,即把 `i += 1` 放到 `while` 循环体中而非 `else` 语句中。
因此,正确的代码应该是这样的:
steps = 7
i = 1
FIND = False
while i < 100:
steps = 7 * i
# 请在此处填写需要满足的条件 #:
if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
FIND = True
break
else:
i += 1
if FIND == True:
print('阶梯数是:', steps)
else:
print('程序限定范围内没有找到答案!')
注意,在每次循环结束后,我们需要更新 `i += 1` 计数器的值。
有用请设置最佳答案 您的代码实现基本正确,能够解决问题。将i += 1写在else语句里没有问题,因为只有在不满足条件时才会执行i += 1 。您的代码如下:
steps = 7
i = 1
FIND = False
while i < 100:
steps = 7 * i
if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
FIND = True
break
else:
i += 1
if FIND == True:
print('阶梯数是:', steps)
else:
print('在程序限定的范围内找不到答案!')
这段代码可以正确找到满足题目条件的阶梯数。所以您的解法是正确的。在这个问题中,将i += 1放在else语句中与将其放在循环体的末尾并没有本质区别。 isdkz 发表于 2023-4-30 15:27
您的代码实现基本正确,能够解决问题。将i += 1写在else语句里没有问题,因为只有在不满足条件时才 ...
我在i += 1下面手滑打多了个 steps
我是没看懂小甲鱼的答案else下面的部分
while i < 100:
steps = 7 * i
# 因此只要同时满足除以2余1、除以3余2、除以5余4、除以6余5,就是最终的结果
if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
FIND = True
break
else:
steps = 7 * (i + 1)
i = i + 1
if FIND == True:
print('阶梯数是:', steps)
else:
print('在程序限定的范围内找不到答案!')
mumei2018 发表于 2023-4-30 15:38
我在i += 1下面手滑打多了个 steps
我是没看懂小甲鱼的答案else下面的部分
while i < 100:
抱歉,我之前没有注意到您在i += 1下面多加了一个steps 。其实,那个多余的steps对程序结果并没有影响,因为它没有实际的操作。
至于您提到的小甲鱼的答案,其实他的代码与您的代码实现思路是一样的,只是在else语句下面,他重新计算了steps = 7 * (i + 1) 。这个重新计算的steps在下一次循环的开始又会被重新赋值,所以这一步其实是多余的。
您可以忽略这个多余的步骤,直接使用您之前的代码。在这个问题中,将i += 1放在else语句中与将其放在循环体的末尾并没有本质区别。这是因为不论在哪里增加i ,都是在下一次循环的开始时重新计算steps 。您之前的代码实现是正确的,没有问题。 sfqxx 发表于 2023-4-30 15:24
你把 `i += 1` 写到了 `else`语句 中,与代码的逻辑不符合。正确的操作应该是在每次循环结束后增加步数`ste ...
谢谢 isdkz 发表于 2023-4-30 15:40
抱歉,我之前没有注意到您在i += 1下面多加了一个steps 。其实,那个多余的steps对程序结果并 ...
谢谢 sfqxx 发表于 2023-4-30 15:24
你把 `i += 1` 写到了 `else`语句 中,与代码的逻辑不符合。正确的操作应该是在每次循环结束后增加步数`ste ...
10 秒前
对不起,你在主题 请问 第十一讲的作业 爱因斯坦的数学题 我这样写有问题吗? 中的回复被 匿名 选为最差答案,鱼币-3,荣誉-2,技术值-1
{:10_256:}
10 秒前
恭喜你,你在主题 请问 第十一讲的作业 爱因斯坦的数学题 我这样写有问题吗? 中的回复被 匿名 选为最佳答案,鱼币+3,荣誉+2,技术值+1
页:
[1]