Python;使用字典查找数字代码的因子。为什么这不起作用?

Python; finding the factors of a number code using a dictionary. Why doesn't this work?

在这个函数中获取(开始,结束)之间的数字因子, 我认为最好的方法是定义这些数字的字典,然后将这些因素附加到分配给该数字的列表中。 这种方法有什么问题吗?如果不是,那为什么这行不通 --> ?

def factors(start, end):

   factors = {}

   for number in range(start, end + 1):
      for i in range(2, number+1):
         if number % i == 0:
            factors[number] = []
            factors[number].append(i)

在代码中,参数是起始值和结束值,factors是存储数字及其各自因子的字典。

想法是循环遍历范围内的数字,然后对每个循环遍历其所有可能的因素,确定哪些确实是因素并将它们添加到字典中。

这有意义吗?

谢谢

我无法完全解决问题。最好提供一个例子和预期的结果。这是我认为有效的方法。

def factors(start, end):

    factors = {}

    for number in range(start, end+1):
        factors[number] = []
        for i in range(2, number+1):
            if number % i == 0:
                factors[number].append(i)
    return factors

print(factors(10,20))

这就是你要找的吗?

你的方法至少有两个问题:

  1. 每次找到一个因素时,您都在设置 factors[number] = []。这意味着每次你找到一个因素,你就会删除之前找到的那个。由于在循环的最后一次迭代中,i 将等于 number,而 number % number == 0,您的因子列表将始终只包含 number 本身。

  2. 你没有return从你的函数中获取任何东西。

我看到让你的函数工作的最小变化是将 factors[number] = [] 移到内部循环之外,并在你完成后 return factors 字典:

def factors(start, end):

    factors = {}

    for number in range(start, end + 1):
        factors[number] = []
        for i in range(2, number+1):
            if number % i == 0:
                factors[number].append(i)
    return factors