大佬救救我
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 阶,最后刚好一阶也不剩。”
你缩进错了, 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
“若每步上 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 阶;,后面类推就好。 steps = 7 * (i + 1) 一直是7的倍数所以一直满足可以不写了 Twilight6 发表于 2020-7-8 11:17
你缩进错了, if 和 else 要同缩进下
而且 if-else 代表 如果条件成立执行 if 下面的代码块,否则执行 ...
所以说:steps = 7*(i + 1)是可以不用写吗 YYF有点骚 发表于 2020-7-9 10:34
所以说:steps = 7*(i + 1)是可以不用写吗
这个不行哈,这个代码就是为了保证符合 steps % 7 == 0 这个条件的 Twilight6 发表于 2020-7-9 10:34
这个不行哈,这个代码就是为了保证符合 steps % 7 == 0 这个条件的
我有点晕{:5_107:},既然这个代码保证 steps % 7==0的话,那么必须台阶数不符合第一个if,这样的话不就又不符合题意了吗{:5_96:} YYF有点骚 发表于 2020-7-10 10:22
我有点晕,既然这个代码保证 steps % 7==0的话,那么必须台阶数不符合第一个if,这样的话不就又 ...
不会啊,这几个条件都要成立啊
你不会认为台阶数 steps % 7==0 为 7 的倍数 就导致第一个条件不成立了?
你试试 119 ,这个就是爱因斯坦阶梯,满足以上所有条件
Twilight6 发表于 2020-7-10 10:26
不会啊,这几个条件都要成立啊
你不会认为台阶数 steps % 7==0 为 7 的倍数 就导致第一个条件不成 ...
我的意思是如果满足了第一个if,程序岂不是结束循环不经过else了吗 YYF有点骚 发表于 2020-7-10 10:43
我的意思是如果满足了第一个if,程序岂不是结束循环不经过else了吗
你这里 if 里面设置了 break ,就是只找到一个就退出循环了,根本不会有下次循环 Twilight6 发表于 2020-7-10 10:45
你这里 if 里面设置了 break ,就是只找到一个就退出循环了,根本不会有下次循环
我发现我哪里不懂了:steps = 7*(i + 1)代表了什么 YYF有点骚 发表于 2020-7-14 11:09
我发现我哪里不懂了:steps = 7*(i + 1)代表了什么
代表了每次循环阶梯数 +7 ,因为我们从题目中可以看出阶梯数一定要满足被 7 整除,所以我们设置 7 的倍数就一定会被 7 整除
页:
[1]