介紹台灣身份證字號的驗證規則,以及如何使用 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 個數字依序乘以 9
、8
、7
、…、1
後,把所有數字加總起來,再計算除以 10 的餘數,若餘數為 0,則代表身分證字號驗證成功。
以 E160235953
這一筆身分證字號為例,E
轉為數字後變成 14
,加上後面的 9 個數字就變成 14160235953
,接著把將中間的 9 個數字依序乘以 9
到 1
:
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)
身分證字號驗證通過