花了不少时间写的,挺详细的,希望采纳。
# 引入operator模块,用于给集合排序
import operator
# 单行注释用"#",多行注释用 '''注释内容'''
# 定义一个学生类,类名用驼峰命名法
class Student:
# 构造方法,可用来创建对象格式 def __init__(self,参数) 参数个数自已定义,类型系统自动识别
def __init__(self, stu_no, name, base_score, exam_score):
self.stu_no = stu_no # 对象属性赋值
self.name = name
self.base_score = base_score
self.exam_score = exam_score
# 定义计算总评函数 定义函数格式 def 函数名(self, 参数),self代表本对象
def get_last_score(self):
# return指定返回值,无return表示此函数无返回值
return self.base_score * 0.3 + self.exam_score * 0.7
# 类似toString方法,打印对象时,调用对象的该方法
def __str__(self):
return '学号:' + self.stu_no + '姓名:' + self.name + ",平时成绩: " + str(self.base_score) + ",考核成绩:" + str(self.exam_score)
# 定义函数,将对象集合写到文件,上面三个函数有缩进,属于Student类的函数,本函数属于全局函数
def print_to_file(path, stu_arr):
# 打开文件,操作完成后自动关闭文件
with open(path, 'w') as file:
# 调用operator给集合排序
sort_attr = operator.attrgetter('stu_no') # 指定排序属性
stu_arr.sort(key=sort_attr) # 排序
for stu in stu_list:
str = stu.__str__() # 将对象转换为字符串
file.write(str + '\r\n') # 将字符串写入文件
# 主函数,运行的入口
if __name__ == '__main__':
# 创建几个学生对象,按__init__的顺序输入参数
s1 = Student('1001', 'zhangsan', 31, 69)
s2 = Student('1003', 'wangwu', 28, 32)
s3 = Student('1004', 'zhaoliu', 77, 78)
s4 = Student('1002', 'lisi', 19, 89)
# 创建集合
stu_list = [s1, s2, s3, s4]
# 文件路径
f = 'd:\\aaa.txt'
print_to_file(f, stu_list)
##注意:最左边每个=表示一个空格
class Student:
====def __init__(self,xh,xm,pshchj,khchj):
========self.xh=xh
========self.xm=xm
========self.pshchj=float(pshchj)
========self.khchj=float(khchj)
========self.jszp()
##====计算总评
====def jszp(self):
========self.zp=self.pshchj*0.3+self.khchj*0.7
##====显示
====def show(self):
========print("姓名:{0},平时成绩:{1:f},考核成绩:{2:f}".format(self.xm,round(self.pshchj,1),round(self.khchj,1)))
stus=[]
filename="保存学生信息.txt"
##输入所有学生的信息
i,n=1,int(input("请输入学生的数量:"))
while i<=n:
====stus.append(Student(*(input("请输入第{0:d}个学生的学号,姓名,平时成绩,考核成绩(空格分割):\n".format(i)).split())))
====i+=1
##显示所有学生的信息
print("你输入的所有学生的信息:")
for stu in stus:
====stu.show()
====
##按学生学号排序学生列表
stus.sort(key=lambda stu : stu.xh)
##保存所有学生的信息到文件
ft="{0:<10}{1:<8}{2:<12f}{3:<12f}{4:f}\n"
stu_info=""
for stu in stus:
====stu_info+=ft.format(stu.xh,stu.xm,stu.pshchj,stu.khchj,stu.zp)
with open(filename,"w") as fo:
====fo.write(stu_info)
这个要花点时间,有红包可能会帮你