a=input("请输入身份证号")
weight=(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2) #这个是权重系数 不能更改 所以我用了元组
sum_all=0
check_code=0 #这个是计算出来的校验码
if (len(a)==18) : #判断长度
for i in range(0,17):
sum_all=int(a[i])*weight[i]+sum_all
check_code=(12-sum_all%11)%11 #计算校验码
if a[17]=="x": #比较算出来的校验码和 输入身份证号的最后一位
if check_code==10:
print (a[6:10] +"年"+ a[10:12] +"月"+a[12:14]+"日")
if ( int(a[16])%2==0):
print("女")
else :
print("男")
else:
if check_code==int(a[17]):
print (a[6:10] +"年"+ a[10:12] +"月"+a[12:14]+"日")
if ( int(a[16])%2==0):
print("女")
else :
print("男")
else:
print("校验码错误,这个号码是伪造的")
else:
print("请输入18位的身份证")
mod11-2算法检验身份证是否合法(python)
最新推荐文章于 2023-11-30 10:08:08 发布