Python面向對象的程序設計詳情

1. 設計一個圓類,包括圓心位置、半徑、顏色等屬性。編寫構造方法, 計算周長和面積。

import math
class Circle:
    def __init__(self,o,r,colour):
        self.o = o
        self.r = r
        self.colour = colour
    def length(self): #周長
        C = math.pi*self.r*2
        return C
    def area(self):   #面積
        S = math.pi*self.r**2
        return S
 
if __name__ == "__main__":
    r=eval(input("請輸入半徑:"))
    circle = Circle((0,0),r,'blue') #坐標、半徑、顏色
    C = circle.length()
    S = circle.area()
    print('圓周長為:{:.2f}'.format(C))
    print('圓面積為:{:.2f}'.format(S))

 2. 設計一個描述自由落體運動的類,要求能獲得任意時刻的速度及位移,並進行測試。已知重力加速度為 9.8m/s。

class Free:
    def __init__(self,t): 
        self.t = t
    def getv(self): #速度函數
        v=9.8*self.t
        return v
    def getx(self): #位移函數
        x=0.5*9.8*self.t**2
        return x
    
if __name__ == "__main__":
    t=eval(input("請輸入時刻t:"))
    f=Free(t) #調用
    print("t={} 時刻的".format(t),end='')
    print("速度為:{:.2f}".format(f.getv()))
    print("t={} 時刻的".format(t),end='')
    print("位移為:{:.2f}".format(f.getx()))

3. 為二次方程式 ax²+bx+c=0 設計一個名為 Equation 的類,這個類包括:

  • 代表 3 個系數的成員變量 a、b、c;
  • 一個參數為 a、b、c 的構造方法;
  • 一個名為 getDiscriminant1 的方法返回判別式的值;
  • 一個名為 getRoot1 getRoot2 的方法返回等式的兩個根, 如果判別式為負,這些方法返回0。
import math
class Equation:
    def __init__(self,a,b,c):
        self.a = a
        self.b = b
        self.c = c
    def getDiscriminant1(self):  #判別式
        d=(self.b)**2 -(4*self.a*self.c)
        return d
    def getRoot1(self):
        if self.getDiscriminant1()>=0:
            x1=(-self.b+math.sqrt(self.getDiscriminant1()))/2*self.a
            return x1
        else:
            return 0
    def getRoot2(self):
        if self.getDiscriminant1()>=0:
            x2=(-self.b+math.sqrt(self.getDiscriminant1()))/2*self.a
            return x2
        else:
            return 0
    
if __name__ == "__main__":
    a=eval(input("請輸入系數a:"))
    b=eval(input("請輸入系數b:"))
    c=eval(input("請輸入系數c:"))
    f=Equation(a,b,c)
    print("判別式:",f.getDiscriminant1())
    print("根1:",f.getRoot1())
    print("根2:",f.getRoot2())

4. 設計一個二維向量類,實現向量的加法、減法及向量與標量的乘法和除法運算,其中要求輸入是元組。

class Vector: 
    def __init__(self,a,b):
        self.a = a
        self.b = b
    def jia(self):
        c1 = (self.a[0] + self.b[0])
        c2 = (self.a[1] + self.b[1])
        return (c1,c2)
    def jian(self):
        c1 = (self.a[0] - self.b[0])
        c2 = (self.a[1] - self.b[1])
        return (c1,c2)
    def diancheng(self):
        c1 = (self.a[0] * self.b[0])
        c2 = (self.a[1] * self.b[1])
        return c1+c2
    #向量無除法
    
if __name__ == "__main__":
    a=eval(input("請輸入向量a:"))
    b=eval(input("請輸入向量b:"))
    f=Vector(a,b)
    print("  加:",f.jia())
    print("  減:",f.jian())
    print("點乘:",f.diancheng())

 5. 設計一個課程類,包括課程編號、課程名稱、任課教師、上課地點 等屬性,把上課地點變量設為私有的,增加構造方法和顯示課程信息的方法。

class Course: 
    def __init__(self,Cno,Cname,teacher,local):
        self.Cno = Cno
        self.Cname = Cname
        self.teacher = teacher
        self.__local =local #把上課地點變量設為私有的
    def information(self):
        print("課程編號:",self.Cno)
        print("課程名稱:",self.Cname)
        print("任課教師:",self.teacher)
        print("上課地點:",self.__local)
 
if __name__ == "__main__":
    f=Course('NO.','what','who','where')
    f.information()

6. 設計一個整形數組的封裝類,要求實現下列功能:

  • 顯示全部數組數據
  • 顯示從某位置開始的一段連續數組數據。
import random
class List:
    def __init__(self,lis):
        self.__lis=lis
    def quanbu(self):     #全部數組數據
        return self.__lis
    def bufen(self,id):   #從部分位置開始的一段連續數組數據
        return self.__lis[id:]
 
f=List([random.randint(1,51) for i in range(20)])  #設置數組為20個1-50的隨機數組合
print("顯示全部數組數據:",f.quanbu())  
random_index = random.randint(0,21)  #隨機選取從某一位置開始的索引號
print("顯示從<第{}>位置開始的一段連續數組數據:".format(random_index),f.bufen(random_index))

到此這篇關於Python面向對象的程序設計詳情的文章就介紹到這瞭,更多相關Python面向對象的程序設計內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: