Pat乙级1031题——查验身份证(Python)

PAT乙级【Java题解合集】 学习完本专栏后,leetcode的简单题应该是没啥问题了,可以去做甲级的题目或者leetcode中等以上难度的题目继续修炼,后续博主会整理并更新算法修炼专栏,欢迎您的订阅!👉🏻算法修炼专栏👈🏻。 阅读详情

注意

  • 使用多层循环,在打断的时候要注意确保不再执行之后不需要循环的地方

  • 写完之后看了别人的代码,发现如果封装一个函数,将一个身份证号作为参数,判断是否符合要求,再返回相应值,比较有条理。之后可以在类似的情况下使用函数封装。

代码如下

def idCard():
    weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
    mList = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
    idList = []
    wrongId = []

    count = int(raw_input())
    for i in range(count):
        idList.append(raw_input())
    for aimId in idList:
        if len(aimId) != 18:
            wrongId.append(aimId)
            continue
        else:
            z = 0
            for j in range(17):
                if not aimId[j].isdigit():
                    wrongId.append(aimId)
                    z = -1
                    break ##不能只在这里break,z还是存在的,所以要标记一下
                else:
                    aim = int(aimId[j])
                    z = aim * weight[j] + z
            if z != -1:
                z = z % 11
                if mList[z] != aimId[17]:
                    wrongId.append(aimId)
    if len(wrongId) == 0:
        print ("All passed")
    else:
        for aimId in wrongId:
            print (aimId)
if __name__ == '__main__':
    idCard()

测试结果

这里写图片描述

PAT乙级 (Basic Level) 目录【Python解】已完结至1125 计算机编程能力考试(Programming Ability Test,简称PAT)是由。旨在培养和展现学生分析问题、解决问题和计算机程序设计的能力,计算机程序设计人才,并为企业选拔人才提供。 阅读详情

相关推荐

1031 查验身份证 Python实现

分数 15全屏浏览题目切换布局作者 CHEN, Yue单位 浙江大学一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。

Emilybloom的博客 365

1031 查验身份证 python

1031 查验身份证 (15 分) 一个合法的身份证号码由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 ...

weixin_43731183的博客 1118

【CTFWP】ctfshow-web40

CTFWP:ctfshow-web40

LongL_GuYu的博客 1863

1031 查验身份证 Python语言

1031 查验身份证(15)(15 分) 一个合法的身份证号码由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...

BTboay 6544

实战演练:基于Veristand Custom Device的硬件在环(HIL)数据流控制模块开发

本文详细介绍了基于Veristand Custom Device的硬件在环(HIL)数据流控制模块开发实战。通过LabVIEW环境配置、动态路由逻辑构建、实时处理核心开发及性能优化等关键步骤,帮助工程师快速掌握定制化HIL测试系统的开发技巧,提升测试效率与准确性。

weixin_29206669的博客 475

不用加速器!Google Earth Pro登录失败自救手册:从服务器连接到地图加载的完整排错流程

本文详细解析了Google Earth Pro登录失败的常见问题及解决方案,包括服务器连接失败、地图加载异常等。通过基础排查、内置修复工具使用和高级配置调整,帮助用户无需加速器即可解决启动问题、黑屏和转圈圈等困扰,提升软件使用体验。

weixin_29227425的博客 485

PTA python查验身份证一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。

首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};按照输入的顺序每行输出1个有问题的身份证号码。这里并不检验前17位是否合理,只检查前17位是否全为数字且最后1位校验码计算准确。输入第一行给出正整数N(≤100)是输入的身份证号码的个数。随后N行,每行给出1个18位身份证号码。一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。第3章-2 查验身份证。

m0_73702321的博客 2040

麒麟V10(arm)配置本地离线yum源

麒麟V10(arm)配置本地离线yum源

myfm2java的博客 7885

PAT 乙级(Python) #1031 查验身份证 (15 分)

#1031 查验身份证 (15 分) 代码展示: N = eval(input()) def check(ID): '''检查身份证号是否合法''' if not (ID[:-1]).isdecimal(): return False elif str(getCheckSum(ID[:-1])) == ID[-1]: return True else: return False def getCheckSum(number

敲代码的小风 377

manimgl安装

安装manimgl

happytree001的博客 707

前端零代码丨UIOTOS + NodeRed:无代码搭建工控上位机的绝配组合!

用户类型价值硬件产品商软硬一体方案,无代码GUI上位机成新卖点软件服务商售前原型演示利器,交付成本降低至1/3平台开发商融合无代码技术,同质化竞争中脱颖而出🚀 总结UIOTOS的前端零代码设计(页面嵌套、属性继承、节点连线)与NodeRed的后端流程自动化,堪称工控与IoT开发的黄金组合。无论是串口通信、SCADA监控还是业务管理,均能实现“无代码交付”,真正让前端不求人,硬件交互触手可及!探索更多案例:UIOTOS官网在线体验。

