Added the ability to calculate percentile GPA

This commit is contained in:
NianBroken
2024-02-01 13:27:28 +08:00 Unverified
parent 2fe75a3fe3
commit 128e355c90
3 changed files with 17 additions and 6 deletions
+15 -5
View File
@@ -125,17 +125,27 @@ for _ in range(run_count):
# 按照提交时间降序排序 # 按照提交时间降序排序
sorted_grade = sorted(grade, key=lambda x: x["submission_time"], reverse=True) sorted_grade = sorted(grade, key=lambda x: x["submission_time"], reverse=True)
# 学分绩点总和
total_xfjd = sum(float(course["xfjd"]) for course in grade)
# 学分总和 # 学分总和
total_credit = sum(float(course["credit"]) for course in grade) total_credit = sum(float(course["credit"]) for course in grade)
# (学分*绩点)的总和/学分总和 # 学分绩点总和
total_xfjd = sum(float(course["xfjd"]) for course in grade)
# (百分制成绩*学分)的总和
sum_of_percentage_grades_multiplied_by_credits = sum(
float(course["percentage_grades"]) * float(course["credit"]) for course in grade
)
# 百分制GPA计算 (百分制成绩*学分)的总和/学分总和
percentage_gpa = "{:.2f}".format(
sum_of_percentage_grades_multiplied_by_credits / total_credit
)
# GPS计算 (学分*绩点)的总和/学分总和
gpa = "{:.2f}".format(total_xfjd / total_credit) gpa = "{:.2f}".format(total_xfjd / total_credit)
# 整合个人信息 # 整合个人信息
integrated_info += f"当前GPA{gpa}\n------" integrated_info += f"当前GPA{gpa}(百分制:{percentage_gpa})\n" f"------"
# 初始化输出成绩信息字符串 # 初始化输出成绩信息字符串
integrated_grade_info = "成绩信息:" integrated_grade_info = "成绩信息:"
+1
View File
@@ -0,0 +1 @@
[{'course_id': '04050003', 'title': '网页设计基础', 'teacher': '张丽妹', 'class_name': '(2023-2024-1)-04050003-1', 'credit': '3.5', 'category': '专业学习领域课', 'nature': '必修课', 'grade': 92, 'grade_point': '4.2', 'grade_nature': '正常考试', 'start_college': '计算机工程系', 'mark': '主修', 'submission_time': '2024-01-29 12:57:32', 'name_of_submitter': '张丽妹', 'xfjd': '14.70', 'percentage_grades': '92'}, {'course_id': 'FFC9462325AF13ABE055C1C514C140A8', 'title': 'Python程序设计', 'teacher': '陈胜娣;陈金峰', 'class_name': '(2023-2024-1)-04050032-1', 'credit': '4.5', 'category': '专业学习领域课', 'nature': '必修课', 'grade': 74, 'grade_point': '2.4', 'grade_nature': '正常考试', 'start_college': '计算机工程系', 'mark': '主修', 'submission_time': '2024-01-28 18:38:53', 'name_of_submitter': '陈胜娣', 'xfjd': '10.80', 'percentage_grades': '74'}, {'course_id': '29', 'title': '网球1', 'teacher': '朱海飞', 'class_name': '(2023-2024-1)-29-4', 'credit': '3.0', 'category': '公共基础领域课', 'nature': '必修课', 'grade': 66, 'grade_point': '1.6', 'grade_nature': '正常考试', 'start_college': '基础部', 'mark': '主修', 'submission_time': '2024-01-21 20:11:00', 'name_of_submitter': '朱海飞', 'xfjd': '4.80', 'percentage_grades': '66'}, {'course_id': 'E1EB8ADEBC0166D6E055C1C514C140A8', 'title': '军事技能', 'teacher': '周勇', 'class_name': '(2023-2024-1)-95010002-60', 'credit': '2.0', 'category': '公共基础领域课', 'nature': '必修课', 'grade': '及格', 'grade_point': '1.0', 'grade_nature': '正常考试', 'start_college': '计算机工程系', 'mark': '主修', 'submission_time': '2023-11-24 11:45:27', 'name_of_submitter': '周勇', 'xfjd': '2.00', 'percentage_grades': '60'}, {'course_id': 'E1E03C639E504455E055C1C514C140A8', 'title': '入学教育', 'teacher': '周勇', 'class_name': '(2023-2024-1)-98010001-21', 'credit': '1.0', 'category': '公共基础领域课', 'nature': '必修课', 'grade': 85, 'grade_point': '3.5', 'grade_nature': '正常考试', 'start_college': '计算机工程系', 'mark': '主修', 'submission_time': '2024-01-23 23:11:02', 'name_of_submitter': '周勇', 'xfjd': '3.50', 'percentage_grades': '85'}, {'course_id': 'E75E02A9F963458FE055C1C514C140A8', 'title': '应用数学', 'teacher': '彭仲元', 'class_name': '(2023-2024-1)-99010008-5', 'credit': '3.5', 'category': '公共基础领域课', 'nature': '必修课', 'grade': '良好', 'grade_point': '3.5', 'grade_nature': '正常考试', 'start_college': '基础部', 'mark': '主修', 'submission_time': '2024-02-01 11:22:23', 'name_of_submitter': '彭仲元', 'xfjd': '12.25', 'percentage_grades': '85'}, {'course_id': '071AC474870428F3E065C1C514C140A8', 'title': '中国音乐赏析', 'teacher': '崔可欣;曾蓓君', 'class_name': '(2023-2024-1)-99020013-1', 'credit': '2.0', 'category': '公共学习领域课', 'nature': '必修课', 'grade': 67, 'grade_point': '1.7', 'grade_nature': '正常考试', 'start_college': '基础部', 'mark': '主修', 'submission_time': '2024-01-23 22:48:10', 'name_of_submitter': '崔可欣', 'xfjd': '3.40', 'percentage_grades': '67'}]
+1 -1
View File
@@ -6,7 +6,6 @@ import time
import traceback import traceback
import unicodedata import unicodedata
from urllib.parse import urljoin from urllib.parse import urljoin
import requests import requests
import rsa import rsa
from pyquery import PyQuery as pq from pyquery import PyQuery as pq
@@ -439,6 +438,7 @@ class Client:
"submission_time": i.get("tjsj"), "submission_time": i.get("tjsj"),
"name_of_submitter": i.get("tjrxm"), "name_of_submitter": i.get("tjrxm"),
"xfjd": i.get("xfjd"), "xfjd": i.get("xfjd"),
"percentage_grades": i.get("bfzcj"),
} }
for i in grade_items for i in grade_items
], ],