【20171014】python_語言設計(8)面向物件程式設計
阿新 • • 發佈:2019-01-14
1.計算GPA,返回最高GPA同學
# 找到GPA最高的學生 class Student: def __init__(self, name, hours, qpoints): self.name = name self.hours = float(hours) self.qpoints = float(qpoints) def getName(self): return self.name def getHours(self): return self.hours def getQPoints(self): return self.qpoints def gpa(self): return self.qpoints/self.hours def makeStudent(infoStr): name, hours, qpoints = infoStr.split("\t") return Student(name, hours, qpoints) def main(): # 開啟輸入檔案 filename = input("Enter name the grade file: ") infile = open(filename, 'r') # 設定檔案中第一個學生的記錄為best best = makeStudent(infile.readline()) # 處理檔案剩餘行資料 for line in infile: # 將每一行資料轉換為一個記錄 s = makeStudent(line) # 如果該學生是目前GPA最高的,則記錄下來 if s.gpa() > best.gpa(): best = s infile.close() # 列印GPA成績最高的學生資訊 print("The best student is:", best.getName()) print("hours:", best.getHours()) print("GPA:", best.gpa()) if __name__ == '__main__': main()
2.鉛球位置更新
from math import sin, cos, radians class Projectile: def __init__(self, angle, velocity, height): #根據給定的發射角度、初始速度和位置建立一個投射體物件 self.xpos = 0.0 self.ypos = height theta = radians(angle) self.xvel = velocity * cos(theta) self.yvel = velocity * sin(theta) def update(self, time): #更新投射體的狀態 self.xpos = self.xpos + time * self.xvel yvell = self.yvel - 9.8 * time self.ypos = self.ypos + time * (self.yvel + yvell) / 2.0 self.yvel = yvell def getY(self): #返回投射體的角度 return self.ypos def getX(self): #返回投射體的距離 return self.xpos
3.面向物件程式設計的特點:封裝、多型和繼承;支援程式碼複用。