2016年8月23日 星期二

python 程式設計50題測試範例-10

10、多項式A(x)B(x)(最高維數10)的相乘、相除、餘數


程式:
#coding:Big5

class poly:
    __a = [0]*20 #存放第一個輸入的多項式和運算結果
    __b = [0]*20#存放輸入的多項式
    __result = [0]*20#結果

    def __Input(self,f):
        n = input('依序輸入二項式的係數和指數(指數小於10):').split()
        for i in range(int(len(n)/2)):
            f[ int(n[2*i+1])] = int(n[2*i])
        self.__output(f)

    def __add(self,a,b):  #加法函數
        return [a[i]+b[i] for i in range(20)]

    def __minus(self,a,b):  #減法函數
            return [a[i]-b[i] for i in range(20)]

    def __mul(self,a,b):
        self.__result = [0]*20
        for i in range(10):#第一個迴圈:b分別於a[0]到a[9]相乘
            for j in range(10):  #第二個迴圈:b[j]*a[i]
                self.__result[i+j] = int(self.__result[i+j]) + int(a[i]*b[j])
        return self.__result

    def __output(self,a):#輸出多項式
          b = ''
          for i in range(20):
            if a[i]> 0:
                b = b+'+'+str(a[i])+'X^'+str(i)
            if a[i]<0:
                b = b+"-"+str(-a[i])+'X^'+str(i)
          print(b[1::])

    def control(self):
        print ("二項式運算:\n")
        self.__Input(self.__a)
        while True:
            operator = input('請輸入運算子(結束運算請輸入‘#’)')#self.Input(self.a)
            if operator =='#':
                return 0
            else:
                self.__b = [0]*20
                self.__Input(self.__b)
                self.__a = {'+':self.__add(self.__a,self.__b),'-':self.__minus(self.__a,self.__b),'*':self.__mul(self.__a,self.__b)}.get(operator)
                print ('計算結果:',end='')
                self.__output(self.__a)


print("10、多項式A(x)和B(x)(最高維數10維)的相乘、相除、餘數")

POLY = poly()    #初始化類
POLY.control()   #通過選取操作符選擇相應的運算



結果 :

10、多項式A(x)和B(x)(最高維數10維)的相乘、相除、餘數
二項式運算:

依序輸入二項式的係數和指數(指數小於10):1 2 3 4 5 6 7 8 9 9
1X^2+3X^4+5X^6+7X^8+9X^9
請輸入運算子(結束運算請輸入‘#’)*
依序輸入二項式的係數和指數(指數小於10):1 1 3 0
3X^0+1X^1
計算結果:3X^2+1X^3+9X^4+3X^5+15X^6+5X^7+21X^8+34X^9+9X^10
請輸入運算子(結束運算請輸入‘#’)#
>>> 

沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...