Python - GPA的计算

GPA 计算

时间限制:1000ms    内存限制:65535KB

题目描述

GPA,或称平均学分绩点,是用来衡量学生学习成果的重要指标。 我们这里的 GPA 采用 4 分制(即满分为 4 分),算法如下: 设某门课程的百分制成绩为x,则相应的GPA=4-3×((100-x)²)/1600 (60≤x≤100),当分数为 60 分时 GPA 为 1,60 分以下GPA为 0。 现输入N (1≤N≤100) 门课的百分制成绩x_1,x_2,……,x_N和每门课对应的学分h_1,h_2,……,h_N。 通过各门课 GPA 计算总 GPA 的公式为:总 GPA=(GPA_1×h_1+GPA_2×h_2+⋯+GPA_N×h_N)/(h_1+h_2+⋯+h_N)。 请编写程序计算总 GPA,将结果保留到小数点后 2 位。

输入

输入数据为N+1行。 第 1 行为一个正整数N,表示获得百分制成绩的课程门数; 第 2 行至N+1行为N门课程的百分制成绩和其对应的学分,第i行为第i门科目对应的百分制成绩和学分x_i,h_i,成绩与学分之间用一个空格隔开。

输出

输出数据包含一行,为计算出的总 GPA(保留到小数点后 2 位)。

输入样例1

2

85 3

60 2

输出样例1

2.55

样例解释

对于所有数据:0≤x_i≤100,x_i∈Z;0.5≤h_i≤6,h_i=0.5k (k∈Z)

实验指导:

1. 注意计算单科 GPA 时,如果成绩低于 60 分 则GPA 为 0;

2. 使用 a, b = map(float,input().split()) 将输入转为浮点数;

3. 对于多组数据可以使用for循环来控制读取数据的次数以及对数据处理的次数。

解答:这是一道很简答的题目

注意利用一个循环不断累加,注意使用一个记录次数的变量

代码如下

# 输入一个数字 N 表示课程门数
N=int(input())
GPA=0;xf=0
# 通过一个循环来输入这 N 门课的成绩和学分
for i in range(N):
a, b = map(float,input().split())
# 如果大于 60 分,用相应的公式计算。如果小于 0 ,就成绩为 0
if a>=60:
GPA = GPA + b*(4-3*((100-a)*(100-a))/1600)
xf=xf+b
else:
GPA=GPA+0
xf=xf+b
# 利用权重比计算加权 GPA
x=GPA/xf
print("{0:.2f}".format(x))
N=int(input())
GPA=0;GROCE=0
for i in range(N):
    x,b=map(float,input().split())  
    GROCE=GROCE+b
    if x>=60:
        GPA=GPA+(4-3*((100-x)*(100-x))/1600)*b
    else:
        GPA=GPA
print("%.2f"%(GPA/GROCE))

你可能感兴趣的:(Python基础学习,python)