📜  简化 9t4 + 7t – 45t3 + 10t(1)

📅  最后修改于: 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'