应该是index out of range,这个是下标超过了字符长度,可以先判断字符串长度。
if len(s) <= 17: 遍历len(s)而不是range(17)了
看题目统一打印:
l = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
d = '10X98765432'
t = int(input(">>>"))
code = {}
for i in range(t):
s = str(input(">>>"))
flag = True
for j in range(17):
if s[j] not in '0123456789':
flag = False
code[s] = False
break
if flag:
code[s] = True
flag = True
for k, v in code.items():
if v == False:
print(k)
flag = False
continue
sum = 0
for j in range(17):
sum = (sum + int(k[j]) * l[j])
sum = sum % 11
if d[sum] != k[17]:
print (k)
flag = False
if flag:
print("All Pass")