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
微信扫码关注
抖音扫码关注