为什么这个for循环给我一个不正确的输出?

时间:2015-10-14 12:45:50

标签: python python-3.x if-statement for-loop

我有一个函数告诉我一个数字的因子,然后应该打印它有多少。

factors = 0

def getFactors(n):
    global factors
    for i in range(1,n):
        if n%i==0:
            print(i)
            factors += 1
    print(n, "has", factors, "factors.")

然而,因素的数量似乎是错误的。显然16有6个因素,尽管它清楚地列出了4个。

>>> getFactors(16)
1
2
4
8
16 has 6 factors.
>>> 

我在这里做错了什么?

1 个答案:

答案 0 :(得分:5)

第一次拨打getFactors(16)时,您将正确获得4。问题很可能是您多次调用该函数,并且由于您使用了global factors,因此每次调用函数时factors的值都不会重置为0。每次调用函数时,全局变量都会发生变异。

如果删除global变量并使其在本地运行,它将正常工作

def getFactors(n):
    factors = 0
    for i in range(1,n):
        if n%i==0:
            print(i)
            factors += 1
    print(n, "has", factors, "factors.")

>>> getFactors(16)
1
2
4
8
16 has 4 factors.