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))
这就是你要找的吗?
你的方法至少有两个问题:
每次找到一个因素时,您都在设置 factors[number] = []
。这意味着每次你找到一个因素,你就会删除之前找到的那个。由于在循环的最后一次迭代中,i
将等于 number
,而 number % number == 0
,您的因子列表将始终只包含 number
本身。
你没有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
在这个函数中获取(开始,结束)之间的数字因子, 我认为最好的方法是定义这些数字的字典,然后将这些因素附加到分配给该数字的列表中。 这种方法有什么问题吗?如果不是,那为什么这行不通 --> ?
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))
这就是你要找的吗?
你的方法至少有两个问题:
每次找到一个因素时,您都在设置
factors[number] = []
。这意味着每次你找到一个因素,你就会删除之前找到的那个。由于在循环的最后一次迭代中,i
将等于number
,而number % number == 0
,您的因子列表将始终只包含number
本身。你没有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