from math import sqrt
def factor(a, b, c):
x1 = (-1 * b) + sqrt(b * b - (4 * a * c))
x2 = (-1 * b) - sqrt(b * b - (4 * a * c))
solution1 = (x1 / (2 * a))
solution2 = (x2 / (2 * a))
expression1 = ['x', (-1 * solution1)]
expression2 = ['x', (-1 * solution2)]
return expression1, expression2
print(factor(1, -17, 12))
我无法弄清楚如何替换列表中的值以使输出看起来更干净。我试过以不同的顺序排列值,并添加str
使其看起来更好,但无济于事。如何使输出看起来像(x - 16.2)(x - 0.73)
而不是(['x', -16.262087348130013], ['x', -0.7379126518699879])
?
您可以使用f字符串
your_tuple = (solution1, solution2)
print(f'(x - {your_tuple[0]})(x - {your_tuple[1]})')
这是一个痛苦的,分散的(丑陋的)解决方案,但是当您学习完全格式化所需的格式和其他技巧时,它应该会很有用:
def pretty_product(e1, e2):
a = e1[0]
op1 = '+' if e1[1] >= 0 else '-'
b = e1[1]
c = e2[0]
op2 = '+' if e2[1] >= 0 else '-'
d = e2[1]
return f'({a} {op1} {abs(b):.2f})({c} {op2} {abs(d):.2f})'
print(pretty_product(['x', 2567.235235], ['y', -423.12313124214]))
结果是:
(x + 2567.24)(y - 423.12)
注意:如果您想抑制可能的+ 0.00
,则可以编写更多代码,但是我认为它应该很容易添加。 :)