a054: 電話客服中心
這篇教學會示範 ZeroJudge 基礎題庫「a054: 電話客服中心」的解題過程。
題目需求
根據身分證字號的規則,當題目提供身分證字號「後九碼」的數字時,透過程式推算第一碼是什麼英文字母。
題目連結:a054: 電話客服中心
解答
根據「身分證字號編碼規則」編輯對應的程式。
while True:
try:
# 建立字母與數字對照表
table = {'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}
n = [int(i) for i in list(input())] # 將輸入的文字轉換成數字串列
s = 0 # 建立變數 s 作為計算使用
for i in range(8):
s = s + n[i]*(8-i) # 根據公式算出 s
for i in table: # 依序取出對照表內所有的字母與數字
a = [int(j) for j in list(str(table[i]))] # 將對應的數字轉換成數字串列,例如 11 轉換成 [1, 1]
if n[8] == 0: # 如果檢查碼為 0,套用對應檢查公式
if (s + a[0] + a[1]*9)%10 == 0: # 如果字母對應的數字符合公式,印出該字母
print(i, end='')
else:
if 10 - (s + a[0] + a[1]*9)%10 == n[8]: # 如果字母對應的數字符合公式,印出該字母
print(i, end='')
print()
except:
break
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~