a020陣列應用_身分證檢驗
020: 身分證檢驗 我國的身分證字號有底下這樣的規則,因此對於任意輸入的身分證字號可以有一些基本的判斷原則,請您來判斷一個身分證字號是否是正常的號碼(不代表確有此號、此人)。
(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 + 79 + 18 + 17 + 26 + 65 + 64 + 33 + 82 + 3*1 + 6 = 180
除以 10 整除,因此為 real
#--------------程式--------------
a=[10,11,12,13,14,15,16,17,34,18,19,20,21,22,35,23,24,25,26,27,28,29,32,30,31,33]
str="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for i in range(26):print(a[ord(str[i])-65],",",end="")
print()
for i in range(26): print( ord(str[i])-65,",",end="" )
#--------------程式--------------
a=[10,11,12,13,14,15,16,17,34,18,19,20,21,22,35,23,24,25,26,27,28,29,32,30,31,33]
# str="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
# for i in range(26):print(a[ord(str[i])-65],",",end="")
ID=input() # T112663836 = 240
#ID="T112663836"
x=a[ord(ID[0])-65] # int x= "T"=27
total = int(x/10) + (x%10)*9
total += 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( total%10 == 0):
print("real")
else:
print("fake")
沒有留言:
張貼留言