我有一个编程任务,可以打开一个文件并计算所有GPA。
其中A = 4,B = 3,C = 2,D = 1,E = 0 .txt文件包含:
ECS10 A 4
ECS20 B 3
JPN4 C 5
PHY9A D 5
最后一个元素是学分数量,之前的字母是成绩。我只能得到最后一个元素和字母,但我卡住了。我继续在for循环中使用if语句从字母中获取数字,但我似乎无法使它工作。 (我是非常新的编程所以任何一种帮助将不胜感激)谢谢!
这是我到目前为止所得到的:
f = open(“grade_file.txt”,“r”)
line = f.readlines()
for i in(line):
i = i.strip()
print(i[-1:])
打印( “\ n” 个)
for i in(line):
i = i.strip()
print(i[-3:-2])
GPA可以通过将学分数乘以收到的成绩并将其除以学分总数来计算。
答案 0 :(得分:2)
试试这段代码:
#!/usr/bin/env python3.3-32
grade_mapping = {'A':4, 'B':3, 'C':2, 'D':1, 'E':0}
weighted_sum = 0
credits = 0
for line in open("grade_file.txt", "r"):
elems = line.split(' ')
weighted_sum += grade_mapping[elems[1]] * int(elems[2])
credits += float(elems[2])
gpa = weighted_sum / credits
print(gpa)
我用这个文件来测试:
ECS10 A 4
ECS20 B 3
JPN4 C 5
PHY9A D 5
结果应为2.35294117647