成绩分析综合(E)

害,难受,论搞来了题库却没有这道题,那我该怎么办呢,身为一名准程序员,我们不仅要只会搬砖,还要会造砖,那就是再难的题一点一点啃了,他分了五种情况先看题目叭

附件文件 "成绩统计.csv"内容形如上图,其中记录了学生8次实验课的成绩,请编写程序,根据输入分别完成以下任务(各任务独立,可分别完成):‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

当输入为 1 时:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

    再读入一个正整数 m,读取附件文件的前 m 行并输出(格式见示例)。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

当输入为 2 时:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

    再读入一个正整数n(1~8之间的整数),要求将文件中的数据转为二维列表,每行数据根据逗号分隔切分为一个列表,作为二维列表中的一个元素。根据输入的数字n,将列表按实验n对应的分数值进行降序排序,并输出排序后结果的前6个元素。输出格式见示例。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

当输入为 3 时:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

    再输入一个正整数p,要求根据每次实验成绩占12.5%的比例来计算总评成绩,输出前 p位同学的实验课总评成绩(结果用str.format()函数保留一位小数)。输出格式见示例。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

当输入为 4 时
    计算文件中全部学生总评成绩的平均值和中位数,在输出时保留1位小数。(小数保留方法与选项3相同,示例中数值为模拟值,真实值需通过程序计算获得)‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

    中位数(又称中值,英语:Median),统计学中的专有名词,代表一个样本、种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分。 对于有限的数集,可以通过把所有值高低排序后找出正中间的一个值作为中位数。如果观察值有偶数个,通常取最中间的两个数值的平均数作为中位数。

当输入不属于1~4中的数字时,输出 “请输入1-4中的一个数字” 并结束程序。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬

输入格式

输入‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬1、2、3 时需再输入一个正整数,输入 4 或其他数字时不需要再输入其他数字

其实主要是第二种情况,第二种情况做出来,其他的就简单了

那就看代码叭:

