正如您之前提到的,由于这是一个课程,您不能使用任何模块,因此这里有一些不使用模块的代码,尽管我没有费心去注释,但有一些疯狂(在某些情况下是不必要的)的替换哈哈。
但无论如何,这就是它:
class Polynomial:
def __init__(self, input_str):
self.polynomial_display_string = input_str.replace('**', '^').replace('*', '').replace("x^1+", "x+")\
.replace("x^1-", "x-").replace('+0', '').replace('-0', '')\
.replace('+-', '-').replace('-+', '-').replace('--', '+').replace('--', '+')
self.expression_str = self.polynomial_display_string.replace('^', '**').replace('x', '*x')\
.replace("x+", "x^1+").replace("x-", "x^1-").replace(' ', '').replace('-+', '-').replace('-', '+-')
def derivative(self):
if '+' not in self.expression_str:
if "x" in self.expression_str:
constant_multiplier = int(self.expression_str.split('*x**')[0])
power = int(self.expression_str.split('*x**')[1])
derivative = (str(constant_multiplier*power) + "*x^" + str(power-1))
return Polynomial(derivative)
else:
return Polynomial('0')
elif self.expression_str[0] == '+' and not self.expression_str.count('+') > 1:
constant_multiplier = int(self.expression_str[1:].split('*x**')[0])
power = int(self.expression_str[1:].split('*x**')[1])
derivative = (str(constant_multiplier * power) + "*x^" + str(power - 1))
return Polynomial(derivative)
else:
terms = list(filter(None, self.expression_str.split('+')))
final_str = ""
for term in terms:
poly_object = Polynomial(term)
final_str += "+" + str(poly_object.derivative().expression_str)
final_str = final_str[1:] if final_str[0] in ['+', '-', ' '] else final_str
return Polynomial(final_str.replace('++', '+').replace('+-', '-').replace('-+', '-').replace('--', '-')
.replace('+', ' + ').replace('-', ' - '))
poly = Polynomial(input('Enter a polynomial'))
print(poly.polynomial_display_string)
print(poly.derivative().polynomial_display_string)