• 计算机二级-简单应用题


    题目要求

    编写代码,以实现如下功能:
    键盘输入小明学习的课程名称及考分等信息,信息间采用空格分隔,每个课程一行,空行回车结束录入,示例格式如下:
    数学 90
    语文 95
    英语 86
    物理 84
    生物 87
    屏幕输出得分最高的课程及成绩,得分最低的课程及成绩,以及平均分(保留2位小数)。


    一、使用列表解决

    • 下面代码可以实现每个 一行,空行回车结束录入
    data = input()
    while data:
        data = input()
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    • 拆分data数据
    data = input()
    while data:
        ls = data.split()
        print(ls)
        data = input()
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    • 将课程和成绩组成列表,加到新的列表中
    data = input()
    ls = []
    while data:
        ls.append(data.split())
        data = input()
        
    ls
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    • 按成绩从大到小排序
    # 因为字符串作比较是一个字符一个字符比的,所有这里要用int将字符串转为数字
    # reverse=True 从大到小排列
    ls.sort(key=lambda x:int(x[1]),reverse=True)
    ls		# [['英语', '100'], ['数学', '90'], ['语文', '80']]
    
    • 1
    • 2
    • 3
    • 4
    • 计算所有科目成绩的和
    n = 0
    for i in range(len(ls)):
        # ls[i][1] 是 字符串,不能运算
        n += int(ls[i][1])
        
    n	# 270
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    # 平均分
    avg = n/len(ls)	# 90.0
    print("最高分课程是{} {}, 最低分课程是{} {}, 平均分是{:.2f}".format(ls[0][0],ls[0][1],ls[-1][0],ls[-1][1],avg))
    # 最高分课程是英语 100, 最低分课程是语文 80, 平均分是90.00
    
    • 1
    • 2
    • 3
    • 4
    • 完整代码
    data = input()
    ls = []
    while data:
        ls.append(data.split())
        data = input()
    ls.sort(key=lambda x:int(x[1]),reverse=True)
    n = 0
    for i in range(len(ls)):
        n += int(ls[i][1])
    avg = n/len(ls)
    print("最高分课程是{} {}, 最低分课程是{} {}, 平均分是{:.2f}".format(ls[0][0],ls[0][1],ls[-1][0],ls[-1][1],avg))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    输入

    语文 80
    数学 90
    英语 100

    输出

    最高分课程是英语 100, 最低分课程是语文 80, 平均分是90.00

    二、使用字典解决

    data = input()
    d = {}
    while data:
        t = data.split()
        # 将列表t
        d[t[0]] = t[1]
        data = input()
        
    d
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    • 字典的键值
    d.items()
    # dict_items([('语文', '77'), ('数学', '88'), ('英语', '99')])
    d.keys()
    # dict_keys(['语文', '数学', '英语'])
    d.values()
    # dict_values(['77', '88', '99'])
    
    
    for k,v in d.items():
        print(k,v)
    # 语文 77
    # 数学 88
    # 英语 99
    for i in d.keys():
        print(i)
    # 语文
    # 数学
    # 英语
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 字典转换为列表
    # 默认将字典的键转为列表
    list(d)
    # ['语文', '数学', '英语']
    
    list(d.items())
    # [('语文', '77'), ('数学', '88'), ('英语', '99')]
    ls = list(d.items())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 列表排序
    # sort() 按照键的拼音字母比较
    ls.sort()
    ls
    # [('数学', '88'), ('英语', '99'), ('语文', '77')]
    
    # sort() 默认从小到大排序(reverse=False)
    ls.sort(key=lambda x:x[1])
    ls
    # [('语文', '77'), ('数学', '88'), ('英语', '99')]
    
    ls.sort(key=lambda x:x[1],reverse=True)
    ls
    # [('英语', '99'), ('数学', '88'), ('语文', '77')]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 计算总分
    zongfen = 0
    for i in d.values():
        # 字典的值是字符串,转变为int后计算
        zongfen += int(i)
    
    • 1
    • 2
    • 3
    • 4
    • 完整代码
    data = input()
    d = {}
    while data:
        t = data.split()
        d[t[0]] = t[1]
        data = input()
    
    ls = list(d.items())
    ls.sort(key=lambda x:x[1],reverse=True)
    
    zongfen = 0
    for i in d.values():
        zongfen += int(i)
        
    avg = zongfen/len(ls)
    print("最高分课程是{} {}, 最低分课程是{} {}, 平均分是{:.2f}".format(ls[0][0],ls[0][1],ls[-1][0],ls[-1][1],avg))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    输入

    语文 77
    数学 88
    英语 99

    输出

    最高分课程是英语 99, 最低分课程是语文 77, 平均分是88.00

  • 相关阅读:
    网络流算法
    Liunx下对php内核的调试
    tf.compat.v1.global_variables
    kubernetes之etcd基本操作
    为什么Spring中的bean默认都是单例模式?
    centos jdk 安装
    SAP ABAP——数据类型(三)【TYPE-POOL和INCLUDE嵌套定义类型】
    Hexagon_V65_Programmers_Reference_Manual(23)
    SpringCloud的新闻资讯项目01--- 环境搭建、SpringCloud微服务(注册发现、服务调用、网关
    数组19—unshift() :将一个或多个元素添加到数组的开头
  • 原文地址:https://blog.csdn.net/weixin_64729620/article/details/133034145