https://blog.csdn.net/u010551600/article/details/79126911
该程序的作用是找到studet.txt文件中,GPA最高的那名同学,并打印出他的信息。
程序运行的结果是:
首先建立一个student.txt文件,里面存储的是学生的信息
zhangsan 127 228
lisi 100 400
wangwu 18 41.5
maliu 48.5 155
sunqi 37 125.33
#定义一个类,类的名字为Student.在__init__函数中self为对象本身,name、hours、qpoints为函数的处理所面对的对象。
#__init__函数的作用是初始化对象
#接下来定义getName函数——返回self.name对象
#getHour函数——返回self.hours对象
#getQpoints函数——返回self.qpoints对象
#gpa函数——返回self.qpoints/self.hours对象
#所以,一旦调用这些函数,将返回对应的对象
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
#定义一个名为makeStudent的函数
#用split函数将一个字符串分裂成多个字符串组成的列表。split()不带参数时,以空格进行分割,当带参数时,以该参数进行分割。
#当调用该函数时,用split函数分裂成3个部分,每一部分分别对应name、hours和qpoints.并把这些值进行返回。
def makeStudent(infoStr):
name,hours,qpoints=infoStr.split(" ")
return Student(name, hours, qpoints)
#定义主函数
#把student.txt文件映射到filename这个变量下面。打开之后的filename文件,再映射到infile变量下面。
#调用makeStudent函数(调用makeStudent函数之后返回的是3部分,分别对应name、hours和qpoints)并把返回值映射到best这个字符串之下。
#readline函数的作用是,每次读出一行内容,所以best里存放的是student中第一个学生的信息。
#for line in infile——对剩余的学生的信息进行处理,用if语句和第一个信息进行对比,如果大于第一个的话,则把它赋值给best.
#close函数,close()用于关闭一个已经打开的文件,使用close()方法关闭文件是一个好的习惯。
#print函数:print(“the best student is:”,best.getHours()是在best这个对象下调用getHours这个函数。
def main():
filename="student.txt"
infile=open(filename,'r')
best=makeStudent(infile.readline())
for line in infile:
s=makeStudent(line)
if s.gpa()>best.gpa():
best=s
infile.close()
print("The best student is:",best.getName())
print("hours:",best.getHours())
print("GPA:",best.gpa())
#执行该模块中的函数
#方法是:用一个if name=="main"这个语句
if __name__=='__main__':
main()