我有一个函数告诉我一个数字的因子,然后应该打印它有多少。
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.
>>>
我在这里做错了什么?
最佳答案
当你第一次调用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.