要求:
输出所有同学“名称:对应成绩”的信息
输出分值最高和最低的同学名称及分数,(如有重复并列输出)
求出平均值并输出
输出高于平均值的同学名称及成绩
输出低于平均值的同学名称及成绩
将成绩排名信息写入csv格式的文件中,文件名称为:test_你自己的名字_时间戳.csv 3
生成一个图片,将前三名信息水印在这张图片上,将图片保存
#导包 from PIL import Image, ImageDraw, ImageFont import pandas as pd import numpy as e import csv import datetime list1 = [] #定义空列表 用来存放表格中的数据 ff = pd.read_excel("2209A2361-第一轮面试成绩.xlsx") #通过定义变量 ff 获取表格所有内容 , 通过下方遍历循环打印在控制台出现数据展示 for i, j in ff.iterrows(): print('//',j[0], j[1]) # 循环遍历向列表添加数据 for i, j in ff.iterrows(): list1.append({ '姓名': str(j[0]), '分数': j[1] }) # 通过pop 方法弹出已知不可用内容 list1.pop(0) list1.pop(-1) #定义两个空列表放置姓名数据,分数数据 lst = [] ty = [] print('列表包字典的使用数据',list1) # 将数据添加到指定变量中 for i in list1: ty.append(i['姓名']) lst.append(i['分数']) # 求最小值 for i in list1: if i['分数'] == min(lst): print('最小值',i) # 求最大值 for i in list1: if i['分数'] == max(lst): print('最大值',i) #使用e 计算平均值 a = e.mean(lst) print('平均值',a) # 计算高于平均分的学生 llll = list(filter(lambda x:x['分数'] > a , list1)) print('高于平均分',llll) # 计算低于平均分的学生 llll = list(filter(lambda x:x['分数'] < a , list1)) print('低于平均分',llll) # 将数据写入一个csv格式文件 t=['姓名','成绩'] tti = datetime.datetime.now() with open('wxy.csv','w', encoding='utf-8', newline='') as f: ui=csv.writer(f) ui.writerow(t) for i in range(len(list1)): op=[list1[i]['姓名'],list1[i]['分数']] ui.writerow(op) # 计算前三名 sorted_data = sorted(list1, key=lambda x: x['分数'], reverse=True)[:3] print('前三名',sorted_data) # 创建一个空白图片 image = Image.new('RGB', (1900, 400), 'red') draw = ImageDraw.Draw(image) # 设置字体和颜色 font = ImageFont.truetype('msyh.ttc', 36) text_color = (0, 0, 0) # 添加文本水印 text = ','.join([f"'{d['姓名']}': {d['分数']}" for d in sorted_data]) draw.text((10, 10), text, fill=text_color, font=font) # 保存图片 image.save('watermark.png')