python实现简单验证⾝份证号码合法性
简单的判断⾝份证合法性
1.⾝份证前17位必须是数字
⽤str.isdight()来判断前17位是否全是数字
2.w中保存的是前17位数字的权重分配
3.m中保存的是校验码
题⽬详情
⼀个合法的⾝份证号码由17位地区、⽣⽇编号和顺序编号加1位校验码(第18位)组成。
校验码的计算规则如下:
⾸先对前17位数字加权求和,
权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10, 5,8,4,2};
行车记录仪 推荐
然后将计算的和对11取模得到值Z;最后按照以下关系通过Z值获取对应的校验码M的值:
Z:0 1 2 3 4 5 6 7 8 9 10
M:1 0 X 9 8 7 6 5 4 3 2
编写函数valid判定⼀个⾝份证号码是否有效,有效则返回1,否则返回0。
例如”650402************”是⼀个有效的⾝份证号,返回1;⽽”53072419770421191”则不是,则返回0.实现该函数。
from math import*
#请完成此函数,判定⼀个⾝份证号码是否有效,有效则返回1,否则返回0
#**********Program**********
def valid(y):
y1 = y[:17]
皇子皮肤
if y1.isdigit():
y2 =list(y)
w =[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
count =0
for i in range(0,17):
count = count +(int(w[i])*int(y2[i]))
z = count %11
王思聪评论罗志祥m =[1,0,"X",9,8,7,6,5,4,3,2]
for i in range(0,10):
if int(i)== z:
s = m[i]
if str(s)==str(y[17]):
return1
192.168.1.1路由器设置密码else:龙俊亨具荷拉
return0
else:
return0
#**********  End  **********
#请不要修改下⾯的代码
if __name__ =='__main__':
ID_list =[
'330702************X','340524************','340524************',
'3307021963X226041X','330702************'
]
for i in range(0,5):
赌石耽美小说print(valid(ID_list[i]))