鱼C论坛

 找回密码
 立即注册
查看: 1428|回复: 11

大佬救救我

[复制链接]
发表于 2020-7-8 11:13:12 | 显示全部楼层 |阅读模式

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

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

x
if与else难道不是代表条件的选择吗,为什么python3的短路逻辑的作业里边的动动手会是如下情况:
if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
        FIND = True
        break
    else:
        steps = 7 * (i + 1)
以下代码为什么可以同时满足“若每步上 2 阶,最后剩 1 阶;若每步上 3 阶,最后剩 2 阶;若每步上 5 阶,最后剩 4 阶;若每步上 6 阶,最后剩 5 阶;只有每步上 7 阶,最后刚好一阶也不剩。”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-8 11:17:46 | 显示全部楼层

你缩进错了, if 和 else 要同缩进下

而且 if-else 代表 如果条件成立执行 if 下面的代码块,否则执行 else 的代码块

而为什么能满足呢?因为 % 是求余运算符呀:

if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):

这边的条件就是符合题意的 若每步上 2 阶,最后剩 1 阶若每步上 3 阶,最后剩 2 阶若每步上 5 阶,最后剩 4 阶若每步上 6 阶,最后剩 5 阶

而 只有每步上 7 阶,最后刚好一阶也不剩。因为你初始值的 steps 一开始就设置为 7 了 然后每次跨步子都是 +7 进行跨的,所以始终会符合这个题意,if 条件里就不用加上 steps % 7 == 0



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

使用道具 举报

发表于 2020-7-8 11:18:31 | 显示全部楼层
“若每步上 2 阶,最后剩 1 阶;若每步上 3 阶,最后剩 2 阶;若每步上 5 阶,最后剩 4 阶;若每步上 6 阶,最后剩 5 阶;只有每步上 7 阶,最后刚好一阶也不剩。”  

等同于 if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5)  

加上else的 steps = 7 * (i + 1),也就是7的倍数。

if里的条件不就简单的, if (steps % 2 == 1)  等同于 若每步上 2 阶,最后剩 1 阶;,后面类推就好。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-8 13:47:49 | 显示全部楼层
steps = 7 * (i + 1)     一直是7的倍数  所以一直满足可以不写了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-9 10:34:01 | 显示全部楼层
Twilight6 发表于 2020-7-8 11:17
你缩进错了, if 和 else 要同缩进下

而且 if-else 代表 如果条件成立执行 if 下面的代码块,否则执行 ...

所以说:steps = 7*(i + 1)是可以不用写吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-9 10:34:52 | 显示全部楼层
YYF有点骚 发表于 2020-7-9 10:34
所以说:steps = 7*(i + 1)是可以不用写吗

这个不行哈,这个代码就是为了保证符合 steps % 7 == 0 这个条件的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-10 10:22:45 | 显示全部楼层
Twilight6 发表于 2020-7-9 10:34
这个不行哈,这个代码就是为了保证符合 steps % 7 == 0 这个条件的

我有点晕,既然这个代码保证 steps % 7==0的话,那么必须台阶数不符合第一个if,这样的话不就又不符合题意了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-10 10:26:26 | 显示全部楼层
YYF有点骚 发表于 2020-7-10 10:22
我有点晕,既然这个代码保证 steps % 7==0的话,那么必须台阶数不符合第一个if,这样的话不就又 ...



不会啊,这几个条件都要成立啊

你不会认为台阶数 steps % 7==0 为 7 的倍数 就导致第一个条件不成立了?

你试试 119 ,这个就是爱因斯坦阶梯,满足以上所有条件


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

使用道具 举报

 楼主| 发表于 2020-7-10 10:43:58 | 显示全部楼层
Twilight6 发表于 2020-7-10 10:26
不会啊,这几个条件都要成立啊

你不会认为台阶数 steps % 7==0 为 7 的倍数 就导致第一个条件不成 ...

我的意思是如果满足了第一个if,程序岂不是结束循环不经过else了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-10 10:45:04 | 显示全部楼层
YYF有点骚 发表于 2020-7-10 10:43
我的意思是如果满足了第一个if,程序岂不是结束循环不经过else了吗

你这里 if 里面设置了 break ,就是只找到一个就退出循环了,根本不会有下次循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-14 11:09:17 | 显示全部楼层
Twilight6 发表于 2020-7-10 10:45
你这里 if 里面设置了 break ,就是只找到一个就退出循环了,根本不会有下次循环

我发现我哪里不懂了:steps = 7*(i + 1)代表了什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-14 11:10:43 | 显示全部楼层
YYF有点骚 发表于 2020-7-14 11:09
我发现我哪里不懂了:steps = 7*(i + 1)代表了什么

代表了每次循环阶梯数 +7 ,因为我们从题目中可以看出阶梯数一定要满足被 7 整除,所以我们设置 7 的倍数就一定会被 7 整除
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-11 12:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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