python计算身份证最后一位数字代表什么_一个计算身份证号码校验位的Python小程序...
s = sum(ai * wi), i=0,.......16 (现在的身份证号码都是18位长,其中最后一位是校验位,15位的身份证号码好像不用了)
ai对应身份证号码,wi则为用于加权计算的值,它一串固定的数值,应该是根据某种规则得出的吧,用于取得最好的随机性,wi的取之如下:
7 9 10 5
8 4 2 1
6 3 7 9
10 5 8 4 2
经过加权计算之后,得到一个s,用这个s去模11,取余值,然后查表得到校验位,这个索引表如下:
0 ----- 1
1 ----- 0
2 ----- x
3 ----- 9
4 ----- 8
5 ----- 7
6 ----- 6
7 ----- 5
8 ----- 4
9 ----- 3
10 ----- 2
程序代码如下:
import sys
wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7,9, 10, 5, 8, 4, 2]
indextable = { #此处实际是无需使用字典的,使用一个包含11个元素的数组便可,数组中存放
0 : '1', #相应位置的号码,但是这也正好演示了python高级数据结构的使用
1 : '0',
2 : 'x',
3 : '9',
4 : '8',
5 : '7',
6 : '6',
7 : '5',
8 : '4',
9 : '3',
10 : '2'
}
no = []
sum = 0
if (len(sys.argv[1:][0]) != 17):
print "error number"
sys.exit()
for x in sys.argv[1:][0]:
no.append(x)
for i in range(17):
sum = sum + (int(no[i]) * wi[i])
index = sum % 11
print "so, your indicates parity is : %s" % (indextable[index])
运行程序方式如下:
#python getparity.py your-indentity-number-but-except-the-last-number
我的天啊,python内置的数据结构是如此强大而易用,越来越为之而着迷啊,继续diving~
用函数封装一下,改进的代码如下:
import sys
if __name__ != '__main__':
print "cannot run in module"
sys.exit()
wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7,9, 10, 5, 8, 4, 2]
indextable = {
0 : '1',
1 : '0',
2 : 'x',
3 : '9',
4 : '8',
5 : '7',
6 : '6',
7 : '5',
8 : '4',
9 : '3',
10 : '2'
}
def check(identity):
if(len(identity) == 0):
print "please input your identity number"
sys.exit()
elif (len(identity[0]) != 17):
print "error number"
sys.exit()
def calculate(identity):
no = []
sum = 0
for x in identity[0]: #这个方法是很笨拙的,直接使用no = list(identity[0])便可达到同样的目的
no.append(x)
for i in range(17):
sum = sum + (int(no[i]) * wi[i])
index = sum % 11
return indextable[index]
check(sys.argv[1:])
result = calculate(sys.argv[1:])
print "so, your indicates parity is : %s" % (result)
忘记函数原型吧,这里不需要指明返回值类型,不需要指明形参数据类型。
希望与广大网友互动??
点此进行留言吧!
python计算身份证最后一位数字代表什么_一个计算身份证号码校验位的Python小程序...相关推荐
- python验证身份证最后一位数字代表什么_身份证号最后一位是“X”,代表什么意思?...
原标题:身份证号最后一位是"X",代表什么意思? 只是一个验证码,代表数字''10''. 由于计算机,也就是电脑的问世,人类已经进入一个数字时代,也就是信息时代,很多事情都用数字代 ...
- python计算身份证最后一位数字代表什么_身份证最后一位X代表什么数字
展开全部 X的意思其实是10,只不过用罗马数字代替32313133353236313431303231363533e58685e5aeb931333365663431了而已,如果不用罗马数字代替的话, ...
- python验证身份证最后一位数字代表什么_身份证号码最后一位代表什么?
展开全部 代表校验码(身份证最后一位).它是根据前面十七位数字码,按照ISO7064:1983.MOD11-2校验码计算出来的检验码. 计算方法 1.将前面的62616964757a686964616 ...
- python验证身份证最后一位数字代表什么_身份证最后一位不是数字而是X,代表什么含义?涨知识了...
身为公民都具有身份证,而证明我们身份的证件,上面身份证号码并不都是数字,而有的身份证最后一位是字母X,这代表什么意思呢?了解之后,涨知识了. 我之前是在采集单位上班,经常会输入一些身份证号码.我们都知 ...
- 如何用python计算年龄_用Python写一个能算出自己年龄的小程序
用Python写一个能算出自己年龄的小程序. 其实我连我今年多少岁都不知道,最近看到了python的datetime库里面有很多好用的方法,于是就写了这样一个程序作为练习,然后又写了这样一篇文章来梳理 ...
- python写一个表白程序_用Python写一个能算出自己年龄的小程序
用Python写一个能算出自己年龄的小程序. 其实我连我今年多少岁都不知道,最近看到了python的datetime库里面有很多好用的方法,于是就写了这样一个程序作为练习,然后又写了这样一篇文章来梳理 ...
- python聊天小程序支持私聊和多人_利用Python打造一个多人在线匿名聊天的小程序!(前后端完整开发)...
用Python打造一个多人在线匿名聊天的小程序(附代码) 最近看到好多设计类网站, 都提供了多人在线匿名聊天的小功能, 感觉很有意思, 于是自己就用django框架写了一个, 支持手动实时更名, py ...
- python用bbp公式求圆周率_神奇的BBP公式,可独立计算圆周率任何一位数字,曾震惊数学界!...
今天,我们来看一个神奇的关于圆周率的公式. 一千多年来,数学家们采用各种办法,来求圆周率的更高精度,比如我国伟大的数学家祖冲之(429-500,字文远),就曾利用复杂的割圆术,将圆周率精确到小数点第七 ...
- java 身份证第18位数字的算法
原来在注册一个网站的时候,发现输入身份证会被验证出来. 即使前面的全正确,但是如果最后一位不正确的话,也会被验证出来的. 原来在身份证的号码,是有规则的.特别是最后一位. 下面是18位身份证最后一位的 ...
- excel计算日期时间差 8位数字转化成日期 excel输入天数计算日期 excel输入天数生成日期
excel计算日期时间差 首先日期必须是这样的日期格式.如果是20190606这种非日期格式需要先转换成日期. 然后 直接 =D3-D2 就可以了 == 转化成日期 8位数字转化成日期 =DATE( ...
最新文章
- 华为 日志服务器 配置文件,配置日志服务器
- 子对象是什么java_面向对象编程(什么是对象)——java
- Wince C++串口编程
- C++ string(转)
- C语言之加入头文件<stdbool.h>可以使用true和false
- MTK MODEM(1)--- MTK平台NV基本功能与操作
- Android用canvas画哆啦A梦
- 1017 A除以B (20 分)—PAT (Basic Level) Practice (中文)
- angularjs指令参数transclude
- 怎样解决python dataframe loc,iloc循环处理速度很慢的问题
- 从零基础入门Tensorflow2.0 ----九、44.3 keras模型转换成savedmodel
- 垂直居中小记 line-height table vertical-align:middle
- 关于VMware的Server版卸载须知
- [OCR]用tesseract训练自己的字体
- 信号与系统实验二 信号运算的MATLAB 实验
- euraka 启动报错
- rk3399 Android9.0 ota升级失败
- e5cz温控表中文说明书_欧姆龙温控器e5cz说明书 OMRON温控表E5EC说明书
- 使用Java将阿拉伯数字转换为中文数字(适配小数转换)
- 最长公共子序列、最长连续公共子序列、最长递增子序列
热门文章
- alanwang[GDOU] 直接插入排序法简单演示
- 暴雪在计算机名字,战网怎么改名字 战网改名字简单几步就能修改
- 浅析游戏音乐的风格特点—欧美风
- [附源码]计算机毕业设计springboot微信点餐系统
- 高清多媒体接口(HDMI)静电防护器件ULC0524PA
- ARVR技术 | AR, VR, MR和XR?想搞清楚不?
- 游戏密码123456问题
- Python中随机漫步的实现
- 使用 JDBC 进行 MySQL 编程
- 微信计步器怎么不计步_微信计步器怎么用?微信计步器在哪里?