竹影稀 2022-05-25 15:37 采纳率: 100%
浏览 89
已结题

Python编程入门,请求讲解!急!

①随机生成30个学生的学号(不重复)和成绩( 0 ~100),并逐行写入“成绩.csv”文件中
②实现一个对嵌套列表指定列进行选择排序的函数,要求函数的参数为嵌套列表和指定列索引下标,函数没有返回值。
③从“成绩.csv”文件读出学生学号和成绩,用嵌套列表进行保存,再调用实现的排序函数,按照学生的成绩进行排序,并打印前5名的学号和成绩。

  • 写回答

3条回答 默认 最新

  • hyh123a 全栈领域新星创作者 2022-05-25 16:00
    关注

    试一下

    代码如下:

    import random
    
    """
    ①随机生成30个学生的学号(不重复)和成绩( 0 ~100),并逐行写入“成绩.csv”文件中
    ②实现一个对嵌套列表指定列进行选择排序的函数,要求函数的参数为嵌套列表和指定列索引下标,函数没有返回值。
    ③从“成绩.csv”文件读出学生学号和成绩,用嵌套列表进行保存,再调用实现的排序函数,按照学生的成绩进行排序,并打印前5名的学号和成绩。
    """
    
    
    def generate_func(input_file):
        _list = []
        _ids = []
        with open(input_file, "w") as fw:
            for i in range(30):
                _id = random.randint(1, 50)
                while _id in _ids:
                    _id = random.randint(1, 50)
                score = random.randint(0, 100)
                temp = {}
                temp['id'] = _id
                temp['score'] = score
                _ids.append(_id)
                _list.append(temp)
                fw.write(str(_id) + '\t' + str(score) + '\n')
        return _list
    
    
    def sort_func(_list, col):
        return sorted(_list, key=lambda k: k[col])
    
    
    print("#####################################################################")
    print("①随机生成30个学生的学号(不重复)和成绩( 0 ~100),并逐行写入“成绩.csv”文件中")
    input_file = "成绩.csv"
    output_file = "output.xlsx"
    _list = generate_func(input_file)
    print("成绩已成功录入\n", _list)
    print("#####################################################################")
    print("②实现一个对嵌套列表指定列进行选择排序的函数,要求函数的参数为嵌套列表和指定列索引下标,函数没有返回值。")
    sort_list = sort_func(_list, 'score')
    print("成绩排序已完成\n", sort_list)
    
    print("#####################################################################")
    print("③从“成绩.csv”文件读出学生学号和成绩,用嵌套列表进行保存,再调用实现的排序函数,按照学生的成绩进行排序,并打印前5名的学号和成绩。")
    with open(input_file, "r") as fr:
        lines = fr.readlines()
    
    _list = []
    for line in lines:
        if line is not None and len(line) > 1:
            items = line.replace("\n", "").split("\t")
            _id = items[0]
            score = items[1]
            temp = {}
            temp['id'] = int(_id)
            temp['score'] = int(score)
            _list.append(temp)
    
    result = sort_func(_list, 'score')
    print(result)
    

    输出如下:

    #####################################################################
    ①随机生成30个学生的学号(不重复)和成绩( 0 ~100),并逐行写入“成绩.csv”文件中
    成绩已成功录入
     [{'id': 20, 'score': 72}, {'id': 39, 'score': 78}, {'id': 26, 'score': 10}, {'id': 43, 'score': 83}, {'id': 5, 'score': 90}, {'id': 27, 'score': 99}, {'id': 10, 'score': 34}, {'id': 14, 'score': 85}, {'id': 50, 'score': 72}, {'id': 35, 'score': 87}, {'id': 30, 'score': 88}, {'id': 32, 'score': 44}, {'id': 15, 'score': 74}, {'id': 41, 'score': 34}, {'id': 17, 'score': 0}, {'id': 1, 'score': 18}, {'id': 11, 'score': 1}, {'id': 47, 'score': 5}, {'id': 2, 'score': 25}, {'id': 45, 'score': 42}, {'id': 8, 'score': 57}, {'id': 18, 'score': 48}, {'id': 46, 'score': 92}, {'id': 33, 'score': 51}, {'id': 3, 'score': 33}, {'id': 36, 'score': 67}, {'id': 44, 'score': 53}, {'id': 34, 'score': 63}, {'id': 24, 'score': 13}, {'id': 29, 'score': 44}]
    #####################################################################
    ②实现一个对嵌套列表指定列进行选择排序的函数,要求函数的参数为嵌套列表和指定列索引下标,函数没有返回值。
    成绩排序已完成
     [{'id': 17, 'score': 0}, {'id': 11, 'score': 1}, {'id': 47, 'score': 5}, {'id': 26, 'score': 10}, {'id': 24, 'score': 13}, {'id': 1, 'score': 18}, {'id': 2, 'score': 25}, {'id': 3, 'score': 33}, {'id': 10, 'score': 34}, {'id': 41, 'score': 34}, {'id': 45, 'score': 42}, {'id': 32, 'score': 44}, {'id': 29, 'score': 44}, {'id': 18, 'score': 48}, {'id': 33, 'score': 51}, {'id': 44, 'score': 53}, {'id': 8, 'score': 57}, {'id': 34, 'score': 63}, {'id': 36, 'score': 67}, {'id': 20, 'score': 72}, {'id': 50, 'score': 72}, {'id': 15, 'score': 74}, {'id': 39, 'score': 78}, {'id': 43, 'score': 83}, {'id': 14, 'score': 85}, {'id': 35, 'score': 87}, {'id': 30, 'score': 88}, {'id': 5, 'score': 90}, {'id': 46, 'score': 92}, {'id': 27, 'score': 99}]
    #####################################################################
    ③从“成绩.csv”文件读出学生学号和成绩,用嵌套列表进行保存,再调用实现的排序函数,按照学生的成绩进行排序,并打印前5名的学号和成绩。
    [{'id': 17, 'score': 0}, {'id': 11, 'score': 1}, {'id': 47, 'score': 5}, {'id': 26, 'score': 10}, {'id': 24, 'score': 13}, {'id': 1, 'score': 18}, {'id': 2, 'score': 25}, {'id': 3, 'score': 33}, {'id': 10, 'score': 34}, {'id': 41, 'score': 34}, {'id': 45, 'score': 42}, {'id': 32, 'score': 44}, {'id': 29, 'score': 44}, {'id': 18, 'score': 48}, {'id': 33, 'score': 51}, {'id': 44, 'score': 53}, {'id': 8, 'score': 57}, {'id': 34, 'score': 63}, {'id': 36, 'score': 67}, {'id': 20, 'score': 72}, {'id': 50, 'score': 72}, {'id': 15, 'score': 74}, {'id': 39, 'score': 78}, {'id': 43, 'score': 83}, {'id': 14, 'score': 85}, {'id': 35, 'score': 87}, {'id': 30, 'score': 88}, {'id': 5, 'score': 90}, {'id': 46, 'score': 92}, {'id': 27, 'score': 99}]
    
    Process finished with exit code 0
    
    
    

    输出的01.csv

    2072
    3978
    2610
    4383
    590
    2799
    1034
    1485
    5072
    3587
    3088
    3244
    1574
    4134
    170
    118
    111
    475
    225
    4542
    857
    1848
    4692
    3351
    333
    3667
    4453
    3463
    2413
    2944

    如有问题及时沟通

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月26日
  • 已采纳回答 5月26日
  • 修改了问题 5月25日
  • 赞助了问题酬金5元 5月25日
  • 展开全部

悬赏问题

  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错
  • ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
  • ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
  • ¥15 matlab如何根据图片中的公式绘制e和v的曲线图