<p>正如您之前提到的,您不能使用任何模块,因为它是用于类的,所以这里有一些不使用模块的代码,尽管我没有费心去评论,但是有一些疯狂的(在某些情况下是不必要的)替换lol</p>
<p>但不管怎样,这就是:</p>
<pre><code>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)
</code></pre>