Python多项式输出

Python实现多项式输出

兄弟们!!这个多项式输出考虑的情况有点多,说一下我的思路:

对于多项式的输出,简化来说就是两项的输出:即第一项和第二项的输出
这里我假设:第一项+第二项 = 2x^3 + 4x^5
这里考虑 2 3 4 5 取不同的值的时候的情况:
情况比较多,大家可以看我代码后面的注释,我是用举例来说明的,非常详细。
直接上代码:

def print_polynomial(poly):#输出多项式
    i = 0 # 这个i用来记录这一项是第一项 i=0表示第一项
    str1 = '' #这个使用来拼接输出的多项式
    for x,y in poly: # x表示系数  y表示指数
        if x !=0: #系数!= 0 的时候才输出
            if i == 0: #这个是第一项
                i=i+1 #之后在输出的就不是第一项了
                # x == 1 x==-1  , x<0 和 x>1 是一种情况   6x^4 + 5x^5
                if x == 1: #如果系数 = 1    1x^6 + 5x^5 = x^6 + 5x^5
                    if y == 1: #如果指数 =1 则不必输出指数  x^1 + 5x^5 = x + 5x^5
                        str1 += "x"
                    elif y == 0 : #如果指数=0, x^0 + 5x^5 = 1 + 5x^5
                        str1 += "1"
                    else:  #其余情况 1x^6 + 5x^5 = x^6 + 5x^5
                        str1 += "x^"+str(y)
                elif x == -1 : #如果系数等于 -1 , -x^1 + 5x^5 = -x + 5x^5
                    if y == 1: #如果指数 =1    -x^1 + 5x^5 = -x + 5x^5
                        str1 += "-x"
                    elif y == 0 : #如果指数=0, -1x^0 + 5x^5 = -1 + 5x^5
                        str1 += "-1"
                    else:  #其余情况  -x^4 + 5x^5 = -x^4 + 5x^5
                        str1 += "-x^"+str(y)
                elif x < 0 or x>0 : # 6x^4 + 5x^5=6x^4+5x^5 或 -6x^4 + 5x^5 = -6x^4 + 5x^5
                    if y == 1: # 6x^1 + 5x^5=6x + 5x^5  或 -6x^1 + 5x^5 = -6x + 5x^5
                        str1 += str(x)+"x"
                    elif y == 0 : # 6x^0 + 5x^5=6 + 5x^5  或 -6x^0 + 5x^5 = -6 + 5x^5
                        str1 += str(x)
                    else:  #其余情况 6x^4 + 5x^5=6x^4 + 5x^5  或 -6x^4 + 5x^5 = -6x^4 + 5x^5
                        str1 += str(x)+"x^"+str(y)
            elif i!= 0: #不是第一项输出的时候
                # x > 0 的时候需要输出 + 号  6x^4 + 5x^5 = 6x^4 + 5x^5 这个需要输出+号
                #x < 0 的时候需要输出 - 号   6x^4 - 5x^5 = 6x^4 - 5x^5 这个需要输出-号
                if x == 1: #如果系数 = 1  6x^4 + 1x^5 = 6x^4 + x^5
                    if y == 1: #如果指数 =1 则不必输出指数  6x^4 + 1x^1 = 6x^4 + x
                        str1 += "+x"
                    elif y == 0 : #如果指数=0,则不必输出 6x^4 + 1x^0 = 6x^4 + 1
                        str1 += "+1"
                    else:  #  6x^4 + 1x^5 = 6x^4 + x^5
                        str1 += "+x^"+str(y)
                elif x == -1 : #x=-1 , 6x^4 -1x^5 = 6x^4 - x^5
                    if y == 1: # y=1 , 6x^4 -1x^1 = 6x^4 - x
                        str1 += "-x"
                    elif y == 0 : #如果指数=0,6x^4 -1x^0  = 6x^4 - 1
                        str1 += "-1"  # 1*x^0 =1
                    else:  #其余情况  6x^4 -1x^5 = 6x^4 - x^5
                        str1 += "-x^"+str(y)
                elif x < 0  : # 6x^4 - 5x^5 = 6x^4 - 5x^5 或 6x^4 + 5x^5 = 6x^4 + 5x^5
                    if y == 1: # 6x^4 - 5x^1 = 6x^4 - 5x 或 6x^4 + 5x^1 = 6x^4 + 5x
                        str1 += str(x)+"x"
                    elif y == 0 : # 6x^4 - 5x^0 = 6x^4 - 5 或 6x^4 + 5x^0 = 6x^4 + 5
                        str1 += str(x)
                    else:  # 6x^4 - 5x^4= 6x^4 - 5x^4 或 6x^4 + 5x^4 = 6x^4 + 5x^4
                        str1 += str(x)+"x^"+str(y)
                elif x > 0:
                    if y == 1: # 6x^4 - 5x^1 = 6x^4 - 5x 或 6x^4 + 5x^1 = 6x^4 + 5x
                        str1 += "+"+str(x)+"x"
                    elif y == 0 : # 6x^4 - 5x^0 = 6x^4 - 5 或 6x^4 + 5x^0 = 6x^4 + 5
                        str1 += "+"+str(x)
                    else:  # 6x^4 - 5x^4= 6x^4 - 5x^4 或 6x^4 + 5x^4 = 6x^4 + 5x^4
                        str1 += "+"+str(x)+"x^"+str(y)
    return str1
if __name__=="__main__":
    poly = [(0,6),(0,4),(5,3),(-1,3),(1,0)]
    str1 = print_polynomial(poly)
    print(str1)

说明:poly列表中的元素时元组类型,(0,6)表示 0x^6 ,前一项是系数,后一项是指数

poly = [(0,6),(0,4),(5,3),(-1,3),(1,0)]
    str1 = print_polynomial(poly)

总结

写这个多项式的输出,确实很麻烦,需要大家耐心一点看!!!我这个代码应该是考虑到了所有的情况,如果大家在测试的时候发现不对的情况,欢迎在下方留言,我看到之后会改进代码!!!欢迎大家批评指正!!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Champion.XL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值