玖柒291 2022-05-31 09:03 采纳率: 100%
浏览 84
已结题

Python文件成绩按要求重新排序

李华用 grade . bxt 来记录学生的成绩,每行有4个正整数,分别用空格分开,每一行的第一列代表学生的学号,第二列代表学生的语文成绩,第三列代表学生的数学成绩,第四列代表学生的总分(学号均用两位数表示,成绩均用三位数表示,不消足两三位的在前面填充0.如89变为089),读取 grade . txt 文件并按要求将结果进行排序,排序后将结果写入 answer . txt .排序要求如下:1.默认先按总分从高到低排序2.当总分相同时按数学成绩从高到低排序3.当语文和数学成绩都相同时则按学生的学号从高到低排序。

  • 写回答

3条回答 默认 最新

  • chuifengde 2022-05-31 16:25
    关注
    dirname = r'C:\Users\Administrator\Desktop'
    
    with open(dirname + '/grade.txt', 'r', encoding = 'utf-8') as f:
        v = [list(map(int, i.strip().split("\t"))) for i in f.readlines()]
        result = sorted(v, key =lambda x: (x[3], x[2],x[1], x[0]), reverse = True)
        res = [list(map(lambda x: str(x).rjust(2, '0'), i)) for i in result]
    
    with open(dirname + '/answer.txt', 'w', encoding = 'utf-8') as f:
        for i in res:
            print(*i,sep = '\t',file = f )
            
    'grade.txt'
    """00    130    129    259
    01    116    092    208
    02    092    113    205
    03    149    103    252
    04    102    135    237
    05    117    085    202
    06    106    092    198
    07    092    122    214
    08    146    141    287
    09    104    106    210
    10    122    135    257
    11    111    128    239
    12    125    135    260
    13    146    099    245
    14    111    110    221
    15    093    105    198
    16    096    101    197
    17    135    118    253
    18    101    145    246
    19    119    118    237
    20    118    128    246
    21    145    111    256
    22    130    093    223
    23    094    114    208
    24    140    138    278
    25    136    144    280
    26    092    096    188
    27    132    134    266
    28    148    129    277"""
    'answer.txt'
    """08    146    141    287
    25    136    144    280
    24    140    138    278
    28    148    129    277
    27    132    134    266
    12    125    135    260
    00    130    129    259
    10    122    135    257
    21    145    111    256
    17    135    118    253
    03    149    103    252
    18    101    145    246
    20    118    128    246
    13    146    99    245
    11    111    128    239
    04    102    135    237
    19    119    118    237
    22    130    93    223
    14    111    110    221
    07    92    122    214
    09    104    106    210
    23    94    114    208
    01    116    92    208
    02    92    113    205
    05    117    85    202
    15    93    105    198
    06    106    92    198
    16    96    101    197
    26    92    96    188"""
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月9日
  • 已采纳回答 6月1日
  • 赞助了问题酬金5元 5月31日
  • 修改了问题 5月31日
  • 展开全部

悬赏问题

  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表