所以我在线做一些简单的问题来了解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.
答案 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。