如何便携以下程序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文件。

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

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

'''
    


三个类参考:

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)

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632