2024-10-01 04:57:45 发布
网友
我对编写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魔法改进了你的代码。现在它是一个元组列表,并使用自动元组展开。在
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)
打印出来
你的问题出在打印声明中。通过写作:
print("%s x^%s + "%(P[i], i))
实际上,您正在打印整个元组。例如,P[0]等于整个列表[4, 512]。所以在直接打印P[i]时,您只需打印整个子列表。在
P[0]
[4, 512]
P[i]
相反,您需要打印子列表中的每个元素。在
另外,你的解决方案将把答案的每一部分打印在单独的一行上。要解决这个问题,您有两个选项,但是这里有一个选项不依赖于您的python版本。基本上,创建一个表示结果的字符串,并在循环过程中继续构建它。然后在函数的最后,打印这个字符串。在
result = '' # initialize an empty string before your loop
然后在循环内部,将print调用替换为:
result = "%s + %s x^%s" % (result, P[i][0], P[i][1]
在函数的最后,你可以打印字符串。在
print (result)
这就是我如何用我认为更像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)
请注意,返回字符串表示比直接从函数打印它更灵活。在
我(希望)用一些Python魔法改进了你的代码。现在它是一个元组列表,并使用自动元组展开。在
打印出来
^{pr2}$你的问题出在打印声明中。通过写作:
实际上,您正在打印整个元组。例如,
P[0]
等于整个列表[4, 512]
。所以在直接打印P[i]
时,您只需打印整个子列表。在相反,您需要打印子列表中的每个元素。在
^{pr2}$另外,你的解决方案将把答案的每一部分打印在单独的一行上。要解决这个问题,您有两个选项,但是这里有一个选项不依赖于您的python版本。基本上,创建一个表示结果的字符串,并在循环过程中继续构建它。然后在函数的最后,打印这个字符串。在
然后在循环内部,将print调用替换为:
在函数的最后,你可以打印字符串。在
这就是我如何用我认为更像Python的方式编写代码:
请注意,返回字符串表示比直接从函数打印它更灵活。在
相关问题 更多 >
编程相关推荐