0

我有一个编程任务,它打开一个文件并计算总 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()

隔离数字

对于我在(行):

i = i.strip()

print(i[-1:])

隔离字母

打印(“\n”)

对于我在(行):

i = i.strip()

print(i[-3:-2])

GPA 可以通过将学分乘以所获得的成绩并除以总学分来计算。

4

1 回答 1

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

于 2013-05-03T04:58:47.103 回答