import xlrd as xls
#Initialization
credits = []
credits_flo = []
grades = []
points = []
# read xls file
data = xls.open_workbook('成绩单.xls')
table = data.sheets()[0]
for i in range(1,table.nrows):
line = table.row_values(i)
if line == ['','','']:
continue
if line[2] == '':
continue
credits.append(line[1])
grades.append(line[2])
# convert letters to points
for gra in grades:
grade = float(gra)
if grade >= 90:
points.append(4.0)
elif 85 <= grade <= 89:
points.append(3.7)
elif 82 <= grade <= 84:
points.append(3.3)
elif 78 <= grade <= 81:
points.append(3.0)
elif 75 <= grade <= 77:
points.append(2.7)
elif 72 <= grade <= 74:
points.append(2.3)
elif 68 <= grade <= 71:
points.append(2.0)
elif 64 <= grade <= 67:
points.append(1.5)
elif 60 <= grade <= 63:
points.append(1.0)
else:
points.append(0.0)
# convert credits to credits_flo
for credit in credits:
credits_flo.append(float(credit))
# calculate GPA
gpa = 0.0
for i in range(len(credits)):
gpa = gpa + credits_flo[i] * points[i]
gpa = gpa / sum(credits_flo)
#output
print('北大算法的 GPA 是 ' + '%.5f'%gpa)