身份证号合法性判别

简介: 身份证号合法性判别

【问题描述】我国身份证号码由数字与字母混合组成。早期身份证由15位数字构成,后来考虑到千年虫问题(15位的身份证号码只能为1900年1月1日到1999年12月31日出生的人编号),所以又增加了18位身份证号码编号规则。最后一位(第18位)校验码的计算方法如下:

 第一步:将身份证前17位数分别乘以不同的系数。从第1位到第17位的系数分别为:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2,将17位数字和系数相乘的结果相加。
 第二步:将上一步结果除以11求余数,则余数只可能是0-10,身份证最后一位的对应字符为1、0、X、9、8、7、6、5、4、3、2。
 例如余数结果为3,则对应身份证号码的最后一位就是9,如果是10,身份证最后一位便是2。
 请根据上述算法判断输入的身份证号是否合法。

【输入形式】一行18位的字符串,代表一个身份证号
【输出形式】如果输入的是合法身份证号,请输出“YES”,否则输出“NO”
【样例输入】110000000000000000
【样例输出】NO
【样例说明】不合法身份证号,输出“NO”
【评分标准】共5个测试用例,全部通过为满分`

a = input()
alist = []
for i in range(0, 17):
    alist.append(a[i])
alist = [int(x) for x in alist]
s = 7 * alist[0] + 9 * alist[1] + 10 * alist[2] + 5 * alist[3] + 8 * alist[4] + 4 * alist[5] + 2 * alist[6] + 1 * alist[
    7] + 6 * alist[8] + 3 * alist[9] + 7 * alist[10] + 9 * alist[11] + 10 * alist[12] + 5 * alist[13] + 8 * alist[
        14] + 4 * alist[15] + 2 * alist[16]
if s % 11 == 0 and int(a[17]) == 1:
    print("YES")
elif s % 11 == 1 and a[17] == "0":
    print("YES")
elif s % 11 == 3 and a[17] == "9":
    print("YES")
elif s % 11 == 4 and a[17] == "8":
    print("YES")
elif s % 11 == 5 and a[17] == "7":
    print("YES")
elif s % 11 == 6 and a[17] == "6":
    print("YES")
elif s % 11 == 7 and a[17] == "5":
    print("YES")
elif s % 11 == 8 and a[17] == "4":
    print("YES")
elif s % 11 == 9 and a[17] == "3":
    print("YES")
elif s % 11 == 10 and a[17] == "2":
    print("YES")
elif s % 11 == 2 and a[17] == "X":
    print("YES")
else:
    print("NO")
相关文章
|
19天前
证件校验正则
证件校验正则
15 0
|
6月前
|
前端开发 JavaScript
JS前端实现身份证号码合法性校验(校验码校验)
JS前端实现身份证号码合法性校验(校验码校验)
144 0
|
11月前
|
机器学习/深度学习 算法 大数据
如何通过空号检测,验证电话号码数据的准确性
空号检测接口通过结合数据查询和验证算法,为企业和个人提供了一种有效的方式来确定电话号码的有效性。它在营销、客户服务、身份验证和运营商等方面发挥着重要作用,提高了资源利用效率、用户体验和数据准确性。随着通信技术的发展,空号检测接口将继续发挥更大的作用,帮助解决电话号码有效性的挑战
243 0
手机号码随机生成器
此功能的作用:我们工作中经常遇到一张表格里面有很多杂乱的文本,比如手机号码、座机号码、汉字、字母等混乱的文本在一起,但是我们只想要里面的手机号码,不要其他的文本,数量很大的时候,手动一个找挑出来复制粘贴,那简直是累死,那么我们的软件可以智能识别并提取里面的11位手机号码,也可以提取里面的扣扣号码,邮箱等。简直是解放双手的好工具。
手机号码随机生成器
电话号码生成器和电话号码生成软件
海豚号码生成器,是一个在电脑上常用的办公软件。但是有些对电脑不太会操作的朋友们还是不太明白它的操作方法。它具有多种手机号码生成功能、号码导入手机通讯录和对号码进行综合整理的功能。具体说有这七种功能:手机号码随机生成功能、手机豹子号靓号生成功能、自定义手机号段生成功能、手机号码批量导入手机通讯录功能、杂乱文本中提取手机号码功能、手机号码打印前排版功能、手机号码综合整理功能。下面我详细讲解七大功能之一的手机号码的综合整理操作方法,以便帮到更多不太会操作电脑软件的朋友们。手机号码的综合整理操作步骤:当你的手里有大量的号码,想做一些整理的时候:去除不是手机号码的号码、去除重复号码、号码按顺序排
电话号码生成器和电话号码生成软件
电话号码脱敏
电话号码脱敏
358 0
电话号码验证器(FreeCodeCamp)
电话号码验证器(FreeCodeCamp)
359 0
电话号码验证器(FreeCodeCamp)
|
Web App开发 JavaScript