一定有更好的方法

Jer*_*uke -2 python modulo

有没有更惯用的方法来完成Python3中的以下内容?

if i%1 == 0 and i%2 == 0 and i%3 == 0 and i%4 == 0 and i%5 == 0 and i%6 == 0 and i%7 == 0 and i%8 == 0 and i%9 == 0 and i%10 == 0 and i%11 == 0 and i%12 == 0 and i%13 == 0 and i%14 == 0 and i%15 == 0 and i%16 == 0 and i%17 == 0 and i%18 == 0 and i%19 == 0 and i%20 == 0:
Run Code Online (Sandbox Code Playgroud)

我试图找到最小的正数,它可以被1到20之间的所有数字整除.我不是在寻找新的解决方案.我正在寻找一种更简洁的方式来表达我上面所做的事情.

Pad*_*ham 6

全部使用范围:

if all(i % j == 0 for j in range(1, 21)): # python2 -> xrange(2, 21) 
   # do whatever
Run Code Online (Sandbox Code Playgroud)

如果全部i % j == 0,它将返回True否则它将短路并返回False,如果有任何余数i % j.此外,检查if i % 1是多余的,因此您可以从2开始.

或者conversly,检查是否有没有 任何 i % j一个余数.

if not any(i % j for j in range(2, 21)):
Run Code Online (Sandbox Code Playgroud)

或者如果你喜欢功能:

if not any(map(i.__mod__, range(2, 21)))
Run Code Online (Sandbox Code Playgroud)