学号编码:TooY0ung的学院(结构体)

news/2024/7/24 12:13:30 标签: python, 算法

根据6+6十二位编码规则,用城市代码和出生年编制学号。


  【本笔记适合初通算法的 coder 翻阅】


【学习的细节是欢悦的历程】

  • Python 官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
    地址:https://lqpybook.readthedocs.io/


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


根据6+6十二位编码规则
TooY0ung的学院(结构体)
(用城市代码和出生年编制学号)


本文质量分:

96
本文地址: https://blog.csdn.net/m0_57158496/article/details/131496243

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ TooY0ung的学院(结构体)
    • 1、题目描述
    • 2、解题思路
      • 2.1 输入数据解析
      • 2.2 解析出生年检索字典
      • 2.3 遍历“学生”编码学号
    • 3、python 代码运行效果截屏图片
    • 4、完整源码


◆ TooY0ung的学院(结构体)


题目来源于 CSDN 问答社区提问“TooY0ung的学院(结构体)”

1、题目描述


  TooY0ung开了一个编程学院,面向全球不限年龄、不限物种进行招生。也就是说,如果一只千年乌龟想来学习编程,TooY0ung也会让他入学。

  已知每位学生的两个信息:所属城市、以及出生年份。

  为了区别每位学生,TooY0ung需 要给他们进行学号编码。

  TooY0ung规定了一种12位的学号编码规则:前6位用来记录城市编号,后6位用来表示年龄编号。

  • 更具体地说:

    a、如果城市的编号不足6位,则需要在前面补0,直至补齐6位。

    b、年龄是根据同一个城市学生的年龄来进行编号1、2,、3等,比如一个学员是某城市中,出生年份最早的(年龄最大的),则他的后六位记录为1,与城市规则一致,如果不足6位则在前面用0补齐6位,那么这个学员的年龄编码就是000001;同理,如果某学员是某城市中,出生年份第二早的,那么这个学员的年龄编码就是000002。

  • 输入:
    输入包含多行,第一行输入两个数,n和m,,n表示全球的城市数量,m表示学员人数。接下来m行,每行输入两个数字ci和yi,分别表示第i名学员的城市编号和出生年份。(数据保证所有学员的出生年份不出现重复)

  • 输出:
    输出包含m行,每行个12位数字,表示该学员的学号。

  • 输入样例1
    25
    1 1995
    2 1996
    1 1993
    1 1994
    2 1992

  • 输出样例1
    000001000003
    000002000002
    000001000001
    000001000002
    000002000001

  • 提示
    关于样例解释:2个城市,5名学员。城市1有三名学员:出生年份分别为1995、1993、1994。城市2有两名学员:出生年份分别为1996、1992。则第一名学员的年龄在城市1中排名第3,所以他的城市编号为1,年龄编号为3,分别补齐6位后,学号为:000001000003;第二名学员的年龄在城市2中排名第2,所以他的城市编号为2,年龄编号为2,分别补齐6位后,学号为:000002000002;第三名学员的年龄在城市1中排名第1,所以他的城市编号为1,年龄编号为1,分别补齐6位后,学号为:000001000001;第四名学员的年龄在城市1中排名第2,所以他的城市编号为1,年龄编号为2,分别补齐6位后,学号为:000001000002;第五名学员的年龄在城市2中排名第1,所以他的城市编号为2,年龄编号为1,分别补齐6位后,学号为:000002000001。

  • 来自TooY0ung温暖的提示:
    输出保证6位,如果不足在前面补0有c语言快捷操作写法:假设要输出的变量为int类型的a,则可以写printf("%06d",a);Python中①有字符串方法str.zfill()可以用’0’字符填充左侧以达到固定长度。如’5’。zfill(6),已是’000005’;②还可以用
    字符串格式化,如插值字符串格式f"{5:0>6}",也表示用0填充左侧达到6位,也是’000005’。

  • 数据范围:
    对于15%的数据,1<=n<=100, 1<=m<=100,1<=ci<=n,1<=yi<=109;对于100%的数据,1<=n<=105
    1<=m<=105,1<=ci<=n, 1<=yi<=109。数据保证yi不重复。



回页目录

