Python

Python 驗證台灣身分證字號教學與範例

介紹台灣身份證字號的驗證規則,以及如何使用 Python 撰寫身分證字號驗證程式。

台灣身份證字號驗證規則

若要驗證台灣的身分證字號,首先將第一個英文字母依照下表轉為數字:

代號 數值 縣市
A 10 台北市
B 11 台中市
C 12 基隆市
D 13 台南市
E 14 高雄市
F 15 台北縣
G 16 宜蘭縣
H 17 桃園縣
I 34 嘉義市
J 18 新竹縣
K 19 苗栗縣
L 20 台中縣
M 21 南投縣
N 22 彰化縣
O 35 新竹市
P 23 雲林縣
Q 24 嘉義縣
R 25 台南縣
S 26 高雄縣
T 27 屏東縣
U 28 花蓮縣
V 29 台東縣
W 32 金門縣
X 30 澎湖縣
Y 31 陽明山
Z 33 連江縣

接著將轉出數值的十位數與個位數拆開,合併身份證字號的後 9 個數字,總共會有 11 個數字,將中間的 9 個數字依序乘以 987、…、1 後,把所有數字加總起來,再計算除以 10 的餘數,若餘數為 0,則代表身分證字號驗證成功。

E160235953 這一筆身分證字號為例,E 轉為數字後變成 14,加上後面的 9 個數字就變成 14160235953,接著把將中間的 9 個數字依序乘以 91

1 + 4*9 + 1*8 + 6*7 + 0*6 + 2*5 + 3*4 + 5*3 + 9*2 + 5*1 + 3 = 150

最後計算出來的總合為 150,除以 10 的餘數為 0,所以這一組身分證字號有通過驗證檢核。

Python 驗證程式

以下是一個驗證台灣身分證字號的 Python 函數:

def verifyID(id):
    # 英文代號對應數值表(個位數乘以 9 加上十位數)
    alphaTable = {'A': 1, 'B': 10, 'C': 19, 'D': 28, 'E': 37, 'F': 46,
            'G': 55, 'H': 64, 'I': 39, 'J': 73, 'K': 82, 'L': 2, 'M': 11,
            'N': 20, 'O': 48, 'P': 29, 'Q': 38, 'R': 47, 'S': 56, 'T': 65,
            'U': 74, 'V': 83, 'W': 21, 'X': 3, 'Y': 12, 'Z': 30}

    # 計算總和值
    sum = alphaTable[id[0]] + int(id[1]) * 8 + int(id[2]) * 7 + int(id[3]) * 6 + int(id[4]) * 5 + int(id[5]) * 4 + int(id[6]) * 3 + int(id[7]) * 2 + int(id[8]) * 1 + int(id[9])

    # 驗證餘數
    if sum % 10 == 0:
        print("身分證字號驗證通過")
    else:
        print("身分證字號有誤")

呼叫 verifyID 函數,傳入要進行驗證的身分證字號,即可顯示驗證結果:

# 要進行驗證的身分證字號
id = "E160235953"

# 驗證的身分證字號
verifyID(id)
身分證字號驗證通過
Share
Published by
Office Guide

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago