当前目录下有一个xlxsx工作簿,第一列为学生姓名,第二列到第四列为学生的课程成绩,编写程序计算每名学生的总分,并输出排名前三的学生姓名
我主要使用openpyxl方法进行编程,但是还是用了一点pandas
这两个模块都需要下载
1.用户可以在编译器终端处或者在Windows系统中进入控制台界面
2.输入 pip list 查看自己是否安装了相应的第三方库,如果是Python 3.x则是 pip3 list
3.如果查看没有安装就需要手动安装,命令为:pip installopenpyxl 和open installpandas
下面是我的代码
from openpyxl import load_workbook
import pandas as pd
wb = load_workbook("grade.xlsx", data_only=True) # 获取对象
sheet = wb.active # 指定表单Sheet1为当前表单
sheet.cell(row=2, column=5).value = '=SUM(B2:D2)'#计算总分
sheet.cell(row=3, column=5, value='=SUM(B3:D3)')
sheet.cell(row=4, column=5, value='=SUM(B4:D4)')
sheet.cell(row=5, column=5, value='=SUM(B5:D5)')
wb.save('grade.xlsx')#运行一次后打开所在文件点击保存后删除这一句再一次运行
for line in sheet.rows:
for cell in line:
print(cell.value, ' ', end="")
print()
df = pd.read_excel('grade.xlsx')
map = dict(zip(df['学生'], df['总分']))#将姓名和成绩加入字典排序
e = sorted(map.items(), key=lambda e: e[1], reverse=True)
print(e)
e1 = []
for i in e:
e1.append(i[0])
print("前三名为:")
for i in range(0, 3):
print(e1[i])
运行时记得关闭xlsx文件,否则会报错,然后运行一次后请把wb.save()删除,打开相应的文件,手动将数据完全保存,并再次运行。这一点也确实麻烦但我没有更好的办法,可能以后会修改的。
下面是遵循上述方法的结果
下面是用pandas的非常感谢这位的帮助
效果如下