2、解题思路


  • 此题目的难点在于对学生出生年编码——
      要先统计出各个城市的学生总数,对其出生年进行排序,生成出生年检索字典;遍历输入对学生的出生年进行编码。

  • 数据结构
      用城市为标识分拣输入,可以把各个城市的学员出生年存入一个列表,排升序,再给出生年按序编号生成出生年码表,然后对各城市学员分别编号即可。城市码直接前缀0编码,出生年检索“出生年码表”序号前缀0,拼接两段编码即成学员学号编码。

具体代码实现——

2.1 输入数据解析


  用str.split() 方法拆分行,再把每行解析成列表。int()函数转换数字字符为整型。
python">
    in_str = in_str.split('\n')
    n, stus = list(map(int, in_str[0].split())), [[int(j) for j in i.split()] for i in in_str[1:]]

  • 代码运行效果截屏图片
    在这里插入图片描述


回页目录

2.2 解析出生年检索字典


  用字典解析式生成学生出生年检索字典。
python">
    studict = {}

    for k,v in stus:
        studict[k] = studict.get(k, []) + [v]
    
    studict = {city: {year: k+1 for k,year in enumerate(sorted(studict.get(city)))} for city in studict} # 生成解析学号编码的字典。

  • 代码运行效果截屏图片
    在这里插入图片描述


回页目录

2.3 遍历“学生”编码学号


  用for循环遍历学生列表,检索出生年,生成出生年编码,拼接学生12位学号编码。
python">
    for city,year in stus: # 遍历轮询编码学号。
        print(f"{city:0>6}{studict.get(city).get(year):0>6}") # 插值字符串格式化输出学号编码。

  • 代码运行效果截屏图片
    在这里插入图片描述


回页目录

python__214">3、python 代码运行效果截屏图片


  • 代码运行效果截屏图片
    在这里插入图片描述


回页目录

4、完整源码

(源码较长,点此跳过源码)

python">#!/sur/bin/nve python
# coding: utf-8


def encode(in_str):
    ''' 学号编码 '''
    in_str = in_str.split('\n')
    n, stus = list(map(int, in_str[0].split())), [[int(j) for j in i.split()] for i in in_str[1:]]
    #input(f"\nn = {n}\nstus = {stus}") # 查看解析出的输入数据。
    studict = {}

    for k,v in stus:
        studict[k] = studict.get(k, []) + [v]
    
    studict = {city: {year: k+1 for k,year in enumerate(sorted(studict.get(city)))} for city in studict} # 生成解析学号编码的字典。
    #print(studict) # 查看生成的学号编码字典。
    
    for city,year in stus: # 遍历轮询编码学号。
        print(f"{city:0>6}{studict.get(city).get(year):0>6}") # 插值字符串格式化输出学号编码。


if __name__ == '__main__':
    in_str = '''2 5
1 1995
2 1996
1 1993
1 1994
2 1992'''
    print(f"\n输入:\n{in_str}\n\n输出:")
    encode(in_str) # 调用函数编码学号。


回页首

上一篇:  模拟随机验证码(模拟随机验证码)
下一篇: 

我的HOT博:

  本次共计收集 219 篇博文笔记信息,总阅读量 31.00w,平均阅读量 1415。已生成 21 篇阅读量不小于 3000 的博文笔记索引链接。数据采集于 2023-06-26 05:46:38 完成,用时 3 分 13.20 秒。


  1. 让QQ群昵称色变的神奇代码
    ( 56157 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    点赞:24   踩 :0  收藏:81  打赏:0  评论:17
    本篇博文笔记于 2022-01-18 19:15:08 首发,最晚于 2022-01-20 07:56:47 修改。
  2. pandas 数据类型之 DataFrame
    ( 8712 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    点赞:6   踩 :0  收藏:29  打赏:0  评论:0
    本篇博文笔记于 2022-05-01 13:20:17 首发,最晚于 2022-05-08 08:46:13 修改。
  3. 个人信息提取(字符串)
    ( 6784 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    点赞:1   踩 :0  收藏:12  打赏:0  评论:0
    本篇博文笔记于 2022-04-18 11:07:12 首发,最晚于 2022-04-20 13:17:54 修改。
  4. 罗马数字转换器|罗马数字生成器
    ( 6625 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    点赞:0   踩 :0  收藏:1  打赏:0  评论:0
    本篇博文笔记于 2022-01-19 23:26:42 首发,最晚于 2022-01-21 18:37:46 修改。
  5. Python字符串居中显示
    ( 6545 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    点赞:1   踩 :0  收藏:6  打赏:0  评论:1
    本篇博文笔记于 2021-12-26 23:35:29 发布。
  6. Python列表(list)反序(降序)的7种实现方式
    ( 5505 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    点赞:4   踩 :0  收藏:18  打赏:0  评论:8
    本篇博文笔记于 2022-12-11 23:54:15 首发,最晚于 2023-03-20 18:13:55 修改。
  7. 斐波那契数列的递归实现和for实现
    ( 5373 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122355295
    点赞:4   踩 :0  收藏:2  打赏:0  评论:8
    本篇博文笔记于 2022-01-06 23:27:40 发布。
  8. 练习:字符串统计(坑:f‘string‘报错)
    ( 4958 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/121723096
    点赞:0   踩 :0  收藏:1  打赏:0  评论:0
    本篇博文笔记于 2021-12-04 22:54:29 发布。
  9. 练习:尼姆游戏(聪明版/傻瓜式•人机对战)
    ( 4709 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/121645399
    点赞:14   踩 :0  收藏:42  打赏:0  评论:0
    本篇博文笔记于 2021-11-30 23:43:17 发布。
  10. python清屏
    ( 4655 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/120762101
    点赞:0   踩 :0  收藏:5  打赏:0  评论:0
    本篇博文笔记于 2021-10-14 13:47:21 发布。
  11. 回车符、换行符和回车换行符
    ( 4611 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    点赞:1   踩 :0  收藏:2  打赏:0  评论:0
    本篇博文笔记于 2022-02-24 13:10:02 首发,最晚于 2022-02-25 20:07:40 修改。
  12. 密码强度检测器
    ( 4029 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/121739694
    点赞:1   踩 :0  收藏:4  打赏:0  评论:0
    本篇博文笔记于 2021-12-06 09:08:25 首发,最晚于 2022-11-27 09:39:39 修改。
  13. 练习:生成100个随机正整数
    ( 4028 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122558220
    点赞:1   踩 :0  收藏:6  打赏:0  评论:0
    本篇博文笔记于 2022-01-18 13:31:36 首发,最晚于 2022-01-20 07:58:12 修改。
  14. 罗马数字转换器(用罗马数字构造元素的值取模实现)
    ( 3910 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122608526
    点赞:0   踩 :0  收藏:0  打赏:0  评论:0
    本篇博文笔记于 2022-01-20 19:38:12 首发,最晚于 2022-01-21 18:32:02 修改。
  15. 练习:班里有人和我同生日难吗?(概率probability、蒙特卡洛随机模拟法)
    ( 3718 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/124424935
    点赞:1   踩 :0  收藏:3  打赏:0  评论:0
    本篇博文笔记于 2022-04-26 12:46:25 首发,最晚于 2022-04-27 21:22:07 修改。
  16. 我的 Python.color() (Python 色彩打印控制)
    ( 3679 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/123194259
    点赞:2   踩 :0  收藏:7  打赏:0  评论:0
    本篇博文笔记于 2022-02-28 22:46:21 首发,最晚于 2022-03-03 10:30:03 修改。
  17. 练习:仿真模拟福彩双色球——中500w巨奖到底有多难?跑跑代码就晓得了。
    ( 3422 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/125415626
    点赞:3   踩 :0  收藏:4  打赏:0  评论:3
    本篇博文笔记于 2022-06-22 19:54:20 首发,最晚于 2022-06-23 22:41:33 修改。
  18. 聊天消息敏感词屏蔽系统(字符串替换 str.replace(str1, *) )
    ( 3234 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/124539589
    点赞:3   踩 :0  收藏:2  打赏:0  评论:3
    本篇博文笔记于 2022-05-02 13:02:39 首发,最晚于 2022-05-21 06:10:42 修改。
  19. random.sample()将在python 3.9x后续版本中被弃用
    ( 3229 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/120657230
    点赞:0   踩 :0  收藏:0  打赏:0  评论:0
    本篇博文笔记于 2021-10-08 18:35:09 发布。
  20. Linux 脚本文件第一行的特殊注释符(井号和感叹号组合)的含义
    ( 3207 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/123087606
    点赞:0   踩 :0  收藏:4  打赏:0  评论:3
    本篇博文笔记于 2022-02-23 13:08:07 首发,最晚于 2022-04-04 23:52:38 修改。
  21. 练习:求列表(整数列表)平衡点
    ( 3093 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/121737612
    点赞:0   踩 :0  收藏:0  打赏:0  评论:0
    本篇博文笔记于 2021-12-05 23:28:10 发布。
推荐条件 阅读量突破三千
(更多热博,请点击蓝色文字跳转翻阅)

回页首


老齐漫画头像

精品文章:

  • 好文力荐:齐伟书稿python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


回页首

◆ Python 入门指南【Python 3.6.3】


好文力荐:

  • 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯
  • 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代码编写规范
  • Python的docstring规范(说明文档的规范写法)


http://www.niftyadmin.cn/n/1009899.html

相关文章

【C语言初阶(4)】循环语句3:do while 循环

文章目录 1. 语法结构2. 执行流程3. do while 循环的特点4. do while 循环中的 break 和 continue4.1 do while 循环中的 break4.2 do while 循环中的 continue 1. 语法结构 do {循环语句; } while(表达式) ; ← 这里还有个分号&#xff0c;不要忘了注意&#xff1a;在 do whi…

力扣 108. 将有序数组转换为二叉搜索树

题目来源&#xff1a;https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/description/ C题解1&#xff1a;递归法。由于要求是平衡树&#xff0c;又给出了递增数组&#xff0c;所以构建二叉树只需将中间值作为中间节点&#xff0c;左右两边分属左右子树…

分布式软件架构——客户端缓存

浏览器的客户端缓存 当万维网刚刚出现的时候&#xff0c;浏览器的缓存机制差不多就已经存在了。在 HTTP 协议设计之初&#xff0c;人们便确定了服务端与客户端之间“无状态”&#xff08;Stateless&#xff09;的交互原则&#xff0c;即要求客户端的每次请求是独立的&#xff…

Git代码管理工具

目录 一、安装Git 二、Git基本概念 三、Git基本操作 初始化Git仓库 Git init 添加文件到暂存区Git add 提交暂存区到本地仓库Git commit 上传至远程并合并 Git push Git 分支管理 创建分支&#xff1a;Git branch 切换分支&#xff1a;Git checkout 删除分支 分支合…

xxl-job源码改造集成:适配opengauss数据、适配单点登录等

目录 一、摘要 二、集成方案 三、集成步骤 3.1 springboot集成xxl-job 3.2 适配高斯数据库(postgresql) 3.3 页面集成 3.4 登录集成 3.5 接口集成 四、部署 一、摘要 公司现在打算重构产品&#xff0c;将原来的quartz替换成xxl-job&#xff0c;主要因为quartz不能动态…

C#异常总结

C#异常总结 定义Try语句异常类创建用户自定义异常搜索调用栈的示例异常抛出 定义 程序中的运行时错误&#xff0c;它违反一个系统约束或应用程序约束&#xff0c;或出现了在正常操作时未预料的情形。 Try语句 指明被异常保护的代码块&#xff0c;并提供代码以处理异常。try由…

分享一些关于 CSS Grid 基础入门知识

网格系统&#xff08;CSS Grid&#xff09;是CSS中最重要的特性之一。它能够以简单的方式将元素对齐到列和行中。CSS网格使得设计复杂且响应式的网页变得更加容易&#xff0c;无需使用浮动、表格或定位。它还具有许多更强大的功能&#xff0c;如果你多加练习&#xff0c;就能发…

Autosar MCAL-S32K324 MCU配置-基于EB

文章目录 McuGeneralConfigurationDefault Error DetectVersion Info APIMcu Get Ram State APIMcu Init Clock APIMcu No PLLMcu Enter Low-Power ModeMcu Loops TimeOut (1 -> 4294967295)Mcu Enable User Mode SupportMcu Perform Reset APIMcuCalloutBeforePerformReset…