首页 > 编程知识 正文

python身份证信息识别代码,身份证加密算法

时间:2023-05-04 01:22:38 阅读:117328 作者:1959

最近,我在LeetCode网上闲逛,发现很多主题的官方问题解都是用Python语言编写的。 这表明Python语言逐渐认识到语法简洁、内置函数丰富、表达直观、能够以最简洁清晰的方式实现算法思想的优越性。

当前编程教育起点高,难度堪比奥数,压倒了很多孩子,成为少数算法思维特别强的学生的“专利”。 未来高中信息技术要学习Python语言,初中小学也要跟进,全面提高学生的计算思维。 现有的编程教程,内容太浅,只介绍Python的语法知识,或者难度太大,不能直达信息奥运会,不适合普通学生学习。

笔者希望有一个没有才能、架桥铺路的人。 通过设置难度合适、生动有趣的案例,让孩子进一步掌握Python的基本数据结构,进一步了解顺序、选择、循环等算法结构,运用分析、枚举、仿真等算法思想解决问题,实现算法

经过一段时间的调研,我设计了从入门到提升的算法教学路径,收集并整理了大量的相关素材,然后用《Python算法之旅》微信公众号推送系列文章。

为了表达方式更加灵活,视角更加多元,语言更加生动,我打算展示运用人物对话的方式解决问题的思路和知识点。 我希望大家会喜欢。

登场人物介绍:

xwdyt :小学四年级学生加入了学校的编程兴趣小组,了解了Python语言的基本语法,能听懂简单的程序了。 她工作态度粗暴,对一切都很好奇,喜欢打破沙锅问到底,是一种爱与恨的有趣心情。

狂野的蝴蝶:一个非常喜欢编程的八年级男孩。 据说他很像国宝大熊猫,但动作缓慢,很可爱。 他确实工作很慢,说话也很慢,但他一点也不担心。 他经常说:“慢是快。 只要坚持下去,蜗牛也能爬金字塔”。

yydhmg :虽然年事已近不惑,但依然对生活充满热情。 “爱生活爱运动”是他的人生信条,和孩子们一起编程是他最大的乐趣。 他神出鬼没,总是在孩子们最需要帮助的时候出现。 当然,也不能马上找yydhmg。 他很忙,所以很忙。 所以,有问题的话自己先考虑吧。

字符串游戏身份证号码的秘密

xwdyt :最近听我们老师说,网上有很多骗子利用人们泄露的身份信息进行诈骗活动,很多人都被骗了呢。 老师提醒我们不要随便告诉别人自己的身份证号码,以免被坏人利用。 身份证号码上真的包含很多关于我们的个人信息吗?

狂野的蝴蝶:是的。 所有拥有中华人民共和国国籍的公民都有唯一不变的18个身份证号码。

xwdyt:18位? 有那么多吗!

狂野的蝴蝶:是的。 需要这么多。 否则,太短了不够。 这18个号码的排列顺序从左到右依次为: 6位数字地址码、8位数字出生年月日代码、3位数字顺序代码和1位数字校验码。 例如,我的身份证号码是“330281200605302813”,“330281”表示我的出生地“浙江省余姚市”,“20060530”表示我的生日是2006年5月30日,“281”表示序列号

xwdyt :地址码和出生年月代码是可以理解的。 什么是顺序代码和校验码?

狂野蝴蝶:序列号是指在由同一地址码表示的区域内,给同年、同月、同日出生的人赋予的序列号,序列号的奇数分配给男性,偶数分配给女性。 校验码是根据前面17位数字码计算出的校验码,是判断身份证号码是否有效的一个依据。

xwdyt :原来如此! 那是说如果你知道我的身份证号码,就能知道我的生日吗?

狂野的蝴蝶:是的。 不仅知道你的生日,还知道出生地和性别呢。 xwdyt,其实是用Python编写程序,根据输入的18位身份证号码,可以输出该市民的出生年月日和性别。

xwdyt :这很简单。 不仅仅是使用字符串切片方法访问子字符串吗? 请看我的。

问题:根据输入的18人身份证号码,输出该市民的出生年月日和性别。

代码: id_num=input ('请输入身份证号码:')

birthday=id _ num [ 6:10 ] '-' id _ num [ 10:12 ] '-' id _ num [ 12:14 ]

sex='男' ifint(id_num[14:17] ) % 2==1 else '女)。

打印(二进制,sex ) )。

yydhmg:xwdyt太棒了! 这条代码真漂亮啊。 狂野的蝴蝶,你能把这段代码的功能抽象成一个函数吗?

狂野的蝴蝶:当然可以。 也可以写和xwdyt不同的代码。

功能:根据输入的18位身份证号码,返回该市民的出生年月日和性别。

函数名称: id_INF(id_num:str )- tuple

参数表: id_num --包含数字身份证号码的字符串。

返回值:包含出生年月日信息和性别的元组。

示例输入id_num='330281200605302813 ',2006-05-30,返回男子(返回

示例输入id_num='330281201010310641 ',返回(2010-10-31,女性)

代码: defid_INF(id_num:str ) -

tuple:

birthday = id_num[6:10] + '-' + id_num[10:12] + '-' + id_num[12:14]

sex = '女男'

r =int(id_num[16]) % 2

return (birthday, sex[r])

xwdyt:狂野的小蝴蝶,你不错啊!竟然使用sex字符串来代替了我的if语句,而且只提取了顺序码的最后一个数字来判断其奇偶性,确实比我强!不过我知道提取第17个字符还有另外一种写法,那就是id_num[-2]。

yydhmg:确实是这样,你们两个都很不错,都熟练地掌握了字符串切片和拼接的方法。但是我要指出的是,狂野的小蝴蝶在示例2中给出的身份证号“330281201010310641”是一个无效的身份证号。

xwdyt、狂野的小蝴蝶:啊!无效的身份证号?老师你是怎么看出来的?

yydhmg:这个嘛。。。。。。不好意思我还有别的事情要忙,这个问题你们还是自己先思考一下吧。再会。

作者简介:巧若拙,微信昵称“dbdbz”。高中信息技术教师,专心研究中小学编程和算法教学,在“Python算法之旅”微信公众号撰写原创文章近百篇,愿意和大家一起探讨中小学算法教育课题,请多多指教。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。