继续使用ZeroDivisonError每次使用模块时

时间:2017-08-16 14:24:17

标签: python-3.x module

所以我正在研究一个需要我得到一定数量因子的问题。因此,我一直在使用模块%,以查看某个数字是否可以被某个数字整除并且等于零。但是,当我试图这样做时,我不断收到错误ZeroDivisionError。我尝试添加这样的代码块,因此python不会从零开始计数而是从一个for potenial in range(number + 1):开始计数但是这似乎不起作用。以下是我的其余代码,我们将不胜感激。

def Factors(number):
factors = []
for potenial in range(number + 1):
    if number % potenial == 0:
        factors.append(potenial)
    return factors

1 个答案:

答案 0 :(得分:1)

在你的for循环中,你从0开始迭代(范围()假设起始数字为0,如果只给出1个参数)直到“数字”。由于您尝试在for循环开始时计算模数0(数字%0),因此存在ZeroDivisionError。在计算模数时,Python会尝试将数字除以0,从而导致ZeroDivisionError。这是更正的代码(修复了缩进):

def get_factors(number):
    factors = []
    for potential in range(1, number + 1):
        if number % potential == 0:
            factors.append(potential)
    return factors

然而,有更好的计算因素的方法。例如,您只能迭代到sqrt(n),其中n是数字,然后计算“因子对”,例如如果3是15的因子那么15/3(即5)也是15的因子。 我鼓励你尝试一种更有效的算法。

文体说明:根据PEP 8,函数名称应为小写,单词用下划线分隔。大写名称通常表示类定义。