Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1790106
  • 博文数量: 297
  • 博客积分: 285
  • 博客等级: 二等列兵
  • 技术积分: 3006
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-06 22:04
个人简介

Linuxer, ex IBMer. GNU https://hmchzb19.github.io/

文章分类

全部博文(297)

文章存档

2020年(11)

2019年(15)

2018年(43)

2017年(79)

2016年(79)

2015年(58)

2014年(1)

2013年(8)

2012年(3)

分类: Python/Ruby

2017-06-26 20:56:11

主要是看到了别人的算法:http://blog.jobbole.com/111556/
我自己写了个python的代码实现,感谢大侠去研究这样的算法

点击(此处)折叠或打开

  1. def transIDCard15To18(IdCardNo):
  2.     ll=[]
  3.     if IdCardNo is not None and len(IdCardNo.strip())==15:
  4.         IdCardStr=IdCardNo.strip()
  5.         for i in IdCardStr:
  6.             ll.append(i)
  7.         ll.insert(6,'9')
  8.         ll.insert(6,'1')
  9.         ll.append(transCardLastNo(ll))
  10.     return "".join(ll)



  11. def transCardLastNo(IDCardList):
  12.     co=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
  13.     varCode=['1','0','X','9','8','7','6','5','4','3','2']
  14.     result=0
  15.     for i in range(len(IDCardList)):
  16.         result+=int(IDCardList[i]) * co[i]
  17.     
  18.     residue=result%11
  19.     return varCode[residue]



  20. print(transIDCard15To18("370986890623212"))
  21. print(transIDCard15To18("370725881105149"))
结果如下:

点击(此处)折叠或打开

  1. ./id15to18.py
  2. 370986198906232123
  3. 37072519881105149X




阅读(2110) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~