📅  最后修改于: 2023-12-03 15:41:08.854000             🧑  作者: Mango
本程序实现了对一个多项式进行简化,其主要功能是将同类项合并,从而简化表达式。
def simplify_polynomial(poly):
"""
简化多项式
:param poly: 待简化的多项式,如 '9t4 + 7t - 45t3 + 10t'
:return: 简化后的多项式,如 '-45t^3 + 9t^4 + 17t'
"""
# 先将多项式按照加号拆分成若干个单项式
terms = poly.split('+')
# 定义字典存储同类项系数之和
d = {}
# 对每一个单项式,将系数和指数分离出来,加入字典
for t in terms:
# 将末尾可能存在的空格删除
t = t.strip()
# 如果单项式不含变量,则直接加入字典
if 't' not in t:
d[0] = d.get(0, 0) + int(t)
else:
# 找到单项式中变量对应的指数
idx = t.find('t') + 1
if t[idx] == '^':
exp = int(t[idx+1:])
else:
exp = 1
# 找到单项式中系数
coef = int(t[:t.find('t')])
# 将同类项系数相加
d[exp] = d.get(exp, 0) + coef
# 按照指数从大到小重新拼接简化后的多项式
res = ''
for exp in sorted(d.keys(), reverse=True):
coef = d[exp]
# 如果系数为0,则跳过
if coef == 0:
continue
elif exp == 0:
# 如果指数为0,则只需输出系数,不要输出 't^0'
res += str(coef)
else:
# 否则需要输出指数和系数
res += str(coef) + 't^' + str(exp)
res += ' + '
# 删去末尾的 '+' 符号,返回简化后的多项式
return res[:-3]
调用 simplify_polynomial(poly)
函数,其中 poly
为待简化的多项式,返回值为简化后的多项式。
例如,输入 '9t4 + 7t - 45t3 + 10t'
,输出 '-45t^3 + 9t^4 + 17t'
。