Python验证身份证号码是否有效

news/2024/11/23 5:27:11/

判断其是否有效 

  • 若不为18位,提示“长度错误”
  • 若前17位不为数字,提示“有无效字符”
  • 最后一位为校验码,若错误,提示”校验码错误”, 若校验码正确,提示“校验码正确”

校验码产生规则

身份证校验码产生的规则如下所示: 将前面的身份证号码17位数分别乘以不同的系数。 从第1位到第17位的系数分别为:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2 ; 将这17位数字和系数相乘的结果相加; 用加出来和除以11,看余数是多少; 余数只可能有0、1、2、3、4、5、6、7、8、9、10这11个数字。其分别对应的最后一位身份证的号码为1、0、X、9、8、7、6、5、4、3、2,其中的X是罗马数字10; 通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ;如果余数是10,身份证的最后一位号码就是2。

#! /usr/bin/env python                                                                                                                                   
# -*- coding: utf-8 -*-def verifyByIDCard(idcard):sz = len(idcard)if sz != 18:return Falseweight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]validate = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']sum = 0for i in range(len(weight)):sum += weight[i] * int(idcard[i])m = sum % 11return validate[m] == idcard[sz-1]if __name__ == "__main__":idcard = "150105194567890122"print(verifyByIDCard(idcard))

http://www.ppmy.cn/news/503047.html

相关文章

Java验证身份证号

一、需求和算法 需求 使用 Java 中 util 包通过键盘输入身份证号。使用算法校验身份证号是否合法。根据身份证号获取用户出生地。根据身份证号获取用户生日。根据身份证号获取用户性别。打印出生地、生日、性别。 算法 取出身份证号前 17 位与指定系数相乘。系数表如下&#x…

关于验证身份证号码是否为真实有效

以下代码仅供参考 void number(){char buf[] "身份证号码";int per[] {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};char ver[] "10X98765432";int i,count;printf("\n%d\n",strlen(buf));for(i 0;i < 17;i)count (int)(buf[i]-0)*per[i]; …

PHP 判断身份证号

PHP 检验身份证号可以使用正则表达式来实现。可以在正则表达式中规定身份证号的格式&#xff0c;然后使用 PHP 中的 preg_match 函数来判断输入的字符串是否符合这个格式。如果符合&#xff0c;返回 true&#xff0c;不符合返回 false。 下面是一个简单的例子&#xff0c;可以检…

Java判断身份证号码是否正确

方法如下&#xff1a; public static final int IDENTITYCODE_OLD 15; // 老身份证15位public static final int IDENTITYCODE_NEW 18; // 新身份证18位public static int[] Wi new int[17];/*** 判断身份证号码是否正确。* * param code* 身份证号码。* return …

验证身份证号码,较为完整的,可以验证身份证真伪

下边的方法可以较为完整的验证身份证真伪&#xff0c;可到当前平台验证身份证真伪http://www.ip33.com/shenfenzheng.html checkCode(val) { var p /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/ var factor [7, 9, 10, 5, 8, 4,…

验证身份证号码是否为正确值

今天&#xff08;2018-04-09&#xff09;在整理正则表达时&#xff0c;有一个关于身份证号码的正则匹配。最简单的不动脑子的匹配方式为&#xff1a;^[1-9]\d{16}[\d|x]$&#xff0c;但是这样很容易伪造一个身份证号来骗过电脑&#xff0c;于是加强版的正则匹配为&#xff1a; …

使用JS校验身份证号

1. 中国居民身份证号码编码规则 第一、二位表示省&#xff08;自治区、直辖市、特别行政区&#xff09;&#xff0c;对于地区代码。 第三、四位表示市&#xff08;地级市、自治州、盟及国家直辖市所属市辖区和县的汇总码&#xff09;。其中&#xff0c;01-20&#xff0c;51-70表…

身份证号处理c语言

18位身份证号码&#xff1a;第7、8、9、10位为出生年份(四位数)&#xff0c;第11、第12位为出生月份&#xff0c;第13、14位代表出生日期&#xff0c;第17位代表性别&#xff0c;奇数为男&#xff0c;偶数为女。 用户输入一个合法的身份证号&#xff0c;请输出用户的出生年月日…