当前我国身份证号码是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