您的位置:首页 > 编程语言 > Python开发

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

2017-10-25 12:07 393 查看
测试点通不过:

#查验身份证

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 += 1
else:
return False

remainder = sum % 11
if judge_list[remainder] == last_num:
return True
else:
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 += 1
if count == num:
print("All passed")

在判断输入的身份证号时,若是遇到的是非数字则直接的返回False,若是数字的话,直接的进行求和,不用再来一遍关门为了求和。
之前提交的那次一直是测试点2过不去,就是因为我在验证是否是数字,和求和是分了两个循环实现的,所以一直在报错,在网上查看了资料发现可以一块判断。然后需要注意的就是在判断的时候注意身份证的最后一位,要单独拿出判断,不然的话会出现下标越界的现象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: