一笑师兄:
用实战、趣味、精炼的大白话讲Python
做Python初学者的引路之光
上一篇文章写了身份证系列的第一部分,也就是出生日期的核验。
文章地址如下:
Python入门实战项目:身份证系列1 号码核验
现在写程序都是边写边录制的,所以文字部分就不多说了,
你可以直接看代码、看注释,
看不懂的,可以去B站看视频讲解。
过去30天,这个号给我带来了 3.42 元的收入,
所以,写这些文章,就当随笔记录了,
当然,有需要的朋友我也可以帮了下,
一切随缘!
这是对上一次程序的优化,
不然乱写一通,只要身份证号码是18位,就能进行一步,那程序就崩溃了。
所以,需要增加一个验证:
前17位是数字
ifnot s[:18].isdigit():
print("前17位不全是数字!")
return
isdigit是判断字符串是否为数字的命令
身份证的最后一位是核验码,核验规则是:
#判断第18位的校验码
list1 = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
# 计算前17位的和
sum1 = 0
for i in range(17):
sum1 += int(s[i]) * list1[i]
m = sum1 % 11#求余数
读取用户身份证最后一位与我们计算的核验码是否一致,
一致就表示正确,不一致自然就是错的
dict1 = {
0:'1',1:'0',2:"X",3:'9',4:'8',5:'7',6:'6',7:'5',8:'4',9:'3',10:'2'
}
if s[-1] != dict1[m]:
print("第18位校验码不正确!")
return
这个身份证号码系列是Python初学者非常好的练手项目,
包含各种Python的语法,比如名种语句、数据类型的使用等,
后续,还将继续进行优化,可能包括:
程序源代码: https://www.yxpython.com/id-card-check2/ 视频版地址: https://www.bilibili.com/video/BV1y1wjzCETZ
如果此文对你有帮助,请 点个赞 !
我的小目标 --- 帮助到 10000个朋友轻松入门Python,
你的点赞,是我知道你在的最好方式 ❤️
想学什么?卡在哪?欢迎留言告诉我!