2502_91192798的博客 757

PAT乙级_1031 查验身份证_Python_AC解法_无疑难点

本文介绍了PAT乙级1031题"查验身份证"的Python解法。程序首先读取输入的身份证号,然后检查前17位是否为数字,并计算加权和与校验码的匹配情况。不合规的身份证号会被收集并输出,若全部合规则打印"Allpassed"。文章提醒代码可能存在不规范之处,欢迎读者提出改进建议。该解法直接处理问题核心,通过预处理权重表和校验码表提高效率,适合初学编程者理解基础逻辑实现。

CongQianS1的博客 421

非技术面试题精选大全

回答提示:一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有,其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。企业喜欢有礼貌的求职者。

吃面爱放香菜的博客 435

PAT乙级合集——python实现(持续更新中~)

最近在巩固python编程能力,本文用于记录python实现的PAT乙级刷题索引,以及在刷题过程中总结的一些规则和经验~ 刷题建议:PAT乙级都是些简单的题目,如果是刷题的同学可以直接按照题号顺序刷即可~ 刷题笔记和规则整理: 合集: 乙级编号 标题 PAT 1001 害死人不偿命的(3n+1)猜想(15分) PAT 1002 写出这个数 (20分) PAT 1003 我要通过!(20分) PAT 1004 成绩排名 (20分) PAT 1005 继续(3n+1)猜想(25分

crayonjingjing的博客 1205

【温室气体】GOSAT 数据产品

【温室气体】GOSAT 数据产品

WW、forever的博客 238

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

PAT乙级刷题记录——1031 查验身份证 (15分)

一个合法的身份证号码由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 现在给定一些身...

一只奋斗中的本科生 434

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

PAT 乙级 1031 查验身份证 python

PAT 乙级 1031 查验身份证

m0_43424109的博客 937

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

PAT乙级_合集_Python_AC解法_已完结至1125题

本文是针对PAT乙级考试Python解题的优化指南。作者发现虽然多数题目能顺利通过,但部分代码在提交时会出现错误或超时,而PAT系统不提供详细反馈。现有的Python解题资料较少且部分存在效率问题。文章旨在记录解题过程中的卡点、优化方法和最终AC代码,为使用Python的考生提供参考。目前优先更新前50题中较难的题目,后续会逐步补充其他题目。每道题将详细讲解解题思路以弥补代码注释不足的问题,帮助读者理解优化过程。

CongQianS1的博客 861

PAT乙级 (Basic Level) python3语言实现代码(全120道)

PAT乙级 (Basic Level) Practice (中文)题目共120道。本文所有代码均用python3语言编写,除了11道题因为个别测试点超时未通过外,其他均通过。

梁山伯的专栏 937

C++/Python PAT乙级 1031 查验身份证(15)

题目描述 一个合法的身份证号码由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...

qq_42344132的博客 118

PAT乙级1031 查验身份证

1031 查验身份证(15)(15 分) 一个合法的身份证号码由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...

lyg的博客 382

PAT (Basic Level) Practice 1031 查验身份证(python3)

一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。

m0_73614146的博客 710

PAT乙级 1031 查验身份证

把当时的代码放出来,大家共同学习,互相帮助 题目: 输入样例1: 4 320124198808240056 12010X198901011234 110108196711301866 37070419881216001X 输出样例1: 12010X198901011234 110108196711301866 37070419881216001X 输入样例2: 2 3201241988082...

chongchujianghu3的博客 112

PAT乙级Python题单知识点及题解

核心知识点:# sort()和sorted(),key参数,reverse参数# 多关键字排序:使用元组作为key# 自定义比较函数:cmp_to_key# 基本排序lst.sort() # 原地排序sorted(lst) # 返回新列表# 多关键字排序(重点!

2302_79277225的博客 467

pat乙级1031 查验身份证 (15 分)较精简代码 python

很简单的题 可以用列表和异常处理来简化 见代码 sys.stdin.readline()和input()作用一样 但是性能更优 import sys #权重与对应关系 weight = [7, 9, 10, 5, 8,4,2,1,6,3,7,9,10,5,8,4,2] M=["1","0","X","9","8","7","6","5","4","3","2"] many=int(sys.stdin.readline()) result=[] for i in range(0,many): ..

weixin_47234647的博客 201

浙大PAT 乙级(Basic Level) Practice 题解合集(全AC版)

写下这篇是为了记录一下在暑假这段时间里从零开始自解的PAT乙级基础题。

weixin_53024141的博客 1132
上一篇: Pat乙级1030题—— 完美数列(Python)
下一篇: 机器学习——入门
coder_wu
博客等级 码龄8年 5粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值