Python_1031 查验身份证_要点全解析

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: 这里 需要注意两点1.满足权重和取余(等同于取模)后·的Z值与对应效验码相同。2.前17位由于需要数学运算,所以必须是数字。如果,不满足上面要求的,输出。

1.首先,准备工作:

(1).Z值和效验码可以用字典包括。(\表示换行继续输出(如果一行代码还没写完但又太长的话可以这么干))

ma = {0: '1', 1: '0', 2: 'X', 3: '9', 4: '8', 5: '7', 6: '6', \
      7: '5', 8: '4', 9: '3', 10: '2'}

(2).权重可以用列表包括,这样到时候循环时和对应数值相乘会更方便。

quan = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]

(3).由于系统每输入一次就可以立即判断是否满足要求,所以不满足的我们可以将其存入一个列表中

命名如下:

uneffective = []


2.接受数据即判断数据是否符合要求

(1).第一行为输入的身份证号码的个数:

num = int(input())

(2).接着循环接受身份证号码

1. 
for i in range(num):
2.     number = list(input())

(3).检查前十七位字符是否全部为数字

可以用try和except来完成这一任务。

我们先创建列表ber = number[:-1](用于接收列表number前十七字符重新组成新列表)

ber = num[:-1]

但是我们还没检查,检查我们可以将新列表ber的所有字符转化为int型,如果不能转化报错,那么说明number不满足要求,直接跳转到except部分代码continue结束当次循环。

所以代码如下:

for i in range(num):
    number = list(input())
    try:
        ber = list(map(int, number[:-1]))
'''map函数可以将列表迭代,这里用int()方法处理,使每个元素转化为int型,再将其组成一个列表。'''
        s = 0
    except:  # 如果如果不是数字,就会程序出错,那么跳转到这里
        uneffective.append(number)  # 该身份证号码不满足要求。
        continue

(4).检查权重和取余与效验码是否匹配

可以使用循环,因为是17位数字,所以循环17次。

1. for i in range(17):
2.     s += ber[i] * quan[i]  # s需要在前面初始化为0
3. s %= 11

判断是否匹配一致

1. 
if ma[s] != number[-1]:
2.     uneffective.append(number)  # 如果不等于,则不符合要求,append!


3.最后判断是否All passed

if len(uneffective) != 0:
    for i in uneffective:
        print(''.join(i))
else:
    print('All passed')


4.完整代码

num = int(input())
ma = {0: '1', 1: '0', 2: 'X', 3: '9', 4: '8', 5: '7', 6: '6', \
      7: '5', 8: '4', 9: '3', 10: '2'}
quan = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
uneffective = []
for i in range(num):
    number = list(input())
    try:
        ber = list(map(int, number[:-1]))
        s = 0
    except:
        uneffective.append(number)
        continue
    for i in range(17):
        s += ber[i] * quan[i]
    s %= 11
    if ma[s] != number[-1]:
        uneffective.append(number)
if len(uneffective) != 0:
    for i in uneffective:
        print(''.join(i))
else:
    print('All passed')
目录
相关文章
|
19天前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
17天前
|
数据挖掘 vr&ar C++
让UE自动运行Python脚本:实现与实例解析
本文介绍如何配置Unreal Engine(UE)以自动运行Python脚本,提高开发效率。通过安装Python、配置UE环境及使用第三方插件,实现Python与UE的集成。结合蓝图和C++示例,展示自动化任务处理、关卡生成及数据分析等应用场景。
77 5
|
30天前
|
存储 缓存 Python
Python中的装饰器深度解析与实践
在Python的世界里,装饰器如同一位神秘的魔法师,它拥有改变函数行为的能力。本文将揭开装饰器的神秘面纱,通过直观的代码示例,引导你理解其工作原理,并掌握如何在实际项目中灵活运用这一强大的工具。从基础到进阶,我们将一起探索装饰器的魅力所在。
|
1月前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
51 7
|
2月前
|
XML 数据采集 数据格式
Python 爬虫必备杀器,xpath 解析 HTML
【11月更文挑战第17天】XPath 是一种用于在 XML 和 HTML 文档中定位节点的语言,通过路径表达式选取节点或节点集。它不仅适用于 XML,也广泛应用于 HTML 解析。基本语法包括标签名、属性、层级关系等的选择,如 `//p` 选择所有段落标签,`//a[@href='example.com']` 选择特定链接。在 Python 中,常用 lxml 库结合 XPath 进行网页数据抓取,支持高效解析与复杂信息提取。高级技巧涵盖轴的使用和函数应用,如 `contains()` 用于模糊匹配。
|
2月前
|
测试技术 开发者 Python
使用Python解析和分析源代码
本文介绍了如何使用Python的`ast`模块解析和分析Python源代码,包括安装准备、解析源代码、分析抽象语法树(AST)等步骤,展示了通过自定义`NodeVisitor`类遍历AST并提取信息的方法,为代码质量提升和自动化工具开发提供基础。
65 8
|
2月前
|
数据可视化 图形学 Python
在圆的外面画一个正方形:Python实现与技术解析
本文介绍了如何使用Python的`matplotlib`库绘制一个圆,并在其外部绘制一个正方形。通过计算正方形的边长和顶点坐标,实现了圆和正方形的精确对齐。代码示例详细展示了绘制过程,适合初学者学习和实践。
50 9
|
2月前
|
存储 缓存 开发者
Python编程中的装饰器深度解析
本文将深入探讨Python语言的装饰器概念,通过实际代码示例展示如何创建和应用装饰器,并分析其背后的原理和作用。我们将从基础定义出发,逐步引导读者理解装饰器的高级用法,包括带参数的装饰器、多层装饰器以及装饰器与类方法的结合使用。文章旨在帮助初学者掌握这一强大工具,同时为有经验的开发者提供更深层次的理解和应用。
41 7
|
2月前
|
数据采集 JSON 数据格式
深入解析:使用Python爬取Bilibili视频
本文介绍了如何使用Python编写脚本自动化下载Bilibili视频。通过requests等库获取视频和音频URL,使用ffmpeg合并音视频文件,最终实现高效下载。注意遵守网站爬虫政策和法律法规。
340 4
|
2月前
|
机器学习/深度学习 数据采集 数据挖掘
Python编程语言的魅力:从入门到进阶的全方位解析
Python编程语言的魅力:从入门到进阶的全方位解析