# -*- coding:utf-8 -*- import csv import matplotlib.pyplot as plt # 设置字体 plt.style.use('ggplot') def python(): interval1 = 0 interval2 = 0 interval3 = 0 with open("Python 成绩降序表.csv", "r", encoding="utf-8") as file: reader = csv.reader(file) column = [row[3] for row in reader] python = list(column) del python[0] for i in range(len(python)): if 70 < eval(python[i]) <= 80: interval1 += 1 if 80 < eval(python[i]) <= 90: interval2 += 1 if 90 < eval(python[i]) <= 100: interval3 += 1 # 横坐标列表 interval = ['70-80', '80-90', '90-100'] # 纵坐标列表 intervalNum = [interval1, interval2, interval3] plt.title('Python') # 表名 plt.bar(x=interval, height=intervalNum, color='steelblue', alpha=0.8) # 柱状样式 # 合成元组进行输出具体数据(可不要) for x1, yy in zip(interval, intervalNum): plt.text(x1, yy + 1, str(yy), ha='center', va='bottom', fontsize=20, rotation=0) # y轴的区间(传入区间) plt.ylim((0, 40)) # 显示图表 plt.show() def html(): interval1 = 0 interval2 = 0 interval3 = 0 with open("计算机导论成绩降序表.csv", "r", encoding="utf-8") as file: reader = csv.reader(file) column = [row[3] for row in reader] html = list(column) del html[0] for i in range(len(html)): if 70 < eval(html[i]) <= 80: interval1 += 1 if 80 < eval(html[i]) <= 90: interval2 += 1 if 90 < eval(html[i]) <= 100: interval3 += 1 interval = ['70-80', '80-90', '90-100'] intervalNum = [interval1, interval2, interval3] plt.title('Computer Introduction') plt.bar(x=interval, height=intervalNum, color='steelblue', alpha=0.8) for x1, yy in zip(interval, intervalNum): plt.text(x1, yy + 1, str(yy), ha='center', va='bottom', fontsize=20, rotation=0) plt.ylim((0, 40)) plt.show() def math(): interval1 = 0 interval2 = 0 interval3 = 0 with open("离散数学成绩降序表.csv", "r", encoding="utf-8") as file: reader = csv.reader(file) column = [row[3] for row in reader] math = list(column) del math[0] for i in range(len(math)): if 70 < eval(math[i]) <= 80: interval1 += 1 if 80 < eval(math[i]) <= 90: interval2 += 1 if 90 < eval(math[i]) <= 100: interval3 += 1 interval = ['70-80', '80-90', '90-100'] intervalNum = [interval1, interval2, interval3] plt.title('Math') plt.bar(x=interval, height=intervalNum, color='steelblue', alpha=0.8) for x1, yy in zip(interval, intervalNum): plt.text(x1, yy + 1, str(yy), ha='center', va='bottom', fontsize=20, rotation=0) plt.ylim((0, 40)) plt.show() def data(): interval1 = 0 interval2 = 0 interval3 = 0 with open("数据结构成绩降序表.csv", "r", encoding="utf-8") as file: reader = csv.reader(file) column = [row[3] for row in reader] math = list(column) del math[0] for i in range(len(math)): if 70 < eval(math[i]) <= 80: interval1 += 1 if 80 < eval(math[i]) <= 90: interval2 += 1 if 90 < eval(math[i]) <= 100: interval3 += 1 interval = ['70-80', '80-90', '90-100'] intervalNum = [interval1, interval2, interval3] plt.title('Data calMethture') plt.bar(x=interval, height=intervalNum, color='steelblue', alpha=0.8) for x1, yy in zip(interval, intervalNum): plt.text(x1, yy + 1, str(yy), ha='center', va='bottom', fontsize=20, rotation=0) plt.ylim((0, 40)) plt.show() def c(): interval1 = 0 interval2 = 0 interval3 = 0 with open("C语言成绩降序表.csv", "r", encoding="utf-8") as file: reader = csv.reader(file) column = [row[3] for row in reader] c = list(column) del c[0] for i in range(len(c)): if 70 < eval(c[i]) <= 80: interval1 += 1 if 80 < eval(c[i]) <= 90: interval2 += 1 if 90 < eval(c[i]) <= 100: interval3 += 1 interval = ['70-80', '80-90', '90-100'] intervalNum = [interval1, interval2, interval3] plt.title('C Program') plt.bar(x=interval, height=intervalNum, color='steelblue', alpha=0.8) for x1, yy in zip(interval, intervalNum): plt.text(x1, yy + 1, str(yy), ha='center', va='bottom', fontsize=20, rotation=0) plt.ylim((0, 40)) plt.show() def java(): interval1 = 0 interval2 = 0 interval3 = 0 with open("Java 成绩降序表.csv", "r", encoding="utf-8") as file: reader = csv.reader(file) column = [row[3] for row in reader] java = list(column) del java[0] for i in range(len(java)): if 70 < eval(java[i]) <= 80: interval1 += 1 if 80 < eval(java[i]) <= 90: interval2 += 1 if 90 < eval(java[i]) <= 100: interval3 += 1 interval = ['70-80', '80-90', '90-100'] intervalNum = [interval1, interval2, interval3] plt.title('Java Programming') plt.bar(x=interval, height=intervalNum, color='steelblue', alpha=0.8) for x1, yy in zip(interval, intervalNum): plt.text(x1, yy + 1, str(yy), ha='center', va='bottom', fontsize=20, rotation=0) plt.ylim((0, 40)) plt.show() def calMeth(): interval1 = 0 interval2 = 0 interval3 = 0 with open("算法导论成绩降序表.csv", "r", encoding="utf-8") as file: reader = csv.reader(file) column = [row[3] for row in reader] calMeth = list(column) del calMeth[0] for i in range(len(calMeth)): if 70 < eval(calMeth[i]) <= 80: interval1 += 1 if 80 < eval(calMeth[i]) <= 90: interval2 += 1 if 90 < eval(calMeth[i]) <= 100: interval3 += 1 interval = ['70-80', '80-90', '90-100'] intervalNum = [interval1, interval2, interval3] plt.title('Calculating Methods') plt.bar(x=interval, height=intervalNum, color='steelblue', alpha=0.8) for x1, yy in zip(interval, intervalNum): plt.text(x1, yy + 1, str(yy), ha='center', va='bottom', fontsize=20, rotation=0) plt.ylim((0, 40)) plt.show() def main(): print('本程序可查看各课程成绩中各区间的人数分布。') print('请输入要查看的课程:') print('1.Python 程序设计基础') print('2.计算机导论') print('3.离散数学') print('4.数据结构') print('5.C语言程序设计') print('5.Java语言程序设计') print('7.算法导论') while (1): num = eval(input("请输入要查看的课程编号,输入0则退出:")) if num == 1: python() if num == 2: html() if num == 3: math() if num == 4: data() if num == 5: c() if num == 6: java() if num == 7: calMeth() if num == 0: break if __name__ == '__main__': '''python() html() math() data() c() java() calMeth()''' main()