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

实验内容:定义一个学生类,包含学号、姓名、平时成绩和考核成绩四个数据成员和以下成员方法:1)计算总评:总评成绩=平时成绩*30%+考核成绩*70%2)显示:在屏幕上按照“... 实验内容:
定义一个学生类,包含学号、姓名、平时成绩和考核成绩四个数据成员和以下成员方法:
1)计算总评:总评成绩 = 平时成绩*30% +考核成绩*70%
2)显示:在屏幕上按照“姓名 平时成绩 考核成绩”的格式显示自己的内容
类定义完成后,输入若干个学生的信息并创建类对象,然后按照学号的顺序依次将每个学生的信息存入一个文件中。
一、涉及的语法知识(用文字介绍编程所需的语法知识)
二、类定义代码
三、其他代码
实验题目:类与文件
实验要求:
1. 定义类
2. 定义并使用类对象
3. 打开和存取文件
实验内容:
定义一个学生类,包含学号、姓名、平时成绩和考核成绩四个数据成员和以下成员方法:
1)计算总评:总评成绩 = 平时成绩*30% +考核成绩*70%
2)显示:在屏幕上按照“姓名 平时成绩 考核成绩”的格式显示自己的内容
类定义完成后,输入若干个学生的信息并创建类对象,然后按照学号的顺序依次将每个学生的信息存入一个文件中。
一、涉及的语法知识(用文字介绍编程所需的语法知识)
二、类定义代码
三、其他代码
展开
 我来答
百度网友679eddd
2019-06-03
知道答主
回答量:10
采纳率:40%
帮助的人:4.2万
展开全部

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


# 引入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)
microroom
科技发烧友

2019-06-03 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1641万
展开全部
##注意:最左边每个=表示一个空格
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)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hy1397471
2019-06-03 · 知道合伙人软件行家
hy1397471
知道合伙人软件行家
采纳数:4714 获赞数:17154
15年数据库维护及数据库应用系统开发经验,从事零售业、服务业及财务管理类系统开发与维护。

向TA提问 私信TA
展开全部
这个要花点时间,有红包可能会帮你
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式