身份证号批量升位【Python习题】(保姆级图文+实现代码)
@
- 题目
- 描述
- 本题输出时,身份证与姓名数据间的间隔为中文全角空格,可以复制使用以下的sep参数。
- 数据集
- 输入格式
- 输出格式
- 示例
- 思路
- 代码
- 实现效果
- 总结
主要内容是校设课程的习题和课外学习的一些习题。
欢迎关注 『Python习题』 系列,持续更新中
欢迎关注 『Python习题』 系列,持续更新中
题目
描述
我国自1999年10月1日身份证号码由15位改成18位,1999年以前出生的人持有的旧身份证号码均为15位,1999年10月1日以后出生的人获得的身份证号都是18位。 读取附件中文本文件id15.txt,用户输入一个正整数 n (n<=30),将其中的前 n 行中的15位身份证号升到18位并输出,身份证号升位规则如下: 第一步,在原十五位数身份证的第六位数后面插入19 (1905年1月1日以后出生),这样身份证号码即为十七位数; 第二步,按照国家规定的统一公式计算出第十八位数,作为校验码放在第二代身份证的尾号。 校验码计算方法:将身份证前十七位数分别乘以不同系数并求和 S = Sum(Ai * Wi) Ai:表示第i位置上的身份证号码数字值, i = 0, ... , 16 Wi:表示第i位置上的加权因子,Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 S对11取模得到余数0-10,对应的校验码如下: 余数 Y: 0 1 2 3 4 5 6 7 8 9 10 校验码: 1 0 X 9 8 7 6 5 4 3 2
本题输出时,身份证与姓名数据间的间隔为中文全角空格,可以复制使用以下的sep参数。
sep=' '(这个空格复制过去)
数据集
平台规定不能显示身份证,数据集不显示
输入格式
输入一个正整数 n (n<=30)
输出格式
n行18位的身份证号及姓名(保持与原文件格式一致)
示例
输入:
3
输出:
身份证号 空格 姓名
思路
先读取到身份证,然后调用函数把15位身份证转为18位身份证。
转化身份证时用到了切片和映射translate
。
代码
def id15218(id15):#转化成18位身份证
a = id15
id15 = a[:6] + '19' + a[6:]
Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
s = 0
for i in range(17):
s = s + int(id15[i]) * int(Wi[i])
Y = str(s % 11)
if int(Y) < 10:
before = '0 1 2 3 4 5 6 7 8 9'
after = '1 0 X 9 8 7 6 5 4 3'
table = ''.maketrans(before, after)#建立映射关系
Y = Y.translate(table)
else:
Y = '2'
id18 = id15[:17] + Y + id15[17:]
return id18
n=int(input())#转化前面n行
with open('id15.txt', 'r', encoding='utf-8') as f:
lines = f.read().split("\n")
for i in range(n):
lines[i]=lines[i].split(' ')## split里面的,身份证与姓名数据间的间隔为中文全角空格,可以复制使用以下的sep参数。
lines[i][0]=id15218(lines[i][0])#得到18位转化
print(lines[i][0],lines[i][1],sep=" ")
实现效果
平台规定不能显示身份证,没有截图
总结
大家喜欢的话,给个👍,点个关注!给大家分享更多有趣好玩的Python习题!
版权声明:
发现你走远了@mzh原创作品,转载必须标注原文链接
Copyright 2022 mzh
Crated:2022-3-1
欢迎关注 『Python习题』 系列,持续更新中
欢迎关注 『Python习题』 系列,持续更新中
【更多内容敬请期待】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人