#通过读取student.txt文件,找出平均绩点最高的学生然后输出他的名字、学分和平均绩点
#class classname[(父类名)]:[成员函数及成员变量]
#__init__构造函数:初始化对象的各属性
#__del__析构函数:销毁对象
举例
记录学生成绩的文件student.txt
编写程序,通过读取student.txt,找出平均绩点最高的学生,然后输出他的名字,学分和平均绩点
关于此处 self的理解:
1.self代表类的实例,而非类
2.Python中的self用于类的方法中,不可省略,但可以换成其他自己喜欢的词
3.同一个类中调用其他的方法时需要加self
4.一个独立的函数不需要加上self参数,当然,独立的函数加上self也不影响,只是没有必要
程序完整代码如下:
1 #通过读取student.txt文件,找出平均绩点最高的学生然后输出他的名字、学分和平均绩点
2 #class classname[(父类名)]:[成员函数及成员变量]
3 #__init__构造函数:初始化对象的各属性
4 #__del__析构函数:销毁对象
5 class student: #创建一个student类
6 def __init__(self,name,hours,qpoints):#通过构造函数初始化内部变量,并保存这些信息。构造函数可以接收float\int\str类型 的参数
7 self.name=name
8 self.hours=float(hours)#将hours变量强制转化成float类型,方便后面的计算
9 self.qpoints=float(qpoints)
10 #这个类应该能够获得信息,所以定义一系列获得信息的方法如下,这些方法允许程序获得一条记录
11 def getname(self):
12 return self.name
13
14 def gethours(self):#通过这个方法获得学分
15 return self.hours
16
17 def getqpoints(self):#通过这个方法获得量分数
18 return self.qpoints
19
20 def gpa(self):#通过这个方法算出绩点
21 return self.qpoints/self.hours
22
23 def makestudent(infostr):#定义一个函数makestudent(),将student.txt文件中某行的信息赋值给name,hours,qpoints三个变量
24 name,hours,qpoints=infostr.split("\t")
25 return student(name,hours,qpoints)
26
27
28 def main():
29 #打开输入的文件
30 filename=input("Entrt name the grade file: ")
31 infile=open(filename,'r')
32 #设置文件中第一个学生的记录为best
33 best=makestudent(infile.readline())
34 #处理文件剩余行数据
35 for line in infile:
36 #将每一行数据转换为一个记录
37 s=makestudent(line)
38 #如果该学生是目前GPA最高的,则记录下来
39
40 if s.gpa()>best.gpa():
41 best=s
42 infile.close()#关闭文件
43 #打印GPA成绩最高的学生信息
44 print("The best student is :",best.getname())
45 print("hours:",best.gethours())
46 print("GPA:",best.gpa())
47
48 if __name__=="__main__":
49 main()
50
程序运行结果如下: