Weiwei_Pig_ 2022-04-21 16:20 采纳率: 100%
浏览 117
已结题

如何便携以下程序111111

建立基类Base,含属性:name,age、sex

#建立成绩类Score,含 math,Chinese,english,含方法:总成绩totalScore,平均成绩avgScore

#建立学生类Stu,继承base类,含属性:major,grade和score来自Score类,含方法:

循环输入3个不同年级8名学生相关信息,并存入文件stuscore.txt

#从stuscore.txt中提取学生成绩,并按照年级、科目计算学生平均成绩,并存入文件stuScorestat.txt如下:

grade,avgMath,avgChinese,avgEnglish

1,83,67,76

2,76,43,89

3,89,34,66

从文件stuScorestat.txt文件中读取数据存入列表

#画折线图Line,横坐标为grade,纵坐标为,avgMath,avgChinese,avgEnglish

#画直方图,横坐标为grade,纵坐标为,avgMath,avgChinese

把图保存为png文件。

  • 写回答

3条回答 默认 最新

  • 关注

    写好类之后读写文件,再画图

    img

    img

    class Base:
        def __init__(self, name,age,sex):
            self.name = name
            self.age = age
            self.sex = sex
     
    class Score:
        def __init__(self, math,chinese,english):
            self.math = math
            self.chinese = chinese
            self.english = english
        def totalScore(self):
            return self.math + self.chinese + self.english
        def avgScore(self):
            return (self.math + self.chinese + self.english)/3
     
    class Stu(Base):
        def __init__(self, major,grade, name,age,sex,math,chinese,english):
            super().__init__(name,age,sex)
            
            self.major = major
            self.grade = grade
            self.score = Score(math,chinese,english)
    s = []
    with open("stuscore.txt","w") as f:
        for i in range(8):
            t=input()
            t1=t.split(' ')
            j=Stu(t1[0],t1[1],t1[2],t1[3],t1[4],t1[5],t1[6],t1[7])
            s.append(j)
            f.write(t)
            f.write('\n')
    with open("stuScorestat.txt", "w") as f:
        m1,m2,m3,c1,c2,c3,e1,e2,e3,n1,n2,n3=0,0,0,0,0,0,0,0,0,0,0,0
        for i in s:
            if i.grade=='1':
                m1+=int(i.score.math)
                c1+=int(i.score.chinese)
                e1+=int(i.score.english)
                n1+=1
            elif  i.grade=='2':
                m2+=int(i.score.math)
                c2+=int(i.score.chinese)
                e2+=int(i.score.english)
                n2+=1
            else:
                m3+=int(i.score.math)
                c3+=int(i.score.chinese)
                e3+=int(i.score.english)
                n3+=1
        t='1'+','+str(round(m1/n1,2))+','+str(round(c1/n1,2))+','+str(round(e1/n1,2))
        f.write(t)
        f.write('\n')
        t='2'+','+str(round(m2/n2,2))+','+str(round(c2/n2,2))+','+str(round(e2/n2,2))
        f.write(t)
        f.write('\n')
        t='3'+','+str(round(m3/n3,2))+','+str(round(c3/n3,2))+','+str(round(e3/n3,2))
        f.write(t)
        f.write('\n')
    s=[]
    with open("stuScorestat.txt", "r") as f:
        for i in f.readlines():
            i=str(i).split('\n')[0]
            s.append(i)
        print(s)
    
    import matplotlib.pyplot as plt
    
    x=['0','1','2']
    y1=[float(s[0].split(',')[1]),float(s[0].split(',')[2]),float(s[0].split(',')[3])]
    y2=[float(s[1].split(',')[1]),float(s[1].split(',')[2]),float(s[1].split(',')[3])]
    y3=[float(s[2].split(',')[1]),float(s[2].split(',')[2]),float(s[2].split(',')[3])]
    plt.plot(x,y1,label='avgMath',color='r')
    plt.plot(x,y2,label='avgChinese',color='b')
    plt.plot(x,y3,label='avgEnglish',color='y')
    plt.xlabel('grade')
    plt.ylabel('avescore')
    plt.legend()
    plt.savefig('1.png')
    plt.show()
    
    
    x=['0','1','2']
    y1=[80,90,90]
    y2=[60,60,60]
    n1 = list(range(len(x)))
    n2 = [i+0.2 for i in n1]
    
    plt.bar(n1,y1,width=0.2,label='avgMath')
    plt.bar(n2,y2,width=0.2,label='avgChinese')
    
    plt.xlabel('grade')
    plt.ylabel('avescore')
    
    plt.legend()
    plt.savefig('2.png')
    plt.show()
    
    
    
    
    '''
    1 1 1 1 1 85 96 80
    1 2 1 1 1 88 93 80
    1 3 1 1 1 89 94 80
    1 1 1 1 1 80 96 80
    1 2 1 1 1 88 97 80
    1 3 1 1 1 89 90 81
    1 1 1 1 1 80 90 70
    1 2 1 1 1 88 90 90
    
    '''
        
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月2日
  • 已采纳回答 4月24日
  • 赞助了问题酬金5元 4月21日
  • 创建了问题 4月21日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度