Python这个怎么改

平均绩点计算方法:

用户循环输入五分制成绩和课程学分,输入‘-1’时结束输入,计算学生平均绩点。等级与绩点对应关系如下表:

成绩 等级 绩点

90-100 A 4.0

85-89 A- 3.7

82-84 B+ 3.3

78-81 B 3.0

75-77 B- 2.7

72-74 C+ 2.3

68-71 C 2.0

64-67 C- 1.5

60-63 D 1.3

补考60 D- 1.0

60以下 F 0

【输入形式】

每组输入包括两行, 第一行是五分制的分数, 第二行是一个代表学分的数字

【输出形式】

平均绩点,保留两位小数

【样例输入】

A

3

A

2

A

3

D-

2

-1

【样例输出】

3.40

sore={'A':'4.0','A-':'3.7','B+':'3.3','B':'3.0','B-':'2.7','C+':'2.3','C':'2.0','C-':'1.5','D':'1.3','D-':'1.0'}
sum=0
q=0
for i in range(100):
s=input()
c=input()
c.strip()
if s=='-1':
break
b=sore.get(s)
b=float(b)
p=b*c
q=q+c
sum=sum+p
pre=sum/p
print("{:.2f}".format(pre))

报错
Traceback (most recent call last):
File "C:\Users\86137\Desktop\spyder\untitled3.py", line 14, in
c=float(input())

ValueError: could not convert string to float: ''

稍微改一下即可 , 另外,提一个建议, sore 里, 值直接用浮点,这样少一句转浮点

b=sore.get(s)
b=float(b)  #如果字典里的值是浮点, 这句就可以不用了

img

sore={'A':'4.0','A-':'3.7','B+':'3.3','B':'3.0','B-':'2.7','C+':'2.3','C':'2.0','C-':'1.5','D':'1.3','D-':'1.0'}
sum=0
q=0
for i in range(100):
    s=input()
    if s=='-1':
        break
    c=float(input())
    b=sore.get(s)
    b=float(b)
    p=b*c
    q=q+c
    sum=sum+p
pre=sum/q
print("{:.2f}".format(pre))

(课程学分1绩点+课程学分2绩点+课程学分n*绩点)/(课程学分1+课程学分2+课程学分n)