python定义公民类、变量有身份证号_Python趣解身份证号码的奥秘!

原标题:Python趣解身份证号码的奥秘!

问题描述

作为一个公民,每个人都有一张独一无二的身份证,有独一无二的身份证号码。在这里面几乎储存了我们所有的行踪与信息,所以有很多不法分子能够仅通过身份证号码进行一些犯罪活动。 然而在生活中其实很容易泄露这些信息,比如车票等等,虽然遮住了4位数字,但这真的安全吗?

解决方案

通过简单的查询,我们不难知道,其实身份证号码虽然独一无二,但其生成的规律确是固定的,仅仅通过公式便能确定一个身份证号码是否正确,反之也可以通过一个确定正确但不完整的身份证号码来反推完整信息。

身份证的组成部分相信大家都明白,其最重要的是最后一位校验码,而校验码的计算其实非常简单:

前17位数字每一个对应了一个系数,分别是7. 9 .10 .5. 8. 4. 2. 1. 6. 3. 7. 9. 10. 5. 8. 4. 2,将每一位数字与系数相乘得到的数加在一起除以11的余数一定在0-10以内。然后0 、1、 2、 3、 4、 5、 6、 7、 8、 9、 10这11个数字。其分别对应的最后一位身份证的号码为1 .0. X. 9. 8. 7. 6. 5. 4. 3. 2.,这样就得到自己的校验码,读者当然可以自己试试自己的身份证号码。

虽然我们知道,就算硬算,也不过366种尝试就能得到结果,但学习语言就是为了简化,所以笔者自己写了一段判断身份证是否正确和大致推算身份证号码的代码,读者可以自己试试是否有效。

Python代码:判断身份证号是否真实

def ID_Card_judgment(ID_num):

list1 = [7,9,10,5,8,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值