a020: 身分證檢驗
#a020: 身分證檢驗
'''
我國的身分證字號有底下這樣的規則,因此對於任意輸入的身分證字號
可以有一些基本的判斷原則,請您來判斷一個身分證字號是否是正常的號碼
(不代表確有此號、此人)。
(1) 英文代號以下表轉換成數字
A=10 台北市 J=18 新竹縣 S=26 高雄縣
B=11 台中市 K=19 苗栗縣 T=27 屏東縣
C=12 基隆市 L=20 台中縣 U=28 花蓮縣
D=13 台南市 M=21 南投縣 V=29 台東縣
E=14 高雄市 N=22 彰化縣 W=32 金門縣
F=15 台北縣 O=35 新竹市 X=30 澎湖縣
G=16 宜蘭縣 P=23 雲林縣 Y=31 陽明山
H=17 桃園縣 Q=24 嘉義縣 Z=33 連江縣
I=34 嘉義市 R=25 台南縣
(2) 英文轉成的數字, 個位數乘9再加上十位數的數字
(3) 各數字從右到左依次乘1、2、3、4....8
(4) 求出(2),(3) 及最後一碼的和
(5) (4)除10 若整除,則為 real,否則為 fake
例: T112663836
2 + 7*9 + 1*8 + 1*7 + 2*6 + 6*5 + 6*4 + 3*3 + 8*2 + 3*1 + 6 = 180
除以 10 整除,因此為 real
範例輸入 #1
T112663836
範例輸出 #1
real
範例輸入 #2
S154287863
範例輸出 #2
fake
'''
# 英文轉成的數字, 個位數乘9再加上十位數的數字
ID={ "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,"S":56,"T":65,"U":74,
"V":83,"W":21,"X":3,"Y":12,"Z":30}
print('判斷一個身分證字號是否是正常的號碼')
str1= input('輸入身分證字號 字串--->')
IDno=int(ID.get(str1[0]))+int(str1[1])*8+int(str1[2])*7+int(str1[3])*6+int(str1[4])*5+int(str1[5])*4+int(str1[6])*3+int(str1[7])*2+int(str1[8])*1+int(str1[9])
print (IDno)
if ((IDno %10) ==0):
print('身分證字號是正常的號碼')
else:
print('身分證字號是錯誤')
>>> %Run a020.py
判斷一個身分證字號是否是正常的號碼
輸入身分證字號 字串--->T112663836
180
身分證字號是正常的號碼
>>> %Run a020.py
判斷一個身分證字號是否是正常的號碼
輸入身分證字號 字串--->S154287863
211
身分證字號是錯誤
>>>
沒有留言:
張貼留言