Python编程PTA题解大全——索引

Description:一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:
首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:
Z:0 1 2 3 4 5 6 7 8 9 10
M:1 0 X 9 8 7 6 5 4 3 2
现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。
Input:输入第一行给出正整数N(≤100)是输入的身份证号码的个数。随后N行,每行给出1个18位身份证号码。
Output:按照输入的顺序每行输出1个有问题的身份证号码。这里并不检验前17位是否合理,只检查前17位是否全为数字且最后1位校验码计算准确。如果所有号码都正常,则输出All passed。
Sample Input
4
320124198808240056
12010X198901011234
110108196711301866
37070419881216001X
Sample Output
12010X198901011234
110108196711301866
37070419881216001X
Sample Input
2
320124198808240056
110108196711301862
Sample Output
All passed

n = int(input())
strs = []
for i in range(n):strs.append(input())nums = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
data = {0:1, 1:0, 2:'X', 3:9, 4:8, 5:7, 6:6, 7:5, 8:4, 9:3, 10:2}t = True       #判断是否有错误的身份证for ch in strs:#遍历每个身份证s = True   #判断每个位数是否为数字sum = 0    #加权和for i in range(17):         #遍历每个位数if '0'<= ch[i] <= '9':  #如果是数字则进行加权求和sum += int(ch[i]) * nums[i]else:                   #如果不是数字则令 s = False 并跳出循环s = Falsebreakif s:                       #判断各个位数是否为数字Z = sum % 11            #如果是则进行取模运算if str(data[Z]) != ch[17]:t = False           #如果取模运算结果和效验码不一样,则令 t = False 并输出错误身份证print(ch)else:t = False               #如果前17位某一位不为数字,则直接令 t = False 并打印错误身份证print(ch)if t:                           #判断是否有错误身份证,若没有则打印“All passed”print("All passed")

Python编程PTA题解——查验身份证相关推荐

  1. Python编程PTA题解大全——索引

    Python编程PTA题解大全--索引 所有的题解都已更新完成,均已通过验证,可能有的算法不是很好,有很大的提升空间,大家可以在下方评论,如果遇到好的算法我也会将其更新到文章中,欢迎大家多多讨论(๑& ...

  2. Python编程PTA题解——查询水果价格

    Python编程PTA题解大全--索引 Description:给定四种水果,分别是苹果(apple).梨(pear).桔子(orange).葡萄(grape),单价分别对应为3.00元/公斤.2.5 ...

  3. Python编程PTA题解——大于身高的平均值

    Python编程PTA题解大全--索引 Description:中小学生每个学期都要体检,要量身高,因为身高可以反映孩子的生长状况.现在,一个班的身高已经量好了,请输出其中超过平均身高的那些身高.程序 ...

  4. Python编程PTA题解——字符转换,提取

    Python编程PTA题解大全--索引 Description:提取一个字符串中的所有数字字符('0'--'9'),将其转换为一个整数输出. Input:输入仅一行,输入一个不超过80个字符且以回车结 ...

  5. Python编程PTA题解——换硬币

    Description:将一笔零钱换成5分.2分和1分的硬币,要求每种硬币至少有一枚,有几种不同的换法? Input:输入仅一行,输入待换的零钱数额x∈(8,100). Output:要求按5分.2分 ...

  6. Python编程PTA题解——一帮一学习小组

    Description:"一帮一学习小组"是中小学中常见的学习组织方式,老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组.本题就请你编写程序帮助老师自动完成这个分配工作,即在得 ...

  7. Python编程PTA题解——验证“哥德巴赫猜想”

    Description:数学领域著名的"哥德巴赫猜想"的大致意思是:任何一个大于2的偶数总能表示为两个素数之和.比如:24=5+19,其中5和19都是素数.本实验的任务是设计一个程 ...

  8. Python编程PTA题解——两数之和

    Description:给定一组整数,还有一个目标数,在给定这组整数中找到两个数字,使其和为目标数,如找到,解是唯一的.找不到则显示 "no answer".输出的下标按从小到大排 ...

  9. Python编程PTA——三个数比较大小的新解法

    Python编程PTA--三个数比较大小 **题目:**本题要求将输入的任意3个整数从小到大输出. 输入格式: 输入在一行中给出3个整数,其间以空格分隔. 输出格式: 在一行中将3个整数从小到大输出, ...

最新文章

  1. php imagemagick 漏洞,ImageMagick漏洞EXP简易生成脚本
  2. mysql中怎么查询单行单列_MySql中的子查询-结果单行单列
  3. zabbix监控多台站点服务器
  4. java事件监听器无效_Java的事件监听器学习心得
  5. 记录一下 Linux飞鸽传书 QIpMsg 的下载链接
  6. Java File类boolean isFile()方法(带示例)
  7. 阶乘c 语言代码,求10000的阶乘(c语言代码实现)
  8. macOS Monterey兼容哪些Mac电脑?
  9. php如何判断日期是否是周末(星期六和星期天)
  10. 抖音是怎么做出来的?| 创业故事
  11. CentOS7 下MariaDB安装与简单配置
  12. System.Exception: 操作必须使用一个可更新的查询
  13. WEB学生网页作业【HTML+CSS】静态网页期末大作业课程设计
  14. Java Foreach拉姆达表达式
  15. Typora快捷键全
  16. Win10安装Ubuntu22.04后,The Windows Subsystem for Linux optional component is not enabled. Please enable
  17. 3dsMAX中R键的用法
  18. 如何避免“Windows Defender SmartScreen阻止无法识别的应用程序启动警告”
  19. 03_泰坦尼克号幸存者分析(下)
  20. 永久屏蔽警告:grep: warning: GREP_OPTIONS is deprecated; please use an alias or script

热门文章

  1. 1102: 火车票退票费计算(函数专题)Java
  2. OpenStack 2014 用户调查解析——中国部署规模仅次于美国
  3. 苦逼的Python爬虫抓小说实战
  4. matlab的phim,matlab-LSQCURVEFIT函数的使用问题
  5. 基于回调的观察者模式
  6. 大学生变身建筑工人:在家隔离的美国学生们,正在Minecraft中复现一座座大学校园...
  7. 牛客练习赛43 c Tachibana Kanade Loves Review
  8. ESD静电防护中不可或缺重要利器——TVS管
  9. 【洛谷】P2713 罗马游戏
  10. 有效管理自己知识,多总结和分享——2018七月份的尾巴