Ваша проблема в заявлении на печать. При написании:
print("%s x^%s + "%(P[i], i))
Вы на самом деле печатаете весь кортеж. Например, P[0]
равно всему списку [4, 512]
. Поэтому при прямой печати P[i]
вы просто печатаете весь подсписчик.
Вместо этого вы хотите напечатать каждый элемент в подсписке.
print("%s x^%s" % (P[i][0], P[i][1]))
Кроме того, ваше решение как есть будет печатать каждую часть ответа на отдельной строке. Чтобы исправить это, у вас есть пара вариантов, но вот тот, который не зависит от версии python, которую вы имеете. В принципе, вы создаете строку, которая представляет ваш результат, и продолжайте строить ее по мере прохождения цикла. Затем в самом конце функции вы печатаете эту строку.
result = '' # initialize an empty string before your loop
Затем внутри цикла заменить вызов печати с:
result = "%s + %s x^%s" % (result, P[i][0], P[i][1]
И в самом конце функции вы можете напечатать строку.
print (result)
Я не делаю связи между вашим примером примера полинома и вашим представлением его как списком списков. Если testP не будет: [[4,230], [7,96], [1,0]]? –
Я думаю, это должно быть. Но P в вашем методе - список списков. Таким образом, P [i] возвращает список, и вы сравниваете его с! = 0, что не имеет смысла. – Rainer
Распаковка списка списков следующим образом должна дать результаты, я думаю, что OP ищет 2 изменения, сначала предложение * if * может быть: if len (P [i])! = 0 И, во-вторых, следующий оператор печати как print ("% sx ^% s +"% (P [i] [0], P [i] [1])), –