输入:第一行为一个数字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)