python验证身份证号码_用Python校验身份证号码

本文介绍如何使用Python按照GB11643-1999标准验证18位身份证号码的有效性。通过计算加权因子和校验位,提供了一个完整的身份证号码校验函数,并展示了如何在部分号码未知的情况下遍历可能的有效身份证号码。
摘要由CSDN通过智能技术生成

当前我国身份证号码是18位号码,执行标准是GB11643-1999,该标准对身份证号码的每一位的意义,计算方法有详细说明,特别是第18位作为校验位,有特定的算法,按照该算法,编写python代码,可以用于校验身份证号码是否有效。代码如下

# t代表身份证号码的位数,w表示每一位的加权因子

t = []

w = []

for i in range(0,18):

t1 = i + 1

t.append(t1)

w1 = (2 ** (t1-1)) % 11

w.append(w1)

#队列w要做一个反序

w = w[::-1]

# 根据前17位的余数,计算第18位校验位的值

def for_check(n):

# t = 0

for i in range(0,12):

if (n + i) % 11 == 1:

t = i % 11

if t == 10:

t = 'X'

return t

# 根据身份证的前17位,求和取余,返回余数

def for_mod(id):

sum = 0

for i in range(0,17):

sum += int(id[i]) * int(w[i])

# print(int(id[i]),int(w[i]),sum)

sum = sum % 11

# print(su

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值