所以我正在创建一个函数,它应该返回所有小于等于x的可被4或5整除的数字的相加,但不应同时将可被这两个数字整除的数字相加。到目前为止,我已经能够在能够接受被整除的4和5的数字并返回它的函数中编写代码。然而,我还不能编写代码来实现将两个数相加的能力。下面的图片应该显示了我希望python输出的内容。

到目前为止,我所做的代码如下:
def personal_numbers(num):
#variable to store the sum
sum=0
#running loop through the range
#if a number is divisible by i
for i in range(1000):
if (i%4==0 and i%5==0):
sum+=i
return sum
print(personal_numbers(12))发布于 2021-05-14 00:36:59
两件事。不要使用sum作为变量,使用sum([x,y])时会得到Nonetype。最后,在for循环中有一个返回。这将在第一次迭代时停止程序。
def personal_numbers(num):
#variable to store the sum
sum=0
#running loop through the range
#if a number is divisible by i
for i in range(1000):
if (i%4==0 and i%5==0):
sum+=i
return sum
print(personal_numbers(12))发布于 2021-05-14 00:48:24
几点
sum_.num变量。您应该迭代直到这个for值,这样num循环就变成:for i in range(num + 1):if语句并不完全正确,您还需要排除可以被4和5整除的数字。所以只需检查i%4 != i%5if (i % 4 == 0 or i%5==0) and i%4 != i%5:循环之外。
代码
def personal_numbers(num):
sum_=0
for i in range(num + 1):
if (i % 4 == 0 or i%5==0) and i%4 != i%5:
sum_+=i
return sum_
print(personal_numbers(12))
# 39
print(personal_numbers(21))
# 70有趣的是,您可以在sum中使用列表理解
def personal_numbers_inline(num):
return sum([i for i in range(num + 1) if (i % 4 == 0 or i%5==0) and i%4 != i%5])
print(personal_numbers_inline(12))
# 39
print(personal_numbers_inline(21))
# 70https://stackoverflow.com/questions/67522842
复制相似问题