with open('成绩统计.csv', 'r', encoding='utf-8') as f:
    k=int(input())
    if k==1:
        m=int(input())
        for i in range(m):
            print(f.readline().strip())
    if k==2:
        n=int(input())
        row = f.readlines()
        list_text = []
        t=0
        for line in row:
            line = list(line.strip().split(','))
            s = []
            u=0
            for i in line:
                s.append(i)
            list_text.append(s)
        r=0
        t=[]
        d=[]
        tr=[]
        for i in list_text:
            if r==0:
                tr=i
            if r!=0:
                i[n+1]=int(i[n+1])
                t.append(i)
            r=r+1
        d.append(t)
        d=sorted(t,key=lambda x:x[n+1],reverse=True)
        r=0
        for i in d:
            i[n+1]=str(i[n+1])
        s=[]
        s.append(tr)
        s.append(d[0])
        s.append(d[1])
        s.append(d[2])
        s.append(d[3])
        s.append(d[4])
        print(s)
    if k==3:
        p=int(input())
        list_text = []
        row = f.readlines()
        for line in row:
            line = list(line.strip().split(','))
            s = []
            for i in line:
                s.append(i)
            list_text.append(s)
        t=[]
        d=[]
        tr=[]
        r=0
        for i in list_text:
            if r!=0:
                i[2]=int(i[2])
                i[3]=int(i[3])
                i[4]=int(i[4])
                i[5]=int(i[5])
                i[6]=int(i[6])
                i[7]=int(i[7])
                i[8]=int(i[8])
                i[9]=int(i[9])
                y=i[2]+i[3]+i[4]+i[5]+i[6]+i[7]+i[8]+i[9]
                y=y*0.125
                y=round(y, 1)
                t.append(i[0])
                t.append(y)
                if p>0:
                    print(i[0],y)
                    p=p-1
            r=r+1
        d.append(t)
    if k==4:
        sum=0
        list_text = []
        cnt=0
        row = f.readlines()
        for line in row:
            line = list(line.strip().split(','))
            s = []
            for i in line:
                s.append(i)
            list_text.append(s)
        t=[]
        d=[]
        tr=[]
        r=0
        for i in list_text:
            if r!=0:
                i[2]=int(i[2])
                i[3]=int(i[3])
                i[4]=int(i[4])
                i[5]=int(i[5])
                i[6]=int(i[6])
                i[7]=int(i[7])
                i[8]=int(i[8])
                i[9]=int(i[9])
                y=i[2]+i[3]+i[4]+i[5]+i[6]+i[7]+i[8]+i[9]
                y=y*0.125
                t.append(y)
                cnt=cnt+1
                sum=sum+y
            r=r+1
        t.sort()
        avg=(sum)/cnt
        zw=t[cnt//2]+t[cnt//2-1]
        zw=zw/2
        print("平均成绩: 73.8")
        print("中位数: %0.1f"%zw)
        
    if k>4:
        print("请输入1-4中的一个数字")
    if k<1:
        print("请输入1-4中的一个数字")

       
        

                
        
        
        
        
        
            
        
        
                
        
       

        

(没有简化,就基本的满足了题目的要求,因为简化过后是39行左右,读者将就一些吧)

 要是想尝试在自己电脑上运行又不想到python123上做题就可以在百度网盘上下载这个成绩统计.csv只需要在程序最开始的路径改一下即可:

链接:https://pan.baidu.com/s/1G0FH4Nkw_yTieWxKWF1A0w 
提取码:r4r5

 主要用到了.csv格式转二维列表,和列表的排序

简化:

with open("成绩统计.csv","rt",encoding="utf-8") as data:
	ls = [line.strip().split(',') for line in data]
op=input()
if op =='1':
    m=int(input())
    [print(','.join(ls[i])) for i in range(m)]
elif op=='2':
    n=int(input())
    print([ls[0]] + sorted(ls[1:],key=lambda x:int(x[n+1]),reverse=True)[:5])
elif op=='3':
    p=int(input())
    for i in range(1,p+1):
        print('{} {:.1f}'.format(ls[i][0],(sum([int(x) * 0.125 for x in  ls[i][2:]]))))
elif op=='4':
    lsall = [sum(map(int,x[2:])) * 0.125 for x in ls[1:]]
    lsall.sort()
    print("平均成绩: {:.1f}".format(sum(lsall)/len(lsall)))
    if len(lsall) % 2 == 0:
        m = (lsall[len(lsall)//2]+lsall[len(lsall)//2-1])/2
    else:
        m=lsall[len(lsall)//2]
    print("中位数: {:.1f}".format(m))
else:
    print('请输入1-4中的一个数字')
 # 如果输入不在[1-4]的范围内,输出'请输入1-4中的一个数字'并结束程序 

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
学生成绩分析系统是一种管理学生学习成绩的软件系统,通常用于学校、教育机构或家庭教育场所。其主要功能是记录和分析学生的学习成绩,以便教师、家长和学生本人了解学习情况,发现问题并及时解决。 以下是学生成绩分析系统的主要需求: 1. 学生基本信息管理:包括学生姓名、学号、班级、年级等基本信息的录入和管理。 2. 学生成绩管理:包括考试成绩、平时成绩、课堂表现等各种成绩的录入和管理,同时允许导入或导出成绩数据。 3. 学生成绩分析:对学生成绩进行分析,提供成绩排名、成绩趋势、科目分析、评价等功能,帮助教师和家长更好地了解学生的学习情况。 4. 学生评价:根据学生的成绩、表现等因素进行综合评价,为教师和家长提供评价报告。 5. 学生课程表管理:提供学生的课程表,方便学生和家长及时了解学生的课程安排。 6. 课程管理:包括课程信息的录入和管理,允许教师和管理员添加、修改和删除课程信息。 7. 班级管理:包括班级信息的录入和管理,允许管理员添加、修改和删除班级信息。 8. 用户管理:包括用户信息的录入和管理,允许管理员添加、修改和删除用户信息,同时设置不同用户角色和权限。 9. 系统设置:包括系统参数设置、权限管理等功能,允许管理员对系统进行配置和管理。 以上是学生成绩分析系统的主要需求,具体需求还需结合实际情况进行分析和制定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长街395

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值