竹影稀 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 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64
  • ¥15 iOS 自定义输入法-第三方输入法
  • ¥15 很想要一个很好的答案或提示
  • ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
  • ¥15 怀疑手机被监控,请问怎么解决和防止
  • ¥15 Qt下使用tcp获取数据的详细操作
  • ¥15 idea右下角设置编码是灰色的
  • ¥15 全志H618ROM新增分区