gpt4 book ai didi

python - 尝试使用for循环找到一种有效的方法来查找python中的所有因素

转载 作者:行者123 更新时间:2023-12-03 23:06:54 25 4
gpt4 key购买 nike

我找到了这个高效的代码,但因为我是初学者,我对语法不太确定,所以我尝试使用 for 循环转换它。我的代码没有输出。
他们的代码:

from functools import reduce

def factors(n):
return set(reduce(list.__add__,
([i, n//i] for i in range(1, int(n**0.5) + 1) if n % i == 0)))

我的代码:
factors = []

def factor(n):
for i in range(1, int(n**0.5)+1):
if n % i == 0:
factors.append(i)
for j in factors:
factor_2 = int(n/j)
factors.append(factor_2)
print(factors)

factor(88)

有人可以帮助我理解第一个代码,并可能向我展示 for 循环的样子。

最佳答案

在您的第二个 for循环,你迭代 factors并同时在每个循环中附加一个值,因此您的列表不断增长并且您永远不会到达终点,这使您的循环无限。

有很多方法可以解决这个问题,一个是在第一个循环中成对生成因子。如果您希望它们按顺序排列,您可以在之后对列表进行排序。

def factor(n):
factors = []
for i in range(1, int(n**0.5)+1):
if n % i == 0:
factors.append(i)
factors.append(n//i)
factors.sort()
print(factors)

factor(88)
# [1, 2, 4, 8, 11, 22, 44, 88]

请注意,我把 factors = []函数体内的一行。否则,它将是全局的,并且不会在对函数的连续调用之间重置。

关于python - 尝试使用for循环找到一种有效的方法来查找python中的所有因素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62010160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com