Python:从公式结果创建嵌套列表
我对Python编程非常陌生,我正试图让我的二次方程求解器将x1和x2的答案“收集”到一个嵌套列表中 它用正确的结果很好地解决了方程,我能够得到我想要的结果,但我无法在循环结束时将它们收集到同一个列表中。代码如下:Python:从公式结果创建嵌套列表,python,list,nested-loops,Python,List,Nested Loops,我对Python编程非常陌生,我正试图让我的二次方程求解器将x1和x2的答案“收集”到一个嵌套列表中 它用正确的结果很好地解决了方程,我能够得到我想要的结果,但我无法在循环结束时将它们收集到同一个列表中。代码如下: from math import sqrt abcList = [[1, 2, 1], [9, 12, 4], [1, -7, 0], [1, -2, -3]] for abc in abcList: a, b, c = abc q = b**2 - 4*a*c
from math import sqrt
abcList = [[1, 2, 1], [9, 12, 4], [1, -7, 0], [1, -2, -3]]
for abc in abcList:
a, b, c = abc
q = b**2 - 4*a*c
if q > 0:
q_sqrt = sqrt(q)
x1 = (-b + q_sqrt)/(2*a)
x2 = (-b - q_sqrt)/(2*a)
elif q == 0:
x1 = -b/(2*a)
x2 = x1
else:
raise ValueError("q is negative.")
resultList = []
print ('x1 = ', x1)
resultList.append(x1)
print ('x2 = ', x2)
resultList.append(x2)
#print ('a = ', a, ', b = ', b, 'and c = ',c)
print (resultList)
print ('-----')
这是我得到的结果:
x1 = -1.0
x2 = -1.0
[-1.0, -1.0]
x1 = -0.6666666666666666
x2 = -0.6666666666666666
[-0.6666666666666666, -0.6666666666666666]
x1 = 7.0
x2 = 0.0
[7.0, 0.0]
x1 = 3.0
x2 = -1.0
[3.0, -1.0]
-----
这就是我想要的结果:
x1 = -1.0
x2 = -1.0
x1 = -0.6666666666666666
x2 = -0.6666666666666666
x1 = 7.0
x2 = 0.0
x1 = 3.0
x2 = -1.0
[[-1.0, -1.0], [-0.6666666666666666, -0.6666666666666666], [7.0, 0.0], [3.0, -1.0]]
-----
您只需要稍微重新组织代码。在
for
循环的外部初始化resultList
,并将每对答案附加为一个2元素列表
from math import sqrt
abcList = [[1, 2, 1], [9, 12, 4], [1, -7, 0], [1, -2, -3]]
resultList = []
for abc in abcList:
a, b, c = abc
q = b**2 - 4*a*c
if q > 0:
q_sqrt = sqrt(q)
x1 = (-b + q_sqrt)/(2*a)
x2 = (-b - q_sqrt)/(2*a)
elif q == 0:
x1 = -b/(2*a)
x2 = x1
else:
raise ValueError("q is negative.")
#print ('a = ', a, ', b = ', b, 'and c = ',c)
print ('x1 = ', x1)
print ('x2 = ', x2)
resultList.append([x1, x2])
print (resultList)
print ('-----')
输出
x1 = -1.0
x2 = -1.0
x1 = -0.666666666667
x2 = -0.666666666667
x1 = 7.0
x2 = 0.0
x1 = 3.0
x2 = -1.0
[[-1.0, -1.0], [-0.66666666666666663, -0.66666666666666663], [7.0, 0.0], [3.0, -1.0]]
-----
顺便说一句,只需输入数学
模块即可进行平方根运算:您可以使用**
求幂运算符,这比进行函数调用更有效
q_sqrt = q ** 0.5
您的问题是,您试图将单个组件附加到结果列表中,并且在循环的每个迭代中都将其打印出来。
结果列表必须在循环之外,并且x1和x2必须成对追加到结果列表。请参阅下文:
from math import sqrt
abcList = [[1, 2, 1], [9, 12, 4], [1, -7, 0], [1, -2, -3]]
resultList = []
for abc in abcList:
a, b, c = abc
q = b**2 - 4*a*c
if q > 0:
q_sqrt = sqrt(q)
x1 = (-b + q_sqrt)/(2*a)
x2 = (-b - q_sqrt)/(2*a)
elif q == 0:
x1 = -b/(2*a)
x2 = x1
else:
raise ValueError("q is negative.")
print ('x1 = ', x1)
print ('x2 = ', x2)
resultList.append( [x1, x2] )
#print ('a = ', a, ', b = ', b, 'and c = ',c)
print (resultList)
print ('-----')
删除行print(resultList)
以使其与print('----')
具有相同的缩进。(投票决定以不太可能帮助他人的方式结束)提出得很好的问题。