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

标签 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.
>>> 

我做错了什么?

最佳答案

第一次调用 getFactors(16) 时,您将正确获得 4。问题可能是您多次调用该函数,并且由于您使用了 global factorsfactors 的值未重置为 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.

关于python - 为什么这个 for 循环给我一个不正确的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33125716/

相关文章:

python - 如何使用 Python 获取系统主机名?

python - Flask 中间件中如何访问请求

python - 从字符串中删除多个单词的更好方法?

r - R中使用lappy时如何处理NA

angularjs - AngularJS 中 ng-repeat 指令中的 if 语句

python - atom : hydrogen installed, 但代码未运行(在 macOS 上)

python - Pandas groupby 和滚动 4 周窗口

python - 查询hdf5日期时间列

python - TF2.2 : Loading a Saved Model from tensorflow_hub failed with `AttributeError: ' _UserObject' object has no attribute 'summary' `

Java:For循环和If算法