ptal1-016+查验身份证+测试点2
时间: 2023-12-14 21:32:48 浏览: 276
根据提供的引用内容,我们需要验证给定的身份证号码的校验码是否有效,并输出有问题的号码。具体步骤如下:
1. 首先,我们需要编写一个函数来验证身份证号码的校验码是否有效。校验码的计算方法如下:
- 首先将身份证号码前17位分别乘以不同的系数,系数分别为:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2。
- 然后将这17个乘积相加,得到一个和。
- 将这个和除以11,得到一个余数。
- 根据余数得到对应的校验码,校验码的对应关系为:0-1、1-0、2-X、3-9、4-8、5-7、6-6、7-5、8-4、9-3、10-2。
下面是验证身份证号码校验码的函数:
```python
def check_id(id_num):
# 系数
factors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
# 校验码对应关系
check_codes = {0: '1', 1: '0', 2: 'X', 3: '9', 4: '8', 5: '7', 6: '6', 7: '5', 8: '4', 9: '3', 10: '2'}
# 计算和
s = sum([int(id_num[i]) * factors[i] for i in range(17)])
# 计算余数
r = s % 11
# 返回校验码是否正确
return check_codes[r] == id_num[-1]
```
2. 接下来,我们需要读入身份证号码,并验证校验码是否有效。如果校验码无效,则输出该身份证号码。具体代码如下:
```python
# 读入身份证号码个数
n = int(input())
# 逐个读入身份证号码,并验证校验码是否有效
for i in range(n):
id_num = input().strip()
if not check_id(id_num):
print(id_num)
```
阅读全文