3 回答

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
你可以把它改成
if all([a%i == 0 for i in range(1,11)]):
All 接受一個(gè)列表,如果列表中的所有內(nèi)容都為 True,則返回 True
這使用一個(gè)簡(jiǎn)單的列表理解來(lái)遍歷數(shù)字 1 到 10,并檢查它們是否都為 True a%i == 0

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
你可以使用所有:
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 所建議的,您可以避免創(chuàng)建列表:
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貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
說(shuō)到單線^^
雖然不是無(wú)限循環(huán)
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
這不是最有效的解決方案。
添加回答
舉報(bào)