亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python實戰小項目之如何實現身份證信息校驗

發布時間:2021-10-20 15:22:58 來源:億速云 閱讀:173 作者:iii 欄目:開發技術

這篇文章主要介紹“Python實戰小項目之如何實現身份證信息校驗”,在日常操作中,相信很多人在Python實戰小項目之如何實現身份證信息校驗問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python實戰小項目之如何實現身份證信息校驗”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

目的

制作個程序,輸入身份證號碼,輸出如下信息

性別 : 男
地區 : 福建省龍巖市永定縣
出生年月日: 2000年05月01日
出生當日派出所登記的第 1 個男孩
校驗碼: 0
身份證號真偽性: 真

所需文件與知識

  • 身份證區域代碼.xls(已上傳)

  • 身份證號碼組成

  • 身份證校驗碼算法

校驗碼算法

  • 18位身份證=17位信息數據+1位校驗碼

1到6位7到14位15到16位17位18位
區域代碼出生年月日登記所代碼性別校驗碼
  • 性別:男生為奇數,女生為偶數

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

校驗算法詳解

  • 1到17位 每位 乘以 對應的權值 再求和

  • 將結果對11取余數

  • 根據余數找到對應的校驗碼

每一位對應的權值(17位信息數據,從左往右,第一位對應7,第二位對應9,以此類推)

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

余數與校驗碼對應字典(2對應羅馬數字“X”–十)

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

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

import pandas as pd
import numpy as np
data = pd.read_excel('身份證區域代碼完整版.xls')

# 讀取18位身份證
sfz=input()

# 對身份證信息切片
position=int(sfz[0:6])
birthday=sfz[6:14]
police_code=sfz[14:16]
sex_code=int(sfz[16])
verification=int(sfz[17])

# 獲取區域名字,如福建省龍巖市永定縣
position_name=data.iloc[data.loc[data['代碼'] == position].index[0]]['名稱']

# 確定性別,并確定是該登記所第幾個登記的
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

# 校驗算法
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)

# 找到余數
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}

# 找到余數對應的第18位校驗碼
def verification_whether(target_n):
    return verification_dict[target_n]

# 看看輸入的身份證校驗碼和算出來的校驗碼是否一致,如果不一致,則是假身份證
def verification_true_false(sfz_verification,target_n_whether):
    if sfz_verification == target_n_whether:
        return "真"
    else:
        return "假"

# 將結果格式化打印出來
print("性別     :",sex(sex_code)[0])
print("地區     :",position_name)
print("出生年月日: {}年{}月{}日".format(birthday[0:4],birthday[4:6],birthday[6:8]))
print("出生當日派出所登記的第 {} 個{}孩".format(sex(sex_code)[1],sex(sex_code)[0]))
print("校驗碼:",verification)
print("身份證號真偽性:",verification_true_false(verification,verification_whether(target)))

到此,關于“Python實戰小項目之如何實現身份證信息校驗”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南和县| 榆中县| 岑溪市| 玉龙| 祁阳县| 万盛区| 饶阳县| 宁化县| 孟村| 什邡市| 治县。| 成安县| 玛纳斯县| 外汇| 新乐市| 西林县| 当雄县| 镇沅| 淄博市| 周至县| 达尔| 南江县| 彩票| 页游| 黔东| 河间市| 泊头市| 阿合奇县| 米脂县| 密云县| 博客| 罗甸县| 新平| 新疆| 桦甸市| 龙游县| 广饶县| 游戏| 长垣县| 汝城县| 大同市|