• Python期末复习题:组合数据类型


    Python期末复习题:组合数据类型

    一、成绩分析

    有10 名同学的python 课程成绩分别为:94, 89, 96, 88, 92, 86, 69, 95, 78,85。

    要求利用列表分析成绩,输出平均值、最高的3个成绩和最低的3个成绩、成绩中位数(是按顺序排列的一组数据中居于中间位置的数,如果观察值有偶数个,通常取最中间的两个数值的平均数作为中位数)。

    针对上述成绩的输出结果应该为:

    平均成绩为:87.2

    最高3个成绩为:[96, 95, 94]

    最低3个成绩为: 69 78 85

    中位数成绩为:88.5

    score = [94, 89, 96, 88, 92, 86, 69, 95, 78, 85]
    avg = sum(score) / len(score)
    score.sort()
    max_3 = score[-3:]
    min_3 = score[:3]
    
    n = len(score)
    if n % 2 == 0:
        median = (score[n // 2 - 1] + score[n // 2]) / 2
    else:
        median = score[n // 2]
    print(f'平均成绩为:{avg}')
    print(f'最高3个成绩为:{max_3}')
    print('最低3个成绩为:', *min_3)
    print(f'中位数成绩为:{median}')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    运行的结果是:

    平均成绩为:87.2
    最高3个成绩为:[94, 95, 96]
    最低3个成绩为: 69 78 85
    中位数成绩为:88.5
    
    • 1
    • 2
    • 3
    • 4

    二、列表的属性与方法

    初始化一个空列表,输入一个正整数 n。

    接下来,你将被要求输入 n 个指令,每得到一个指令后,根据指令的字符串进行对应的功能操作。

    指令形式及对应功能如下:

    insert i e: # 在第 i 个位置插入整数 e

    print: # 输出列表

    remove e: # 删除第一次出现的整数 e

    append e: # 在列表的末尾插入整数

    e.sort: # 按默认规则排序

    pop: # 弹出列表最后一一个元素

    reverse: # 列表元素逆序

    示例 如下:

    ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬输入:

    12

    insert 0 5

    insert 1 10

    insert 0 6

    print

    remove 6

    append 9

    append 1

    sort

    print

    pop

    reverse

    print

    输出:

    [6, 5, 10]

    [1, 5, 9, 10]

    [9, 5, 1]

    n = int(input())
    ls = []
    for i in range(n):
        a = input().split()
        if a[0] == 'insert':
            ls.insert(int(a[1]), int(a[2]))
        elif a[0] == 'print':
            print(ls)
        elif a[0] == 'remove':
            ls.remove(int(a[1]))
        elif a[0] == 'append':
            ls.append(int(a[1]))
        elif a[0] == 'sort':
            ls.sort()
        elif a[0] == 'pop':
            ls.pop()
        elif a[0] == 'reverse':
            ls.reverse()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    运行的结果是:

    12
    insert 0 5
    insert 1 10
    insert 0 6
    print
    [6, 5, 10]
    remove 6
    append 9
    append 1
    sort
    print
    [1, 5, 9, 10]
    pop
    reverse
    print
    [9, 5, 1]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    三、模拟通讯录的数据添加功能

    模拟通讯录的数据添加功能。

    def menu():
    
     print('''\n欢迎使用PYTHON学生通讯录
    
    1:添加学生
    
    2:删除学生
    
    3:修改学生信息
    
    4:搜索学生
    
    5:显示全部学生信息
    
    6:退出并保存''')
    
    dic={'张自强': ['12652141777', '材料'], '庚同硕': ['14388240417', '自动化'], '王岩': ['11277291473', '文法']}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    要求编写程序

    首先输出字典原始数据,再调用menu函数输出用户选择界面,接下来读用户输入:

    (1) 输入‘1’ 进行添加学生,输入姓名,如果该姓名已存在,则输出“Fail”的提示信息,如果不存在,继续输入电话和所在学院。添加完毕后输出“Success”提示信息。无论是否添加成功,结束后需要输出操作后的字典数据。

    (2) 如果输入其他选项,无需再读姓名,直接输出“ERROR”。

    示例

    输入:

    1

    杨彪

    11002345678

    材料

    输出:

    {‘张自强’: [‘12652141777’, ‘材料’], ‘庚同硕’: [‘14388240417’, ‘自动化’], ‘王岩’: [‘11277291473’, ‘文法’]}

    欢迎使用PYTHON学生通讯录

    1:添加学生

    2:删除学生

    3:修改学生信息

    4:搜索学生

    5:显示全部学生信息

    6:退出并保存

    #输入数据

    {‘张自强’: [‘12652141777’, ‘材料’], ‘庚同硕’: [‘14388240417’, ‘自动化’], ‘王岩’: [‘11277291473’, ‘文法’], ‘杨彪’: [‘11002345678’, ‘材料’]}

    def menu():
    
     print('''\n欢迎使用PYTHON学生通讯录
    
    1:添加学生
    
    2:删除学生
    
    3:修改学生信息
    
    4:搜索学生
    
    5:显示全部学生信息
    
    6:退出并保存''')
    
    dic={'张自强': ['12652141777', '材料'], '庚同硕': ['14388240417', '自动化'], '王岩': ['11277291473', '文法']}
    
    def add():
        name = input().split()
        try:
            phone = input().split()
            college = input().split()
            message = [phone, college]
        except:
            print("Fail")
        else:
            dic[name] = message
            print("Success")
     
    print(dic)
    menu()
    choice = input()
    if(choice == '1'):
        add()
        print(dic)
    else:
        print("ERROR")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    运行的结果是:

    {'张自强': ['12652141777', '材料'], '庚同硕': ['14388240417', '自动化'], '王岩': ['11277291473', '文法']}
    
    欢迎使用PYTHON学生通讯录
    
    1:添加学生
    
    2:删除学生
    
    3:修改学生信息
    
    4:搜索学生
    
    5:显示全部学生信息
    
    6:退出并保存
    1
    杨彪
    11002345678
    材料
    Success
    {'张自强': ['12652141777', '材料'], '庚同硕': ['14388240417', '自动化'], '王岩': ['11277291473', '文法'], '杨彪': ['11002345678', '材料']}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    四、字典列表的排序

    字典列表的排序。第一行输入一个正整数 N,随后的 N 行各输入一个人的姓名和年龄,中间用空格分隔(形如 “Tom 18” ),将字符串转为形如 {“name”:“Tom”,“age”:18} 的字典,按顺序加入到列表中,得到一个元素为字典的列表,分别根据年龄和姓名对其排序输出。

    示例

    输入:

    4

    Tom 18

    Jerry 47

    Cat 20

    Doge 33

    输出:

    [{‘name’: ‘Tom’, ‘age’: 18}, {‘name’: ‘Cat’, ‘age’: 20}, {‘name’: ‘Doge’, ‘age’: 33}, {‘name’: ‘Jerry’, ‘age’: 47}]

    [{‘name’: ‘Cat’, ‘age’: 20}, {‘name’: ‘Doge’, ‘age’: 33}, {‘name’: ‘Jerry’, ‘age’: 47}, {‘name’: ‘Tom’, ‘age’: 18}]

    n = int(input())
    ls = []
    for i in range(n):
        a, b = input().split()
        dicts = {"name": a, "age": int(b)}
        ls.append(dicts)
    list_age = sorted(ls, key=lambda x: x['age'])
    list_name = sorted(ls, key=lambda x: x['name'])
    print(list_age)
    print(list_name)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    运行的结果是:

    4
    Tom 18
    Jerry 47
    Cat 20
    Doge 33
    [{'name': 'Tom', 'age': 18}, {'name': 'Cat', 'age': 20}, {'name': 'Doge', 'age': 33}, {'name': 'Jerry', 'age': 47}]
    [{'name': 'Cat', 'age': 20}, {'name': 'Doge', 'age': 33}, {'name': 'Jerry', 'age': 47}, {'name': 'Tom', 'age': 18}]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    Ubuntu 22.04LTS + 深度学习环境安装全流程
    【产品设计】如何开展你的B端产品需求调研
    43、Flink 的 Window Join 详解
    Spark编程:combineByKey与aggregateByKey异同
    [附源码]java毕业设计食材采购平台论文
    3DEXPERIENCE许可管理流程:高效、合规、易行的软件许可方案
    JavaScript 63 JavaScript 对象 63.9 JavaScript Map 对象
    java毕业设计程序设计类课程的课堂教学效果评价系统Mybatis+系统+数据库+调试部署
    PyTorch搭建RNN联合嵌入模型(LSTM GRU)实现视觉问答(VQA)实战(超详细 附数据集和源码)
    TikTok视频播放量低,是被限流了吗?
  • 原文地址:https://blog.csdn.net/qq_52417436/article/details/127968182