练习52包括一个表,表中显示了某一特定学术机构从字母成绩到绩点的转换。本练习将计算用户输入的任意数量字母等级的平均绩点。用户输入一个空白行,表明所有分数都已提供。例如,如果用户输入A,然后是C+,然后是B,然后是空行,那么程序应该报告的绩点平均值是3.1。
完成这个练习时,会发现52题的答案很有帮助,程序不需要做任何错误检查,它可以假设用户输入的每个值都是有效的字母等级或空行。
练习52:
在一所特定的大学,字母成绩采用下方式映射到绩点
字母 | 绩点 |
A+ | 4 |
A | 4 |
A_ | 3.7 |
B+ | 3.3 |
B | 3 |
B_ | 2.7 |
C+ | 2.3 |
C | 2 |
C_ | 1.7 |
D+ | 1.3 |
D | 1 |
F | 0 |
#定义总分和科目数
con=0
num=0
#第一次输入成绩
letter = (input("请输入字母成绩"))
# 注意“==”和“=”的区别,“==”用来比较变量值是否相等,“=”用来赋值
#开始输入成绩,使用while循环
while letter!="":
# 定义字母绩点
A_plus = 4.0
A = 4.0
A_ = 3.7
B_plus = 3.3
B = 3.0
B_ = 2.7
C_plus = 2.3
C = 2.0
C_ = 1.7
D_plus = 1.3
D = 1.0
F = 0
# 注意“==”和“=”的区别,“==”用来比较变量值是否相等,“=”用来赋值
if letter == "A_plus" or letter == "A": #注意输入的形式是字符串
GAP = A #此时A等于4.0,已对其进行赋值
elif letter == "B_plus":
GAP = B_plus
elif letter == "B":
GAP = B
elif letter == "B_":
GAP = B_
elif letter == "C_plus":
GAP = C_plus
elif letter == "C":
GAP = C
elif letter == "C_":
GAP = C_
elif letter == "D_plus":
GAP = D_plus
elif letter == "D":
GAP = D
elif letter == "F":
GAP = F
#对总成绩及科目书定义
num += 1
con += GAP
# 第一次循环结束,开始第二次循环
#输入下一科成绩
letter=(input("请输入字母成绩"))
#注意缩进,此时已经跳出循环
average=con/num
print("平均成绩为%.2f"%average)