#python #string #string-formatting
#python #строка #форматирование строки
Вопрос:
Я начал писать небольшой класс, который должен представлять полиномиальные функции в одной переменной. Я знаю, что существует мощный модуль sympy, но я решил, что проще поместить несколько строк кода вместо загрузки всего модуля sympy. Основная причина в том, что Просто используется уровень абстракции (т. Е. Работа с переменными и кольцами), который мне не нужен.
Итак, вот что я сделал:
class Polynomial:
"""Class representing polynomials."""
def __init__(self, *coefficients):
self.coefficients = list(coefficients)
"""Coefficients of the polynomial in the order a_0,...a_n."""
def __repr__(self):
return "Polynomial(%r)" % self.coefficients
def __call__(self, x):
res = 0
for index, coeff in enumerate(self.coefficients):
res = coeff * x** index
return res
Я хотел бы также реализовать __str___
с тем же результатом, который создается циклом for:
res = ""
for index, coeff in enumerate(self.coefficients):
res = str(coeff) "x^" str(index)
Во-первых, я ожидал, что что-то вроде "$r*x^%r" % enumerate(self.coefficients)
сработает, но это не так. Я попытался преобразовать enumerate(...)
в кортеж, но это также не решило проблему.
Есть идеи для питоновского однострочного оператора возврата, который я мог бы использовать для __str__
?
Ответ №1:
Я не уверен, правильно ли я понял ваш вопрос, но вы можете использовать str.format
with str.join
для получения своей строки. Например:
coefficients = [2, 5, 1, 8]
print( ' '.join('{1}*x^{0}'.format(*v) for v in enumerate(coefficients)) )
С принтами:
2*x^0 5*x^1 1*x^2 8*x^3