鱼C论坛

 找回密码
 立即注册
查看: 2071|回复: 7

[已解决]请问 第十一讲的作业 爱因斯坦的数学题 我这样写有问题吗?

[复制链接]
发表于 2023-4-30 15:23:02 | 显示全部楼层 |阅读模式

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

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

x
我是这样写的

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里面了
算出来是对的
就不知道有没有什么问题
最佳答案
2023-4-30 15:40:48
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 。您之前的代码实现是正确的,没有问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-30 15:24:44 | 显示全部楼层
你把 `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` 计数器的值。
有用请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-30 15:27:32 | 显示全部楼层
您的代码实现基本正确,能够解决问题。将  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  语句中与将其放在循环体的末尾并没有本质区别。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-30 15:38:30 | 显示全部楼层
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('在程序限定的范围内找不到答案!')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-30 15:40:48 | 显示全部楼层    本楼为最佳答案   
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 。您之前的代码实现是正确的,没有问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2023-4-30 15:49:59 | 显示全部楼层
sfqxx 发表于 2023-4-30 15:24
你把 `i += 1` 写到了 `else`语句 中,与代码的逻辑不符合。正确的操作应该是在每次循环结束后增加步数`ste ...

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

使用道具 举报

 楼主| 发表于 2023-4-30 15:50:46 | 显示全部楼层
isdkz 发表于 2023-4-30 15:40
抱歉,我之前没有注意到您在  i += 1  下面多加了一个  steps 。其实,那个多余的  steps  对程序结果并 ...

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

使用道具 举报

发表于 2023-4-30 16:02:50 | 显示全部楼层
sfqxx 发表于 2023-4-30 15:24
你把 `i += 1` 写到了 `else`语句 中,与代码的逻辑不符合。正确的操作应该是在每次循环结束后增加步数`ste ...

10 秒前
对不起,你在主题 请问 第十一讲的作业 爱因斯坦的数学题 我这样写有问题吗? 中的回复被 匿名 选为最差答案,鱼币-3,荣誉-2,技术值-1

10 秒前
恭喜你,你在主题 请问 第十一讲的作业 爱因斯坦的数学题 我这样写有问题吗? 中的回复被 匿名 选为最佳答案,鱼币+3,荣誉+2,技术值+1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-29 09:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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