Python可分范围
因此,我在网上做一些简单的问题来了解Python,并遇到了以下问题: 将1..1000范围内的所有数字相加,其中数字为奇数 但可被2..(n//2)范围内的任何数字整除 我的尝试: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
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在我之前回答了,请妈妈把他/她/他们的答案作为解决方案。-一个男人。出于礼貌,我不想对马特喜欢的性别发音做出假设。