在理解python 3.x'中的sum()时遇到问题;int';对象是不可编辑的

在理解python 3.x'中的sum()时遇到问题;int';对象是不可编辑的,python,Python,当我尝试运行这段代码时,我得到int是不可编辑的。。。。当我尝试执行注释代码时,它运行良好。有谁能告诉我commneted代码和used for循环代码之间的区别,以及使用sum()时可能出现的问题。您的函数返回一个数字,因此无法求和。这是失败的: 返回和(除数(num)),因为除数返回一个数字。我想您希望在for循环中获得收益率: defd(num,使用_yield=True): 返回和(除数(num,使用_收益率)) def除数(num,use_yield=True): 如果使用产量: 对于

当我尝试运行这段代码时,我得到int是不可编辑的。。。。当我尝试执行注释代码时,它运行良好。有谁能告诉我commneted代码和used for循环代码之间的区别,以及使用sum()时可能出现的问题。

您的函数返回一个数字,因此无法求和。这是失败的:


返回和(除数(num)),因为除数返回一个数字。

我想您希望在
for
循环中获得
收益率:

defd(num,使用_yield=True):
返回和(除数(num,使用_收益率))
def除数(num,use_yield=True):
如果使用产量:
对于范围(1,num//2+1)内的x:
如果num%x==0:
产量x
其他:
结果=(如果num%x==0,则x代表范围(1,num//2+1)中的x)
对于结果中的x:
产量x
印刷品(d(220))
打印(d(220,使用产量=假))
输出

284
284

请修复您的缩进!如果if永远不为真,除数()会返回什么?
divisior
返回一个
int
,而不是
int
s的可数。@barny
divisior
将始终返回1,因为
x%1==0
始终为真。
def d(num):
    return sum(divisor(num))

def divisor(num):
    sumo = 0
    for x in range(1,num//2+1):
        if num%x==0:
        print(x)
        return x
    #return(x for x in range(1,num//2+1) if num%x ==0 )

print(d(220))