2022年8月16日 星期二

Python a020: 身分證檢驗

 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

身分證字號是錯誤

>>> 

沒有留言:

張貼留言

WOKWI LED + MQTT Node-Red SQLite

WOKWI LED + MQTT Node-Red SQLite const char *mqtt_broker = "broker.mqtt-dashboard.com" ; const char *topic1 = "alex9ufo/e...