所以我正在研究一个需要我得到一定数量因子的问题。因此,我一直在使用模块%
,以查看某个数字是否可以被某个数字整除并且等于零。但是,当我试图这样做时,我不断收到错误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
答案 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,函数名称应为小写,单词用下划线分隔。大写名称通常表示类定义。