用python按照以下要求写一段代码并实现:我国居民身份证由18位组成,最后1位是由前17位数字按照一系列计算得到的校验码。一个身份证的前17位按照一系列计算得到的校验码若与该身份证的最后一位相同(身份证最后一位如果是X,代表阿拉伯数字10)。
时间: 2024-09-18 12:01:22 浏览: 43
当然可以,这是一个简单的Python函数,用于验证给定的18位居民身份证号码是否有效:
```python
def check_id(id_number):
# 验证身份证号长度
if len(id_number) != 18 or not id_number.isdigit():
return False
# 计算校验码部分
weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] # 奇偶校验码对应的权重
sum_val = sum(int(id) * weight for id, weight in zip(id_number[:-1], weights))
# 根据奇偶性计算校验码
checksum = (11 - (sum_val % 11)) % 11
if checksum == 10: # 对于X的情况处理
checksum = 'X'
else:
checksum = str(checksum)
# 检查最后一位与计算出的校验码是否一致
return checksum == id_number[-1]
# 示例
id_to_test = "123456789012345678"
if check_id(id_to_test):
print(f"{id_to_test} 是有效的")
else:
print(f"{id_to_test} 是无效的")
#
阅读全文