#通过读取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
程序运行结果如下: