spontaneous 发表于 2020-8-24 17:47:50

第七课作业

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

使用代码(我知道这很愚蠢,但初学者没什么思路)
i=1 and a=0
while a<1:
    if i%2==1 and i%3==2 and i%5==4 and i%6==5 and i%7==0:
      print (i)
      i = i+1
    else:
      i=i+1
的问题在哪?

Twilight6 发表于 2020-8-24 17:51:53


代码改成这样吧,你的 赋值不能写同一行 然后 写个 and这样是错误的语法哈

还有之前你的 a 的条件是死循环,这样会导致程序一直走下去的

参考代码:

i = 1
a = 0
while a < 1000:
    if i % 2 == 1 and i % 3 == 2 and i % 5 == 4 and i % 6 == 5 and i % 7 == 0:
      print(i)
    a = a + 1
    i = i + 1

疾风怪盗 发表于 2020-8-24 17:53:41

a没变化?那while a<1不是一直运行,是不是就死循环了?

spontaneous 发表于 2020-8-24 18:01:36

在这里a的目的是为了无限循环直到我主动要求停止程序

spontaneous 发表于 2020-8-24 18:06:44

Twilight6 发表于 2020-8-24 17:51
代码改成这样吧,你的 赋值不能写同一行 然后 写个 and这样是错误的语法哈

还有之前你的 a 的条件是 ...

明白了,感谢大佬。但是如果要符合题目要求找出那最小的唯一的一个数要怎么做?

Twilight6 发表于 2020-8-24 18:20:22

spontaneous 发表于 2020-8-24 18:06
明白了,感谢大佬。但是如果要符合题目要求找出那最小的唯一的一个数要怎么做?


可以这样
i = 1
a = 0
while a != 1:
    if i % 2 == 1 and i % 3 == 2 and i % 5 == 4 and i % 6 == 5 and i % 7 == 0:
      print(i)
      a =1
    i = i + 1

Hoiste 发表于 2020-8-24 19:54:15

and是逻辑判断,会导致所在那一行的返回值变为布尔类型,如果要在一行赋值也是用逗号,通常为了阅读方便,这种简单的小程序赋值都是分行的。

学习型motor 发表于 2020-8-24 21:51:25

只找最小的一个可以在print下面加一句break。当然 前面的赋值你还是需要改成
i = 1
a = 0这样
页: [1]
查看完整版本: 第七课作业