2条回答 默认 最新
- 索利亚噶通 2021-12-01 15:45关注
能用点个采纳吧
class Solution: def __init__(self, fileName): self.data = self.readFile(fileName) self.calculateScore() # 经过计算数据 def readFile(self, fileName): with open(fileName, 'r', encoding='utf-8') as f: # 读取文件 contents = f.readlines() contents = [each.strip('\n') for each in contents] # 去除换行符 contents = [each.split(",") for each in contents] # 按逗号分割(看你的题目中无空格) return contents def calculateScore(self): for idx, content in enumerate(self.data): temp = content[:2] # 将编号和名字放入其中 # round为四舍五入 score = round(int(content[2]) * 0.1 + int(content[3]) * 0.6 + int(content[4]) * 0.3) # 加权成绩 temp.append(score) temp.append(int(content[3])) # 将高考成绩也放入其中 self.data[idx] = temp # 人数输出格式 def printPeople(self): self.dataDict = {} # 统计各个分数的人数 for each in self.data: if each[2] in self.dataDict.keys(): self.dataDict[each[2]] += 1 else: self.dataDict[each[2]] = 1 dataList = sorted(self.dataDict.items(), key=lambda x:x[0], reverse=True) # 按分数进行排序 print("分数 当前分数人数 累积人数") count = 0 # 累积人数 for each in dataList: count += each[1] print("{} {} {}".format(each[0], each[1], count)) # 按录取格式输出 def printRecruit(self): dataSorted = sorted(self.data, key=lambda x:x[2], reverse=True) # 按总分排序 dataSortedgaokao = sorted(self.data, key=lambda x:x[3], reverse=True) # 按高考排序 allStudent = len(dataSorted) # 总人数 # 前百分之15, 没说怎么取整啊?! 如果总人数3个人, 3 * 0.15 = 0.45, 到底录取一个还是0个? allScore = int(allStudent * 0.15) # 总分前15%的人数 gaokaoScore = int(allStudent * 0.6) # 高考前60%的人数 gaokaoNumber = [dataSortedgaokao[i][0] for i in range(gaokaoScore)] for i in range(allScore): # 在前百分之15中寻找高考前百分之60的人 if dataSorted[i][0] in gaokaoNumber: print(dataSorted[i][0] + "," + dataSorted[i][1]) filename = 'data.txt' x = Solution(filename) x.printPeople() # 按人数格式输出 x.printRecruit() # 按录取格式输出
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 组策略中的计算机配置策略无法下发
- ¥15 机器学习简单问题解决
- ¥15 如何绘制动力学系统的相图
- ¥15 对接wps接口实现获取元数据
- ¥20 给自己本科IT专业毕业的妹m找个实习工作
- ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
- ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)
- ¥50 mac mini外接显示器 画质字体模糊
- ¥15 TLS1.2协议通信解密
- ¥40 图书信息管理系统程序编写