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过不去,就是因为我在验证是否是数字,和求和是分了两个循环实现的,所以一直在报错,在网上查看了资料发现可以一块判断。然后需要注意的就是在判断的时候注意身份证的最后一位,要单独拿出判断,不然的话会出现下标越界的现象。
#查验身份证
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过不去,就是因为我在验证是否是数字,和求和是分了两个循环实现的,所以一直在报错,在网上查看了资料发现可以一块判断。然后需要注意的就是在判断的时候注意身份证的最后一位,要单独拿出判断,不然的话会出现下标越界的现象。
相关文章推荐
- 1031. 查验身份证(15) python篇
- PAT(basic level) 1031 查验身份证(15)
- 浙江大学PAT_乙级_1031. 查验身份证(15)
- PATB1031.查验身份证(15)
- PAT-乙级-1031. 查验身份证(15)
- 1031. 查验身份证(15)
- 1031. 查验身份证(15)(C++)
- PAT 乙级 1031. 查验身份证(15) Java版
- 1031. 查验身份证(15)
- PAT (Basic Level) Practise (中文)1031. 查验身份证(15)
- 1031. 查验身份证(15)
- PAT (Basic Level) Practise (中文) 1031. 查验身份证(15)
- PAT 1031 查验身份证(15)
- PAT乙级—1031. 查验身份证(15)-native
- 1031. 查验身份证(15)
- 1031. 查验身份证(15)-PAT乙级真题
- 1031. 查验身份证(15)
- 1031. 查验身份证(15)
- 1031. 查验身份证(15):把vector相关内容复习了···
- PAT Basic 1031. 查验身份证(15)(C语言实现)