Довольно печать факторизованного полинома - PullRequest
0 голосов
/ 05 апреля 2020
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 s, чтобы он выглядел лучше, но безрезультатно.

Как сделать так, чтобы вывод выглядел как (x - 16.2)(x - 0.73) вместо (['x', -16.262087348130013], ['x', -0.7379126518699879])? Мне не удалось удалить ненужные символы из вывода.

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

Вот болезненно распространенное (и уродливое) решение, но оно должно быть полезно, когда вы изучите форматирование и другие приемы, необходимые для получения этого в точности так, как вы хотите:

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, вам нужно написать больше кода, но, думаю, его будет легко добавить. :)

0 голосов
/ 05 апреля 2020

Вы можете использовать f-строку

your_tuple = (solution1, solution2)
print(f'(x - {your_tuple[0]})(x - {your_tuple[1]})')
...