Python可分范围

Python可分范围,python,range,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,而不是预期的17

因此,我在网上做一些简单的问题来了解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

只需使用
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的所有元素均为True(或iterable为空)时才返回True。在您的例子中,您需要
any
,如果iterable的任何元素为True,它将返回True。

只需使用
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的所有元素均为True(或iterable为空)时才返回True。在您的情况下,您需要
any
,如果iterable的任何元素为True,则返回True。

也许您需要
any
而不是
all
?@mgilson将其添加为答案根据您的问题陈述,您应该使用
范围(下限,上限+1)
如果您需要
[下限,上限]
数学上(包括下限和上限)也许你想要
任何
而不是
所有
?@mgilson将其添加为答案根据你的问题陈述,你应该使用
范围(下限,上限+1)
如果你想要
[下限,上限]
数学上(包括下限和上限)oops.没有看到mgilson已经回答了,因为我正在打字。mgilson在我之前回答了。请将他/她/他们的回答标记为解决方案。-一个男人。出于礼貌,我不想假设Matt喜欢的性别发音。oops.没有看到mgilson已经回答了,因为我正在打字。mgilson在我之前回答了,请妈妈把他/她/他们的答案作为解决方案。-一个男人。出于礼貌,我不想对马特喜欢的性别发音做出假设。