夜光序言:
其实爱一直都在,只是总被忘记如何表达,我们以为越长大会越冷静、越会隐藏感情,但其实不是,越成熟会对这个世界越温柔,因为体会了苦难,所以懂得了温柔
正文:面向对象的程序设计
真实世界的对象
特征:状态和行为。
比如:猫
状态:名字、颜色、品种
行为:喵叫、摇尾巴、捉老鼠
学程序,就要深入研究思想
真实世界对象
这个对象有怎样的状态?
这个对象具有什么行为?
台灯
状态:开、关
行为:打开、关闭
台式收音机
状态:开,关,当前音量,当前频道
行为:打开,关闭,增加音量,减少音量,搜索,扫描和调音
类:某种类型集合的描述。举例:人
属性
类本身的一些特性,如名字、身高和体重等属性
属性具体值则会根据每个人的不同而不同;
方法
类所能实现的行为,如吃饭、走路和睡觉等方法。
类的定义
_init_构造函数: 初始化对象的各属性
_del_析构函数:销毁对象
class classname[(父类名)]:[成员函数及成员变量]
举例:GPA计算
学生课程评估:学分和平均绩点GPA。
绩点计算以GPA 4分为准则
一门课程3学分
同学得了“A”
3*4=12量分数。
记录学生成绩文件students.dat。编写程序,通过读取文件找出平均绩点最高的学生,然后输出他的名字、学分和平均绩点。
定义Student类
GPA算法描述为
获取文件名
打开文件
设置第一个学生为best
对文件中的每一个学生
if s.gpa()> best.gpa()
设置s为best
打印best学生的信息
程序运行结果
# 夜光:找到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()