python 身份证校验位计算

以后可能用得到

# -*- coding:gbk -*- 
#
S+=Sum(Ai*Wi);
#
Ti[S%11]
import sys

class IdentityCard:
    
def __init__( self ):
        self.
__Wi = [7910584216379105842]
        self.
__Ti = ['1''0''x''9''8''7''6''5''4''3''2']

    
def check( self, code ):
        
if (len(code) != 17):
            
print "必须为17位的字符"
            
return False
        
return True
        
    
def calculate( self, code ):
        sum 
= 0
        
for i in range(17):
            sum 
+= int(code[i])*self.__Wi[i]
        
return self.__Ti[sum%11]
        
def test():
    ic 
= IdentityCard()
    code 
= "33000000000000000" #17位身份证
    if ic.check(code):
        
print "你的校验位为:%s"%ic.calculate(code)
        
if __name__ == '__main__':
    test()

posted @ 2011-03-24 11:18  死 神  阅读(1023)  评论(0编辑  收藏  举报