Python 实现身份证号码校验规则及有效数量统计
要解决这个问题,我们需要验证给定的身份证号码是否符合校验规则。具体步骤如下: 1. 检查长度:确保身份证号码长度为18位。 2. 校验字符:前17位必须是数字,最后一位可以是数字或'X'/'x'。 3. 计算加权和:根据给定的权值计算各位的加权和。 4. 验证校验码:计算加权和对11取模的结果,余数应为1。 解决代码 ```python n = int(input()) count = 0 weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1] for _ in range(n): id_num = input().strip() if len(id_num) != 18: continue valid = True total = 0 for i in range(17): if not id_num[i].isdigit(): valid = False break total += int(id_num[i]) * weights[i] if not valid: continue last_char = id_num[17] if last_char.isdigit(): check_value = int(last_char) elif last_char.upper() == 'X': check_value = 10 else: continue if (total + check_value * weights[17]) % 11 == 1: count += 1 print(count) ``` 代码解释 1. 输入处理:读取需要验证的身份证号码数量`n`。 2. 初始化计数器:`count`用于统计有效的身份证号码数量。 3. 权值列表:`weights`存储18位身份证号码的加权因子。 4. 遍历每个身份证号码: - 检查长度是否为18位,不是则跳过。 - 检查前17位是否为数字,不是则标记为无效。 - 计算前17位的加权和。 - 处理最后一位校验码,如果是'X'或'x',则其值为10。 - 验证加权和对11取模的结果是否为1,是则增加计数器。 5. 输出结果:打印有效的身份证号码数量。 注意事项 1. 校验码处理:最后一位可以是数字或'X'/'x',需正确处理其数值。 2. 加权和计算:确保每位数值与对应权值相乘后累加。 3. 取模验证:最终加权和对11取模的结果必须为1才有效。 ######[AI写代码神器 | 562点数解答 | 2025-05-18 21:23:12]
- 易语言读取文本文件并显示到超级列表框:代码示例与注意要点(DeepSeek | 571点数解答 | 2025-08-23 20:54:40)250
- 易语言:读取并显示特定文本到超级列表框,还能增加新数据的方法与要点(DeepSeek | 1317点数解答 | 2025-08-23 20:58:40)251
- Python 运行报错:urllib3 网络连接创建失败,原因及排查建议(字节豆包 | 161点数解答 | 2024-10-31 00:39:36)485
- mallshop商城网站:数据库设计与强大业务功能全揭秘(GPT | 257点数解答 | 2024-12-09 14:08:15)295
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)367
- 微信授权第三方登录:实名信息隐私保护揭秘!(百度文心 | 109点数解答 | 2024-03-07 18:06:00)226
- Python 实战:学生信息列表转字典、遍历、深拷贝及数据修改全流程(GPT | 422点数解答 | 2024-10-29 15:43:54)436
- Python实战:学生成绩列表转字典,深拷贝与数据修改操作全解析(字节豆包 | 254点数解答 | 2024-10-29 16:01:39)430
- 用 JS 实现网页猜数字游戏:1 - 100 随机数等你挑战!(百度文心 | 653点数解答 | 2025-03-26 14:39:33)249
- JS实现猜数字游戏:弹窗输入,1 - 100随机挑战,教你轻松上手!(百度文心 | 646点数解答 | 2025-03-26 14:49:43)208
- 融合道德感机制:女性NPC规则全面升级(字节豆包 | 1489点数解答 | 2025-06-20 20:06:34)167
- C++ 解决老师奖励同学铅笔数量问题:最少奖励方案揭秘(字节豆包 | 724点数解答 | 2025-12-06 20:58:32)56