定义一个学生类,包含学号、姓名、平时成绩和考核成绩四个数据成员和以下成员方法(用Python语言):

2024-12-03 01:04:30
推荐回答(3个)
回答1:

花了不少时间写的,挺详细的,希望采纳。


# 引入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)

回答2:

##注意:最左边每个=表示一个空格
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)

回答3:

这个要花点时间,有红包可能会帮你