用Python编写函数q3(id)输入身份证号,正确的返回Ture,错误的返回False
时间: 2024-05-01 15:19:08 浏览: 132
以下是用 Python 编写的函数 `q3`,可以输入身份证号并判断其正确性:
```python
def q3(id):
"""
判断身份证号是否正确
:param id: 身份证号
:return: True/False
"""
# 首先判断身份证号位数是否正确
if len(id) != 18:
return False
# 判断前17位是否全部为数字
if not id[:17].isdigit():
return False
# 判断最后一位是否为数字或 X
if not id[-1].isdigit() and id[-1] != 'X':
return False
# 判断出生年月是否合法
year = int(id[6:10])
month = int(id[10:12])
day = int(id[12:14])
try:
import datetime
datetime.datetime(year, month, day)
except ValueError:
return False
# 判断校验码是否正确
factors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
check_sum = sum([int(id[i]) * factors[i] for i in range(17)]) % 11
check_codes = '10X98765432'
if check_codes[check_sum] != id[-1]:
return False
return True
```
这个函数首先判断身份证号的位数,然后判断前17位是否全部为数字,最后一位是否为数字或 X,出生年月是否合法,以及校验码是否正确。如果判断全部通过,则返回 True,否则返回 False。
阅读全文