题目描述:
中华人民共和国居民身份证号码由17 位数字和1位校验码组成。其中,前6位为所在地编号,第7~14 位为出生年月日,第15~17位为登记流水号,其中第17位偶数为女性,奇数为男性。校验码的生成规则如下:

将前面的身份证号码17位数分别乘以不同的系数。第1~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这11个数字,它们分别对应的最后一位身份证的号码为1,0,x,9,8,7,6,5,4,3,2。例如,如果余数是2,最后一位数字就是罗马数字x,如果余数是10,则身份证的最后一位就是2。

请设计程序实现输入18位身份证号,辨别其真伪。若为真,则进一步判断性别: 若不是18位或身份证号非法,则提示重新输入。

提示:定义如下两个元组,对输入字符串进行遍历。

factor=(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2)

last=(“1”,“O”,“x”,“9”,“8”,“7”,“6”,“5”,“4”,“3”,“2”)

例如:某男性的身份证号码是34052419800101001X。我们要看看这个身份证是不是合法的身份证。

首先:我们计算37+49+010+55+…+1*2,前17位的乘积和是189

然后:用189除以11得出的结果是商17余2

最后:通过对应规则就可以知道余数2对应的数字是x。所以,这是一个合格的身份证号码。

while True:   id_card=input('请输入身份证号码:')jy = str(id_card[len(id_card)-1:len(id_card)])if len(id_card) == 18 :   x_arr = {'1': '7','2': '9','3': '10','4': '5','5': '8','6': '4','7': '2','8': '1','9': '6','10': '3','11': '7','12': '9','13': '10','14': '5','15': '8','16': '4','17': '2'}a=0for i in range(1,len(id_card),1):e = id_card[i-1:i]a = a + int(e)*int(x_arr.get(str(i)))b = str(a%11)y_arr = {'0': '1','1': '0','2': 'x','3': '9','4': '8','5': '7','6': '6','7': '6','8': '4','9': '3','10': '2'}c = str(y_arr.get(b))if jy == c:print('经计算校验码为',c,'和实际相同')else:print('经计算校验码为',c,'和实际不同')elif id_card == 'quit':breakelse:print('身份证位数不对')   input('按回车键键结束')id_card=input('请输入身份证号码:')jy = id_card[len(id_card)-1:len(id_card)]if len(id_card) == 18:x= (7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2)s=0for i in range(1,len(id_card)):e = id_card[i-1:i]s = s + int(e)*x[i-1]b = s%11y=("1","O","x","9","8","7","6","5","4","3","2")c = y[b]if jy == c:print('经计算校验码为',c,'和实际相同,身份证合法!')else:print('经计算校验码为',c,'和实际不同,身份证不合法!')else:print('身份证位数不对')

或者:

factor=(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2)last=("1","O","x","9","8","7","6","5","4","3","2")Id_char = list(input("请输入身份证号"))legal=Truewhile True:if legal == False:Id_char = list(input("输入有误!请重新输入身份证号"))sum = 0if len(Id_char)!=18:legal = Falseelif len(Id_char) ==18:for i in Id_char:if (i<'0' or i>'9') :if Id_char.index(i)==17:if i == 'x' or i =='X':legal = Trueelse :legal =Falsebreakelse :legal =Falsebreakelse:legal=Trueif legal == False:continueelse :for i in range(0, 17):sum = sum+int(Id_char[i]) * factor[i]a = sum % 11if last[a] == Id_char[17].lower():if int(Id_char[16]) % 2 == 0:print("身份证合法,为女性")else:print("身份证合法,为男性")legal = Trueelse:legal = Falseif legal ==True:break

