hit gpa calculator
score_calculator.py
from matplotlib import pyplot as plt
def function(file_path):
'''
可以根据实际课程类型增添contains - replace
:param file_path:成绩路径
:return: 各阶段成绩
'''
score_list = []
X = []
X_0 = []
ending = 0
total_weight = 0
i = 0
for line in open(file_path, "r", encoding='utf-8', errors='ignore'):
if line.__contains__("取消资格"):
continue
if line.__contains__("旷考"):
continue
if line.__contains__("是"):
line = line.replace("是", "")
if line.__contains__("其他"):
line = line.replace("其他", "")
if line.__contains__("创新MOOC"):
line = line.replace("创新MOOC", "")
if line.__contains__("MOOC"):
line = line.replace("MOOC", "")
if line.__contains__("任选"):
line = line.replace("任选", "")
if line.__contains__("必修"):
line = line.replace("必修", "")
if line.__contains__("素质核心"):
line = line.replace("素质核心", "")
if line.__contains__("素质选修"):
line = line.replace("素质选修", "")
if line.__contains__("选修"):
line = line.replace("选修", "")
if line.__contains__("限选"):
line = line.replace("限选", "")
lines = line.split(".", 1) # 最多只根据"."分成两份
integer = int(lines[0][-1])
decimal = int(lines[1][0])
weight = integer + 0.1 * decimal # 学分
if lines[1].__contains__("补"):
one_score = 60
else:
temp = float(lines[1].replace(" ", "")[1:5])
if temp < 60:
continue
else:
one_score = float(lines[1].replace(" ", "")[1:5])
ending = ending + one_score * weight
total_weight = total_weight + weight
print(ending / total_weight)
score_list.append(ending / total_weight)
i = i + 1
X.append(total_weight)
X_0.append(one_score)
print("现成绩 : " + str(ending / total_weight))
print("科目数 : " + str(i))
print("总学分 : " + str(total_weight))
score = score_list
Y = score
plt.plot(X, Y, "m:")
plt.plot(X, Y, "c.")
#plt.plot(X, X_0, "y.")
plt.xlabel('x')
plt.ylabel('y')
plt.show()
#从jwes复制成绩
function("score.txt")
score.txt is copy from jwes.hit.edu.cn
example:
2 2017秋季 学工处 AD12401 成功心理与人才发展 任选 素质核心 2.0 取消资格 取消资格 304
Written on November 15, 2019