该题需要注意的是!!!给出的18身份证号码测试点会出现数字或X以外的字符,要注意这个点加个判断,否则第三个测试点会报错非零返回(运行错误)
if __name__ == '__main__':
n = int(input())
h = {"0": "1", "1": "0", "2": "X", "3": "9", "4": "8", "5": "7", "6": "6", "7": "5", "8": "4", "9": "3", "10": "2"}
w = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
p = True
f = []
for i in range(n):
m = input()
s = 0
q = True
if len(m) != 18:
p = False
f.append(m)
continue
for j in range(17):
if m[j] not in h.keys():
p = False
f.append(m)
q = False
break
s += int(m[j]) * w[j]
if q and h[str(s % 11)] != m[17]:
p = False
f.append(m)
if p:
print("All passed")
else:
for i in f:
print(i)