2301_77186477 2023-04-21 20:22 采纳率: 100%
浏览 32
已结题

python测校验码

img

img


分别是要求和我写的代码,中间部分我觉得应该没问题,输出部分应该怎么修改,如果能讲讲原因就更好了

img


补张样例2
我个人感觉最大的问题在All passed的输出上

  • 写回答

3条回答 默认 最新

  • CSDN专家-showbo 2023-04-21 20:40
    关注

    对齐有问题,加权求和放出来。然后验证前17位为数字的if判断的else语句去掉。同时t在for循环中要重新赋值为0

    img

    不过题注的逻辑还是没符合输出要求,输入和输出混合一起了,一个用一个数组收集错误的身份证,最后再一起输出

    n=int(input())
    t=0
    lst=[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"]
    num=['0','1','2','3','4','5','6','7','8','9']
    allPass=True##是否存在错误身份证
    
    errIds=[]
    for i in range(0,n):
        s=list(input())
        t=0
        pre17AllNumber=True
        for j in range(0,17):
            if (s[j] not in num)==True:
                errIds.append(''.join(s))############
                allPass=False
                pre17AllNumber=False
                break
        if not pre17AllNumber:#前17位不全为数字,不执行下面加权验证
            continue
        for j in range(0,17):
            t=t+(lst[j]*int(s[j]))
        z=t%11
        m=M[z]
        if m!=s[17]:
            allPass=False
            errIds.append(''.join(s))############
    if allPass:
        print('All passed')
    else:
        print('\n'.join(errIds))
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月29日
  • 已采纳回答 4月21日
  • 修改了问题 4月21日
  • 创建了问题 4月21日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么