我有一个学校练习来制作一个打印输入多项式的导数的程序。我在这个网站上发现了一个代码,几乎和我想要的一样好。由于我在此特定练习中缺乏编程技能,因此我需要更多帮助。
所以,我需要计算的多项式在底部的“run(xxxxxxxx)”行中,它几乎可以工作。第一个应该打印“4x^3 + 12x^2 + 1”,但打印“4x^3+9x^2+”。第二个我需要找出如何在多项式中添加使用“y”进行计算的可能性。
我想问题可能是程序无法计算所有行,这就是为什么它是 9x^2 而不是 12x^2。
任何人都可以给我一个提示如何前进或向我展示代码,以便我可以学习如何制作它?
import re
def read(eq):
terms = eq.split('+')
equation = [re.split('x\^?', t) for t in terms]
eq_map = []
for e in equation:
try:
coeff = int(e[0])
except ValueError:
coeff = 1
try:
power = int(e[1])
except ValueError:
power = 1
except IndexError:
power = 0
eq_map.append((coeff, power))
return eq_map
def write(eq_map):
def str_power(p):
if p == 0:
return ''
elif p == 1:
return 'x'
else:
return 'x^%d' % (p,)
def str_coeff(c):
return '' if c == 1 else str(c)
str_terms = [(str_coeff(c) + str_power(p)) for c, p in eq_map]
return "+".join(str_terms)
def derivative(eq):
eq_map = read(eq)
der_map = [(p*c, p-1) for c, p in eq_map[:-1]]
return write(der_map)
def run(eq):
print (eq, '->', derivative(eq))
run("x^4 + 3x^3 + x +x^3")
run("x^3 + xy")
谢谢 :)
饮歌长啸
相关分类