一个分解多项式

2024-09-29 21:40:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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])?我没有成功地从输出中删除不必要的字符

我只想删除大括号和引号


Tags: fromimport列表returndefmathsqrtprint
2条回答

您可以使用f-string

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,您有更多的代码要编写,但我认为它应该很容易添加。:)

相关问题 更多 >

    热门问题