python中的多项式函数

python中的多项式函数,python,polynomials,Python,Polynomials,我对编写Python代码非常陌生。我必须这样表示多项式 4x^230+7x^96+1 testP = [[4,512],[7,256],[1,0]] def printPoly2(P): for i in range(len(P)): if P[i] != 0: print("%s x^%s + "%(P[i], i)), print printPoly2(testP) 但我的回答是不正确的。我需要这方面的帮助。您的

我对编写Python代码非常陌生。我必须这样表示多项式

4x^230+7x^96+1

testP = [[4,512],[7,256],[1,0]]

def printPoly2(P):
    for i in range(len(P)):
        if P[i] != 0:
            print("%s x^%s + "%(P[i], i)),
            print

printPoly2(testP)

但我的回答是不正确的。我需要这方面的帮助。

您的问题在打印报表中。以书面形式:

print("%s x^%s + "%(P[i], i))
实际上,您正在打印整个元组。例如,
P[0]
等于整个列表
[4512]
。因此,在直接打印
P[i]
时,您只需打印整个子列表

print("%s x^%s" % (P[i][0], P[i][1]))
相反,您希望打印子列表中的每个元素

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)
我(希望)用一些Python魔法改进了你的代码。现在它是一个元组列表,并使用自动元组展开

testP = [(4, 230), (7, 96), (1, 0)]

def printPoly2(P):
    for i, e in P:
        if e != 0:
            print("{} x^{} + ".format(i, e))

printPoly2(testP)
打印出来

4 x^230 + 
7 x^96 + 

还有5分钟。。。给你

testP = [(4, 230), (7, 96), (1, 0)]

def printPoly2(polynom):
    parts = []
    for i, e in polynom:
        parts.append(_format_polynome(i,e))

    print " + ".join(parts)

def _format_polynome(i, e):
    if e == 0:
        return "{}".format(i)
    else:
        return "{} x^{}".format(i, e)

printPoly2(testP)

这就是我将如何用一种我认为更像python的方式来编写代码:

def poly2(P):
    result = []
    for item in P:
        n, e = item
        if e == 0:
            result.append("1")
        else:
            result.append("{}x^{}".format(n, e))
    return " + ".join(result)

# 4x^230 + 7x^96 + 1
testP = [(4,230), (7,96), (1,0)]
print poly2(testP)

请注意,返回字符串表示比直接从函数打印更灵活

我并不是在你的开始示例多项式和你的列表表示之间建立联系。testP不应该是:[[4230],[7,96],[1,0]?我想应该是。但是在你的方法中P是一个列表列表。因此P[i]返回一个列表,您可以将其与!=0这毫无意义。按如下方式解压缩列表应该会得到结果我认为OP正在寻找2个更改,第一个if子句可能是:if len(P[I])!=第二,下面的print语句为print(“%s x^%s+”%(P[i][0],P[i][1])),对不起,testP应该是这样的,testP=[4512],[7256],[1,0]]请将我的答案标记为正在解决(如果是)。TY你仍然需要打印常量项而不使用
x^0
@chepner我也这么认为,但这是原始的post^^tani,你也许应该添加一个其他案例,然后打印出“I”