zoukankan      html  css  js  c++  java
  • PTA 乙级 1031 查验身份证 (15分) Python

     PTA又改格式了,看起来怪别扭的

    思路:

    字典存储校验码的对应关系

    身份证列表化,方便逐位进行计算

    注意错误的身份证可能会使校验码字典超范围,产生异常,所以用到了异常处理

    利用标志位确定是否全部通过

    Python

     1 xs = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]  
     2 jym = {0:'1',1:'0',2:'X',3:'9',4:'8',5:'7',6:'6',7:'5',8:'4',9:'3',10:'2'}  #对应关系做成字典
     3 sum = 0
     4 flag = True         #是否全部通过标志位
     5 n = eval(input())
     6 s = []              #存储错误身份证
     7 for j in range(n):
     8     id = input()
     9     idlist = list(id)
    10     try:                        #由于会出现超出字典范围的情况,所以加上了异常处理
    11         for i in range(17):     #计算求和对11取模
    12             num = eval(idlist[i])*xs[i]
    13             sum += num
    14         idmod = sum % 11        
    15         if jym.get(idmod) != idlist[17]:    #检查最后一位校验码
    16             s.append(id)
    17             flag = False
    18     except:                     #超出范围,直接认定为错误身份证
    19         s.append(id)
    20         flag = False
    21     sum = 0
    22 if(flag):
    23     print("All passed")
    24 else:
    25     for i in s:
    26         print(i)

  • 相关阅读:
    终于清楚了!!!【使用jenkins发布应用到tomcat详细过程】
    RocketMQ相关问题
    关于idea修改当前使用的git账户的问题
    Elasticsearchan安装初尝01-问题记录
    Redis学习日记-03
    Git初探笔记02
    Git初探笔记01
    Redis学习日记-02
    HDU 1017
    HDU 1013
  • 原文地址:https://www.cnblogs.com/SCP-514/p/13326264.html
Copyright © 2011-2022 走看看