Python可分范围

时间:2017-07-05 04:43:37

标签: python range

所以我在线做一些简单的问题来了解Python,并遇到了这个问题:

  

添加1..1000范围内的所有数字,其中数字为奇数   但是可以被2 ..(n // 2)范围内的任何数字整除。

我的尝试:

total = 0
for num in range(1, 1000, 2):
    if all(num % n == 0 for n in range(2, num // 2)):
        total += num
print(total)

我不明白我实现它的方式有什么问题,输出为9,而不是预期的输出173874.

1 个答案:

答案 0 :(得分:2)

只需使用any

即可
total = 0
for num in range(1, 1000, 2):
    if any(num % n == 0 for n in range(2, num // 2)):
        total += num
print(total)

当你使用all时,你只是总结1,3,5因为all只有当iterable的所有元素都为真时(或者如果iterable为空),则返回True。在您的情况下,如果迭代的任何元素为真,您希望any返回True。