2022年3月16日 星期三

a020陣列應用_身分證檢驗

 

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): printord(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")


沒有留言:

張貼留言