shhehwushh 2021-06-21 15:41 采纳率: 66.7%
浏览 217
已结题

编程题 8. 身份证号码有效性检验

【问题描述】

 

我国身份证号码是18位数字和字母X的组合,其中前17位是数字,第18位是校验位,其值可以是数字或字母X

 

第18位的校验方法如下: 

 

–将身份证号码前17位数分别乘以不同的系数:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 

 

–将上述17个相乘的结果求和,然后除以11,获得余数 

 

–余数0 1 2 3 4 5 6 7 8 9 10分别对应身份证号码的最后一位为1 0 X 9 8 7 6 5 4 3 2

 

【输入形式】

【输出形式】

【样例输入】

 

610102199001011215

【样例输出】

 

Valid

 

【样例输入】

 

21010219800425609X

【样例输出】

 

Invalid checksum

 

210102198004256091

 

【样例说明】

 

如果校验位错误,会输出Invalid checksum

 

并输出含正确校验位的身份证号

 

【评分标准】

  • 写回答

1条回答 默认 最新

  • 程序媛一枚~ Python领域新星创作者 2022-11-06 22:56
    关注
    
    # 验证身份证
    
    # 我国身份证号码是18位数字和字母X的组合,其中前17位是数字,第18位是校验位,其值可以是数字或字母X
    # 第18位的校验方法如下:
    # –将身份证号码前17位数分别乘以不同的系数:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
    # –将上述17个相乘的结果求和,然后除以11,获得余数
    # –余数0 1 2 3 4 5 6 7 8 9 10分别对应身份证号码的最后一位为1 0 X 9 8 7 6 5 4 3 2
    # 【输入形式】
    # 【输出形式】
    # 【样例输入】
    # 610102199001011215
    # 【样例输出】
    # Valid
    # 【样例输入】
    # 21010219800425609X
    # 【样例输出】
    # Invalid checksum
    # 210102198004256091
    # 【样例说明】
    # 如果校验位错误,会输出Invalid checksum
    # 并输出含正确校验位的身份证号
    
    
    def verify(id):
        if (len(id) != 18):
            return
        x = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
        val = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
        last = ['1', '0', 'X', '9', '8', ' 7', '6', '5', '4', '3', '2']
        ids1 = list(id)
        ids = ids1[:-1]
        tt = [i * int(j) for i, j in zip(x, ids)]
        tt = sum(tt)%11
        if ids1[-1] == last.__getitem__(val.index(tt)):
            print('valid')
        else:
            print('Invalid checksum')
            ids.append(last.__getitem__(val.index(tt)))
            print("".join(ids))
    
    
    verify('610102199001011215')
    verify('21010219800425609X')
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月27日
  • 已采纳回答 12月19日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程