问题描述
身份证号码的验证是一个常见的需求,身份证的号码由17位数字和1位校验码组成,身份证的格式由:
- 6位地址码
- 8位出生日期码 格式为YYYYMMDD
- 3位顺序码组成
- 最后一位是校验码
校验码的计算方法如下:
- 将前17位数字的权值分别乘以系数相加
- 将相加的结果除以11,得到余数
- 通过余数查找校验码的值
- 如果校验码的值等于身份证号码的最后一位,则校验通过
- 如果校验码的值等于10,则校验码为X
- 如果校验码的值不等于身份证号码的最后一位,则校验不通过
- 日期的校验,年份的范围是1900-2099年
- 日期的校验,月份的范围是1-12月
- 日期的校验,日期的范围是1-31日
- 日期的校验,闰年的2月份是29天
- 日期的校验,平年的2月份是28天
- 日期的校验,4、6、9、11月份是30天
- 日期的校验,1、3、5、7、8、10、12月份是31天
- 日期的校验,2月份是28天
- 日期的校验,闰年的2月份是29天
- 日期的校验,闰年的判断方法是年份能被4整除,但是不能被100整除,或者能被400整除
测试代码
assertEqual(id_verify