介紹台灣身份證字號的驗證規則,以及如何使用 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)
身分證字號驗證通過

