2468246301 发表于 2020-5-20 05:03:34

懵逼的一天从if开始

steps = 7
i = 1
FIND = False

while i < 100:
    if ((steps - 1) % 2) and ((steps - 2) % 3) and ((steps - 4) % 5) and ((steps - 5) % 6):
      FIND = True
      break
    else:
      steps = 7 * (i + 1)
    i = i + 1

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

不知道问题出在哪,我的想法是 每次跨两台阶剩一个就是把剩的那个减去就没有余数了,这样就是ok的了,但是答案不对(哭
感谢大佬们的每一次指导
谢谢

fresh_python 发表于 2020-5-20 06:48:45

emmm,不太懂你问的问题是什么

wp231957 发表于 2020-5-20 07:04:37

ifx%2表示   ifx%2不等于0    和你期望恰恰相反

永恒的蓝色梦想 发表于 2020-5-20 07:11:50

steps = 7
i = 1
FIND = False

while i < 100:
    if not(((steps - 1) % 2) and ((steps - 2) % 3) and ((steps - 4) % 5) and ((steps - 5) % 6)):
      FIND = True
      break
    else:
      steps = 7 * (i + 1)
    i = i + 1

Twilight6 发表于 2020-5-20 08:39:54

本帖最后由 Twilight6 于 2020-5-20 08:42 编辑

因为在Python 中 ,非0数为 True   ,0 为 False

# 因为你 if 条件里的代码:
if ((steps - 1) % 2) and ((steps - 2) % 3) and ((steps - 4) % 5) and ((steps - 5) % 6):

当条件全部成立时候 , 即全部求余数都得 0 ,那么就符合条件
但是把 0 作为 if 条件,if要为True时候才运行if里面的代码块,而 0 为False 则不运行 if 里面的代码块
你把 if 条件上加个 not 括起来就如果 求余数都为 0 转为条件成立 执行 if代码块

若你不想用 not 那你if 条件代码应该改成:
if (x%2==1) and(x%3==2) and (x%5==4) and (x%6==5):
这样即可

禾马 发表于 2020-5-21 10:41:46

永恒的蓝色梦想 发表于 2020-5-20 07:11


试运行了吗{:5_97:}

永恒的蓝色梦想 发表于 2020-5-21 10:42:33

禾马 发表于 2020-5-21 10:41
试运行了吗

那肯定是没有的。
页: [1]
查看完整版本: 懵逼的一天从if开始