该程序运行良好,只是如果我决定使用 while 循环,它不会在没有错误的情况下给我任何东西,但是如果我将其标记为标签,则一切正常。我希望它不被标记出来的原因是它会回报列表中的数字,使其成为未来的一个问题,出于某种原因,一切都打破了因素列表。我需要帮助来弄清楚如何修复它。
Factor_list = []
Solved_Diamond_List =[]
z = x2 * num
No_Answer = True
if z > 0:
for i in range(-z, 0):
if z % i == 0:
Factor_list.append(i)
for i in range(1, z + 1):
if z % i == 0:
Factor_list.append(i)
if z < 0:
for i in range(z, 0):
if z % i == 0:
Factor_list.append(i)
for i in range(1, -z + 1):
if z % i == 0:
Factor_list.append(i)
for i in Factor_list:
for j in Factor_list:
while No_Answer == True:
if (i + j) == x:
if (i * j) == z:
Solved_Diamond_List.append(i)
Solved_Diamond_List.append(j)
No_Answer = False```
答案 0 :(得分:0)
您的 while
循环不会终止,除非答案是以您开始的 i
和 j
的特定组合生成的。也许重写为:
for i in Factor_list:
for j in Factor_list:
if No_Answer:
if (i + j) == x and (i * j) == z:
Solved_Diamond_List.append(i)
Solved_Diamond_List.append(j)
No_Answer = False
这不是最优的(即使在找到答案后,它也会遍历 i
和 j
的所有组合)。或者,您可能想要所有答案的列表?
for i in Factor_list:
for j in Factor_list:
if (i + j) == x and (i * j) == z:
Solved_Diamond_List.append((i, j))