m0_62927409 2022-03-26 10:28 采纳率: 75.8%
浏览 209
已结题

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: ''

  • 写回答

2条回答 默认 最新

  • 陈年椰子 2022-03-26 11:09
    关注

    稍微改一下即可 , 另外,提一个建议, 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条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月27日
  • 已采纳回答 3月26日
  • 修改了问题 3月26日
  • 创建了问题 3月26日