python 身份证校验位计算

本文详细介绍了中国身份证号码的校验算法实现过程,通过一个Python类演示了如何验证17位身份证号的有效性,并计算第18位校验位。文章提供了完整的代码示例,包括初始化权重数组、校验位数组、检查输入长度、计算加权和以及确定校验位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以后可能用得到

# -*- 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()

转载于:https://www.cnblogs.com/Death/archive/2011/03/24/1993565.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值