一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python實(shí)戰(zhàn)小項(xiàng)目之身份證信息校驗(yàn)

Python實(shí)戰(zhàn)小項(xiàng)目之身份證信息校驗(yàn)

2022-02-13 11:45同心圓計(jì)算 Python

讀萬(wàn)卷書不如行萬(wàn)里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Python做一個(gè)身份證信息校驗(yàn)的小項(xiàng)目,大家可以在過(guò)程中查缺補(bǔ)漏,提升水平

python小項(xiàng)目–身份證信息校驗(yàn)

目的

制作個(gè)程序,輸入身份證號(hào)碼,輸出如下信息

性別 : 男
地區(qū) : 福建省龍巖市永定縣
出生年月日: 2000年05月01日
出生當(dāng)日派出所登記的第 1 個(gè)男孩
校驗(yàn)碼: 0
身份證號(hào)真?zhèn)涡裕?真

所需文件與知識(shí)

  • 身份證區(qū)域代碼.xls(已上傳)
  • 身份證號(hào)碼組成
  • 身份證校驗(yàn)碼算法

校驗(yàn)碼算法

  • 18位身份證=17位信息數(shù)據(jù)+1位校驗(yàn)碼
1到6位 7到14位 15到16位 17位 18位
區(qū)域代碼 出生年月日 登記所代碼 性別 校驗(yàn)碼
  • 性別:男生為奇數(shù),女生為偶數(shù)

1表示第一個(gè)登記的男生
3表示第二個(gè)登記的男生
以此類推

校驗(yàn)算法詳解

  • 1到17位 每位 乘以 對(duì)應(yīng)的權(quán)值 再求和
  • 將結(jié)果對(duì)11取余數(shù)
  • 根據(jù)余數(shù)找到對(duì)應(yīng)的校驗(yàn)碼

每一位對(duì)應(yīng)的權(quán)值(17位信息數(shù)據(jù),從左往右,第一位對(duì)應(yīng)7,第二位對(duì)應(yīng)9,以此類推)

?
1
weights=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]

余數(shù)與校驗(yàn)碼對(duì)應(yīng)字典(2對(duì)應(yīng)羅馬數(shù)字“X”–十)

?
1
2
3
4
5
6
7
8
9
10
11
verification_dict={0:1,
                   1:0,
                   2:"X",
                   3:9,
                   4:8,
                   5:7,
                   6:6,
                   7:5,
                   8:4,
                   9:3,
                   10:2}

完整代碼展示(你可以自己先做)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import pandas as pd
import numpy as np
data = pd.read_excel('身份證區(qū)域代碼完整版.xls')
 
# 讀取18位身份證
sfz=input()
 
# 對(duì)身份證信息切片
position=int(sfz[0:6])
birthday=sfz[6:14]
police_code=sfz[14:16]
sex_code=int(sfz[16])
verification=int(sfz[17])
 
# 獲取區(qū)域名字,如福建省龍巖市永定縣
position_name=data.iloc[data.loc[data['代碼'] == position].index[0]]['名稱']
 
# 確定性別,并確定是該登記所第幾個(gè)登記的
def sex(n):
    train_list=[]
    male_list=[1,3,5,7,9]
    female_list=[0,2,4,6,8]
    if n in male_list:
        train_list.append('男')
        train_list.append(male_list.index(n)+1)
    else:
        train_list.append('女')
        train_list.append(female_list.index(n)+1)
    return train_list
 
# 校驗(yàn)算法
weights=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
sfz_code=[]
for item in sfz:
    sfz_code.append(int(item))
    
weights_sfz=[]
 
for i in sfz_code:
    for j in weights:
        weights_sfz.append(i*j)
 
# 找到余數(shù)
target=sum(weights_sfz)%11
 
verification_dict={0:1,
                   1:0,
                   2:"X",
                   3:9,
                   4:8,
                   5:7,
                   6:6,
                   7:5,
                   8:4,
                   9:3,
                   10:2}
 
# 找到余數(shù)對(duì)應(yīng)的第18位校驗(yàn)碼
def verification_whether(target_n):
    return verification_dict[target_n]
 
# 看看輸入的身份證校驗(yàn)碼和算出來(lái)的校驗(yàn)碼是否一致,如果不一致,則是假身份證
def verification_true_false(sfz_verification,target_n_whether):
    if sfz_verification == target_n_whether:
        return "真"
    else:
        return "假"
 
# 將結(jié)果格式化打印出來(lái)
print("性別     :",sex(sex_code)[0])
print("地區(qū)     :",position_name)
print("出生年月日: {}年{}月{}日".format(birthday[0:4],birthday[4:6],birthday[6:8]))
print("出生當(dāng)日派出所登記的第 {} 個(gè){}孩".format(sex(sex_code)[1],sex(sex_code)[0]))
print("校驗(yàn)碼:",verification)
print("身份證號(hào)真?zhèn)涡裕?quot;,verification_true_false(verification,verification_whether(target)))

才疏學(xué)淺,代碼諸多不足,歡迎交流學(xué)習(xí)!
Jay Kwong

到此這篇關(guān)于Python實(shí)戰(zhàn)小項(xiàng)目之身份證信息校驗(yàn)的文章就介紹到這了,更多相關(guān)Python 身份證校驗(yàn)內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!

原文鏈接:https://blog.csdn.net/JChunking/article/details/120849597

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日不卡 | 高人先生免费观看全集 | 好吊妞乱淫 | 人体欣赏孕妇季玥图片 | 久草色视频 | 妹妹骑上来蹭着蹭着就射了 | 韩国办公室激情 | 国产在线观看人成激情视频 | 成人久久网站 | 久久精品午夜一区二区福利 | 精品一久久香蕉国产二月 | 日本www视频在线观看 | 校园纯肉H教室第一次 | 亚洲日本免费 | 日韩精品1| 啊哈用力cao我 | 52zfl宅福利yxpjw | 无码人妻少妇色欲AV一区二区 | 欧美xbxbxbxb大片 | 欧美综合精品一区二区三区 | 丝袜护士强制脚足取精 | 99国产牛牛视频在线网站 | 69成人影院 | 亚洲精品国产专区91在线 | 贤妻良母电影日本 | 69japanese日本100 6969精品视频在线观看 | 欧美一区二区三区在线观看免费 | 美女脱了内裤张开腿亲吻男生 | 色花堂中文字幕98堂网址 | 韩国理论片最新第一页 | 99久久精品免费看国产 | 欧美调教打屁股spank视频 | 色婷婷天天综合在线 | 耽美肉文高h | 久久热r在线视频精品 | 国产成人精品.一二区 | 精精国产xxxx视频在线播放器 | 亚洲天天综合 | 亚洲欧美韩国日产综合在线 | 污污在线免费观看 | 我半夜摸妺妺的奶C了她软件 |