Python学习之学校教学(辨别身份证的真伪,并判断性别)相关推荐

  1. Python学习之学校教学( 已知复数,请写出它的模、实部、虚部及共轭复数)

    我们把形如z=a+bi(a,b均为实数)的数称为复数,其中a称为实部,b称为虚部,i称为虚数单位.当z的虚部等于零时,常称z为实数:当z的虚部不等于零时,实部等于零时,常称z为纯虚数.复数域是实数域的 ...

  2. Python学习之学校教学(选择结构与循环结构)抓狐狸问题

    题目描述: 編写程序,实现抓孤理游戏.假设墙上有5个洞(编号分别为0.1.2.3.4), 其中一个洞里有狐理,人类玩家输入洞口编号,如果洞里有狐狸就抓到了:如果洞里没有 理就第二天再来抓.但在第二天人 ...

  3. Python学习之学校教学(统计字符出现次数,包括字、标点符号)

    题目描述: 统计<水调歌头·明月几时有>字符出现次数. 明月几时有,把酒问青天. 不知天上宫阙,今夕是何年? 我欲乘风归去,又恐琼楼玉宇,高处不胜寒. 起舞弄清影,何似在人间! 转朱阁,低 ...

  4. 身份证提取生日,判断性别

    /// <summary>         /// 验证身份证号码         /// </summary>         /// <param name=&quo ...

  5. python免费学校_清华大学,的python学习路线,免费分享给小白福利

    python应该是近几年比较火的语言之一,很多人刚学python不知道该如何学习,尤其是没有编程基础想要从事程序员工作的小白,想必应该都会有此疑惑,包括我刚学python的时候也是通过从网上查找相关资 ...

  6. python学习教程哪个好_Python入门视频看哪个好?适合初学者的教学视频推荐

    Python作为一门新手友好的编程语言,对于初学者来说,还是有一定的学习难度的.目前的Python学习资料在网上可以找到很多,那么Python入门视频看哪个好呢?本文就为大家推荐小编的免费Python ...

  7. 2020茂名市高中学校教学管理人才跟岗学习培训班莅临智慧教育装备展示体验中心参观学习

    茂名市高中学校教学管理人才跟岗学习培训班活动 为提高茂名市高中教学管理人才学校管理的专业水平,使之成为具有宽广教育视野.深度教育理念.创造性教育实践能力的教育管理者.2021年5月20日上午,湖南师范 ...

  8. python教学网站-python学习网站整理

    自学python,可以从官网获取知识,可以直接百度.下面整理一些非官方的学习网站.(先后排序顺序不代表网站的优先级) 1.菜鸟教程 python3 python2 //文本内容学习,相当于字典 2.我 ...

  9. 案例驱动式Python学习笔记【第三篇】居民身份证信息提取

    驱动案例 居民身份证是每位居民的唯一身份标识,18位的居民身份证号的信息包含省.市.出生日期和性别等信息, 那么本节将介绍如何按需提取相应的信息.居民身份证是每位居民的唯一身份标识,18位的居民身份证 ...

  10. 国外python在线教学_国外最顶级的Python学习视频送给你!(带中文字幕)

    国外最顶级的Python学习视频送给你!(带中文字幕) 今天就跟大家介绍一位真真正正的 Python 大师,我看了很多 Python 入门视频教程,但觉得只有他讲的是最好的. 看了标题你可能会质疑,确 ...

最新文章

  1. Python:数据集成
  2. Python单引号、双引号和三双引号的区别
  3. C++ std::condition_variable wait() wait_for() 区别
  4. python调用c 接口_python调用C接口
  5. MongoDB 去重(distinct)查询后求总数(count)
  6. C# 2.0对现有语法的改进
  7. 推荐算法是今日头条的核心竞争力吗?
  8. 开发原生的 Google 眼镜应用 【已翻译100%】(2/2)
  9. 创意夜晚行驶迷路网站404页面源码
  10. WOOTConf 2017:Lockpicking,Willie Nelson开发人员等等
  11. Pytorch transforms.Resize()的简单用法
  12. 写了10年的代码,收藏了这20个代码生成框架!太厉害了,以后都不用自己写代码了...
  13. 相亲之战,以少胜多乎?
  14. C语言爱心代码,C语言爱心代码合集(附源码)
  15. 对HashMap进行排序处理
  16. 以智图为例讲解自动发布CI/CD技术在逐浪CMS中的应用
  17. 计算机中的同步和异步
  18. 字节跳动一二三面+HR面
  19. oracle学习app,Oracle学习相关
  20. Android中DialogFragment自动弹出输入法

热门文章

  1. onkeyup+onafterpaste
  2. 201771010112罗松《面向对象程序设计(java)》第一周学习总结
  3. PPT精美模板免费下载网站 高清壁纸免费下载网站 在线PS(Photoshop在线网站)网站 分享
  4. OpenHarmony开源鸿蒙学习入门-应用开发之使用eTS语法示例项目讲解
  5. 影像扫描系统连接服务器失败,您的扫描仪不能与ImageCapture配合使用
  6. linux运行360wifi,Linux(Ubuntu)下的无线网络卡上的小米和360wifi教程
  7. Ant笔记(一)Ant下载与安装
  8. Blk read/s Blk wrtn/s Blk read Blk wrtn分别代表什么意思
  9. internal, switching, leakage power区别
  10. 安装office2013报安装程序找不到OneNote.zh-cn、安装源不存在