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!