ssdts 发表于 2021-5-26 20:11:50

新版Python第011讲短路逻辑和运算符优先级

steps = 7
i = 1
FIND = False

while i < 100:
    if # 请在此处填写需要满足的条件 #:
      FIND = True
      break
    else:
      # 请在此处填写正确的代码 #
    i = i + 1

if FIND == True:
    print('阶梯数是:', steps)
else:
    print('在程序限定的范围内找不到答案!')


完全不懂在说什么,涉及数学问题不会。
求哪位鱼友讲解一下,谢谢~

fish_nian 发表于 2021-5-26 20:35:34

爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
x = 7
i = 1
flag = False

while i <= 100:
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
      flag = True
    else:
      x = 7 * (i+1)
    i += 1

if flag == True:
    print('阶梯数是:', x)
else:
    print('在程序限定的范围内找不到答案!')

fish_nian 发表于 2021-5-26 20:38:29

这就是满足除7余数为0,那么就是7的倍数,那么第一个7 * 1不满足就继续乘以更高7的倍数,当满足第一个if判断后就将flag变成True结束循环输出

Twilight6 发表于 2021-5-26 23:38:38



这就是相当于填空题,甲鱼哥题目中把条件写的很清楚了,你只需要将代码中注释部分改为甲鱼哥题目中的条件即可

有一个长阶梯,若每步上 2 阶,最后剩 1 阶;若每步上 3 阶,最后剩 2 阶;若每步上 5 阶,最后剩 4 阶;若每步上 6 阶,最后剩 5 阶;只有每步上 7 阶,最后刚好一阶也不剩。

--> 从题中可以得出关键词:

每步上 2 阶,最后剩 1 阶;若每步上 3 阶,最后剩 2 阶;若每步上 5 阶,最后剩 4 阶;若每步上 6 阶,最后剩 5 阶;只有每步上 7 阶,最后刚好一阶也不剩

转为数学条件:
阶梯数 / 2 余数为 1
阶梯数 / 3 余数为 2
阶梯数 / 5 余数为 4
阶梯数 / 6 余数为 5
阶梯数 / 7 余数为 0

然后想着用这几节课的 Python 知识, 即 % 可以用来求余数,就可以写出:

steps % 2 == 1
steps % 3 == 2
steps % 5 == 4
steps % 6 == 5
steps % 7 == 0

ssdts 发表于 2021-5-27 19:16:26

fish_nian 发表于 2021-5-26 20:38
这就是满足除7余数为0,那么就是7的倍数,那么第一个7 * 1不满足就继续乘以更高7的倍数,当满足第一个if判 ...

那个   i = i + 1
那是什么意思啊

fish_nian 发表于 2021-5-27 19:34:08

ssdts 发表于 2021-5-27 19:16
那个   i = i + 1
那是什么意思啊

倍数,第一次 i = 1,那么就是 7 乘以 i = 7,如果这个数不满足if判断的条件,进行i = i + 1 => 1 + 1 = 2,接下来继续进行循环,7 乘以 2、3、4、5、6、7,直到满足判断条件结束判断
页: [1]
查看完整版本: 新版Python第011讲短路逻辑和运算符优先级