描述

本题附件包含500名国际高校的研究生申请人的相关信息和预测的录取概率数据。
admit2.csv
下表为文件中字段及对应含义:

Serial No GRE Score TOEFL Score University Rating SOP LOR CGPA Research Chance of Admit
编号1-500 GRE分数 托福分数 本科大学排名分 个人陈述分数 推荐信分数 本科绩点 研究经历(1/0) 录取概率(0-1之间)

研究经历:1代表有,0代表无
录取概率:0-1之间的小数,如0.73代表73%
请按照下列要求对文件中数据进行统计和分析,并严格按照下面所示格式输出结果。
(描述中示例仅为格式示例,数据与测试用例无关)
输入一个数据n
1:如果n为’1’,抽取数据中录取概率大于等于80%的记录,计算其中大学排名评分大于等于4分的百分比,程序结束。

1 Top University in >=80%:11.11%

2:如果n为’Research’,分别统计和输出录取概率大于等于90%的学生和录取概率小于等于70%的学生中,有研究经历的学生占比,程序结束。(百分比保留两位小数)

Research Reseach in >=90%:91.03% Reseach in <=70%:22.10%

3:如果n为’2’,输出录取概率大于等于80%的学生中TOEFL分数的平均分,最高分和最低分,程序结束。(保留两位小数)

2 TOEFL Average Score:300.12 TOEFL Max Score:323.00 TOEFL Min Score:299.00

4:如果n为’3’,输出录取概率大于等于80%的学生中绩点的平均分,最高分和最低分,程序结束。(保留三位小数)

3 CGPA Average Score:4.333 CGPA Max Score:4.910 CGPA Min Score:4.134

5:如果非以上输入,则输出’ERROR’,程序结束。

  1. def read_file(filename):
  2. """读文件,将数据切分为列表,返回二维列表"""
  3. with open(filename, 'r', encoding='utf-8') as fr:
  4. data_ls = [i.strip().split(',') for i in fr]
  5. return data_ls[1:] # 去除标题行
  6. def rank_four(data_ls):
  7. """接受录取概率大于num的数据的二维列表,
  8. 计算并输出其中大学排名评分大于等于4分的百分比"""
  9. admit_80 = [x for x in data_ls if float(x[-1])>=0.8]
  10. top_four = [x for x in admit_80 if float(x[1])>=4]
  11. percent = round(len(top_four) / len(admit_80),4)*100
  12. print(f'Top University in >=80%:{percent}%')
  13. # return f'Top University in >=80%:{percent}%'
  14. def toefl(data_ls):
  15. admit_80 = [x for x in data_ls if float(x[-1])>=0.8]
  16. toefl_score = [int(x[3]) for x in admit_80]
  17. avg_toefl = sum(toefl_score)/len(toefl_score)
  18. print(f'TOEFL Average Score:{avg_toefl:.2f}')
  19. print(f'TOEFL Max Score:{max(toefl_score):.2f}')
  20. print(f'TOEFL Min Score:{min(toefl_score):.2f}')
  21. def gpa(data_ls):
  22. admit_80 = [x for x in data_ls if float(x[-1])>=0.8]
  23. gpa_score = [float(x[4]) for x in admit_80]
  24. avg_toefl = sum(gpa_score)/len(gpa_score)
  25. print(f'CGPA Average Score:{avg_toefl:.3f}')
  26. print(f'CGPA Max Score:{max(gpa_score):.3f}')
  27. print(f'CGPA Min Score:{min(gpa_score):.3f}')
  28. def graduate_student(data_ls):
  29. admit_90 = [x for x in data_ls if float(x[-1])>=0.9]
  30. gpa_score = [x[5] for x in admit_90 if x[5]=='1']
  31. percent = len(gpa_score)/len(admit_90)*100
  32. print(f'Reseach in >=90%:{percent:.2f}%')
  33. admit_90 = [x for x in data_ls if float(x[-1]) <= 0.7]
  34. gpa_score = [x[5] for x in admit_90 if x[5] == '1']
  35. percent = len(gpa_score) / len(admit_90) * 100
  36. print(f'Reseach in <=70%:{percent:.2f}%')
  37. def type_judge(input_str):
  38. """接收一个字符串为参数,根据参数调用不同的函数进行运算。
  39. """
  40. if input_str == '1':
  41. rank_four(data)
  42. elif input_str == '2':
  43. toefl(data)
  44. elif input_str == '3':
  45. gpa(data)
  46. elif input_str == 'Research':
  47. graduate_student(data)
  48. else:
  49. print('ERROR')
  50. if __name__ == '__main__':
  51. file = 'admit2.csv'
  52. data = read_file(file)
  53. question = input()
  54. type_judge(question)