Я пытаюсь перевести Polynomial({4:5,6:7,100:10})
в питоне, чтобы дать мне чистую вывод формыСоздание хорошего полиномиальное представления из словаря в Python
[out]: 10*X^100 + 7*X^6 + 5*X^4
в виде строки.
Таким образом, первая запись словаря соответствует показателю X
и второй записи его коэффициента, всегда начиная с наименьшего показателя, возрастающего до самого высокого. Чтобы получить ощущение ситуации я попытался перебрать словарь и заметил, что выход не то, что я ожидал бы
Например, если настройка I словаря, например, как описано выше dictionary = {4:5,6:7,100:10}
и я выполнить печать в подобие
for exponent in dictionary:
print exponent
Я получаю выход 100,4,6. Это не очень интуитивно для меня. Однако я заглянул в модуль operator
и некоторые подобные вопросы на этом сайте и придумал следующий фрагмент кода.
import operator
class Polynomial(object): def __init__(self, polynom = {}): self.polynom = polynom self.poly_string = self.nicePolynom(polynom)
def __str__(self):
return self.poly_string
def nicePolynom(self, polynom):
sorted_polynom = sorted(polynom.items(), key=operator.itemgetter(0))
sorted_polynom.reverse()
for element in sorted_polynom:
exponent = str(element[0])
coefficient = str(element[1])
term = coefficient + "*X^" + exponent
print term
return term
Что делает в основном то, что я хочу. Однако я не знаю, как это сделать. Мой выходной ток (индуцированный зачаточный оператор печати в коде) является
10*X^100
7*X^6
5*X^4
и, конечно, оператор возврата, который только оценивает 5 * X^4. Я хочу, чтобы вышеприведенный вывод был в одной строке и имел «+» между ними так же, как в приведенном выше примере вывода. Однако, не написав очень очень уродливый код (уродливый, чем выше), я не могу это сделать.