3 回答

TA贡献1887条经验 获得超5个赞
你可以把它改成
if all([a%i == 0 for i in range(1,11)]):
All 接受一个列表,如果列表中的所有内容都为 True,则返回 True
这使用一个简单的列表理解来遍历数字 1 到 10,并检查它们是否都为 True a%i == 0

TA贡献1847条经验 获得超7个赞
你可以使用所有:
def smallest_multiple():
factors = [i for i in range(1, 11)]
a = 0
while True:
a += 1
if all([a % factor == 0 for factor in factors]):
return a
print(smallest_multiple())
输出
2520
更新
正如@PatrickHaugh 所建议的,您可以避免创建列表:
def smallest_multiple():
factors = range(1, 11)
a = 0
while True:
a += 1
if all(a % factor == 0 for factor in factors):
return a
print(smallest_multiple())
输出
2520

TA贡献1784条经验 获得超9个赞
说到单线^^
虽然不是无限循环
import sys
next(i for i in xrange(1, sys.maxsize) if len([j for j in range(1,10) if i % j == 0]) == 9)
#=> 2520
这不是最有效的解决方案。
添加回答
举报