字典、列表两种方法解决输出成绩等级的问题(学考题目研究)

发布时间 2023-04-25 17:16:50作者: QQ糖_尤尤

已知某学校高一语文期末考试分数和等级的对应关系 :
实考分数
90-100 (含)、89-80 (含)、79-70 (含)、69-60 (含)、60以下分别对应等级A、B、D、E。

小王要对输入的某些同学的实考分数,根据上面的对应关系,输出对应等级。

输入

5

钱二 95

张三 85

李四 74

孙五 63

赵六 32

注:输入数据包括n+1行(n<=30)第-行中的数n表示接下来会输入n个同学的数据每一行包括同学名字和实考分数,中间以空格分隔

输出

钱二 A

张三 B

李四 C

王五 D

赵六 E

注:输出的n行数据中的每-行包括两部分信息,第-部分为同学名字,第二部分为对应等级,中间以空格分隔

方法一:使用字典

a={}                        #创建

n=int(input())              #输入学生人数
for i in range(n):          #输入学生姓名和成绩
    c,d=input().split()
    if 100>=int(d)>=90:
        e='A'
    elif 89>=int(d)>=80:
        e='B'
    elif 79>=int(d)>=70:
        e='C'
    elif 69>=int(d)>=60:        
        e='D'
    else:
        e='E'
    a[c]=e                 #把学生姓名和成绩等级以键值对的形式写入字典a

for key,value in a.items():#输出字典中的数据
    print(key,value)

运行结果:

>>>
================ RESTART: C:/Users/Administrator/Desktop/cj1.py ================
5
赵一 100
钱二 85
孙三 75
李四 65
周五 55
赵一 A
钱二 B
孙三 C
李四 D
周五 E
>>>

方法二:列表方法

name=[]
grades=[]
n=int(input())
for i in range(n):
    a,b=input().split()
    name.append(a)
    c=eval(b)
    if 100>=c>=90:
        g='A'
    elif 89>=c>=80:
        g='B'
    elif 79>=c>=70:
        g='C'
    elif 69>=c>=60:        
        g='D'
    else:
        g='E'
    grades.append(g)
for i in range(n):
    print(name[i],grades[i])

运行结果:

>>> 
================ RESTART: C:/Users/Administrator/Desktop/cj2.py ================
5
赵一 100
钱二 85
孙三 75
李四 65
周五 55
赵一 A
钱二 B
孙三 C
李四 D
周五 E
>>>