小豆浆 18位身份证校验位生成python(2.7) www.xdoujiang.com

  • A+
所属分类:python实战
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. #--------------------------------------------------
  4. #Author:gongzheng
  5. #Email:85646830@163.com
  6. #FileName:4.py
  7. #Function: 
  8. #Version:1.0 
  9. #Created:2017-10-09
  10. #--------------------------------------------------
  11. #S+=Sum(Ai*Wi);
  12. #Ti[S%11]
  13. import sys
  14. class IdentityCard:
  15.     def __init__self ):
  16.         self.__Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
  17.         self.__Ti = ['1', '0', 'x', '9', '8', '7', '6', '5', '4', '3', '2']
  18.     def check( self, code ):
  19.         if (len(code) != 17):
  20.             print "必须为17位的字符"
  21.             return False
  22.         return True
  23.     def calculate( self, code ):
  24.         sum = 0
  25.         for i in range(17):
  26.             sum += int(code[i])*self.__Wi[i]
  27.         return self.__Ti[sum%11]
  28. def test(code):
  29.     ic = IdentityCard()
  30.     if ic.check(code):
  31.         print "你的校验位为:%s"%ic.calculate(code)
  32. if __name__ == '__main__':
  33.     test(sys.argv[1])
  34. 效果:
  35. root@10.105.37.250:scripts# python 4.py 31010119100541933
    你的校验位为:7
  36. 感谢作者(作者不详)
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: