Python:身份号码验证

输入:第一行为一个数字n,表示后面有n行待判定的号码
第二行起每行为18个数字的字符串,表示要验证的身份证号码
输出:一个数值,表示正确的身份证的个数

望采纳,谢谢!

def iscur(id):
    ten = ['X', 'x', 'Ⅹ']
    ID = ["10" if x in ten else x for x in lis]     #将罗马数字Ⅹ和字母X替换为10
    W = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
    Checkcode = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]
    sum = 0
    for i in range(17):     #https://blog.zeruns.tech
        sum = sum + int(ID[i]) * W[i]
    if Checkcode[sum % 11] == int(ID[17]):
        return True
    else:
        return False

        
n = int(input("身份证个数:"))
count = 0
for i in range(n):
    try:
        lis = list(input())
        if iscur(lis):
            count += 1
    except:
        pass
print(count)
def check_card(card): 
    coe =[7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]  
    tail = '10X98765432'
    s = sum(map(lambda x:coe[x[0]] * int(x[1]), enumerate(card[:17])))
    res = tail[s % 11]
    if res == card[-1]:
        return True
    else:
        return False
    

n = int(input(">>>"))
ii = 0
for i in range(n):
    c = input("input card_code:")
    if check_card(c):ii += 1
        
print("Counts:", ii)