

知识点:
1.这里的加权求和就是指每一位乘以题目给的对应位置上的数字
在python中,对于int('10')这样的转换而来的直接是整数10,但是在c语言中会转换成ASCII值,所以要特别注意
2.本题中有两种情况是错误的,就是要直接输出
①前十六位不全为数字:这里用到了对字符串的切片(0:-1 0可以取到,-1表示最后一个,不能取到,所以这里只能取出前16位),不过注意字符串是不可变数据类型奥,切片可以(相当于生成一个新的字符串),修改不可以。还用到了isdigit()内置函数判断是否是数字(isalnum()判断是否全是字母,isalpha()判断是否全是数字或字母)
②最后一位与计算出来的结果不符合
正确代码:
N = int(input())
quan_zhong = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
arr = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
flag = 0
for i in range(N):
    string = input()
    sum1 = 0
    if string[0:-1].isdigit():
        for j in range(17):
            sum1 += int(string[j]) * quan_zhong[j]
        z = sum1 % 11
        if arr[z] != string[17]:
            print(string)
            flag = 1
    else:
        print(string)
        flag = 1
if flag == 0:
    print("All passed")



















