1031. 查验身份证(15)--Python

来源:互联网 发布:淘宝天猫内部优惠劵 编辑:程序博客网 时间:2024/05/22 13:42

测试点通不过:

#查验身份证def have_judge(my_list, judge_list, factor_list):  sum = 0 x = 0 last_num = my_list[-1]my_list = my_list[:17]for i in my_list:if i >= '0' and i <= '9':sum += int(i) * factor_list[x]x += 1else:return Falseremainder = sum % 11 if judge_list[remainder] == last_num:return Trueelse:return False  num = int(input())count = 0 judge_list = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']factor_list = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10,5, 8, 4, 2]for i in range(num):my_list = input()if have_judge(my_list, judge_list, factor_list) == False:print(my_list)else:count += 1if count == num:  print("All passed")

在判断输入的身份证号时,若是遇到的是非数字则直接的返回False,若是数字的话,直接的进行求和,不用再来一遍关门为了求和。

之前提交的那次一直是测试点2过不去,就是因为我在验证是否是数字,和求和是分了两个循环实现的,所以一直在报错,在网上查看了资料发现可以一块判断。然后需要注意的就是在判断的时候注意身份证的最后一位,要单独拿出判断,不然的话会出现下标越界的现象。


原创粉丝点击