백엔드 개발 파이썬 튜토리얼 一个计算身份证号码校验位的Python小程序

一个计算身份证号码校验位的Python小程序

Jun 06, 2016 am 11:32 AM
ID 번호

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)
로그인 후 복사

忘记函数原型吧,这里不需要指明返回值类型,不需要指明形参数据类型。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Python 정규식을 사용하여 ID 번호를 추출하는 방법 Python 정규식을 사용하여 ID 번호를 추출하는 방법 Jun 22, 2023 am 10:35 AM

Python 정규식을 사용하여 ID 번호를 추출하는 방법

입력 문자열이 ID 번호 또는 여권 번호 형식인지 확인하는 PHP 정규 표현식 입력 문자열이 ID 번호 또는 여권 번호 형식인지 확인하는 PHP 정규 표현식 Jun 24, 2023 pm 12:11 PM

입력 문자열이 ID 번호 또는 여권 번호 형식인지 확인하는 PHP 정규 표현식

주민등록번호의 생일 정보를 확인하는 PHP 정규식 주민등록번호의 생일 정보를 확인하는 PHP 정규식 Jun 24, 2023 pm 02:22 PM

주민등록번호의 생일 정보를 확인하는 PHP 정규식

PHP 정규식을 사용하여 입력 문자열이 올바른 ID 번호, 여권 번호 또는 홍콩 및 마카오 여권 형식인지 확인하는 방법 PHP 정규식을 사용하여 입력 문자열이 올바른 ID 번호, 여권 번호 또는 홍콩 및 마카오 여권 형식인지 확인하는 방법 Jun 24, 2023 am 10:36 AM

PHP 정규식을 사용하여 입력 문자열이 올바른 ID 번호, 여권 번호 또는 홍콩 및 마카오 여권 형식인지 확인하는 방법

ID 번호의 유효성과 성별을 확인하는 PHP 정규식 방법 ID 번호의 유효성과 성별을 확인하는 PHP 정규식 방법 Jun 24, 2023 am 09:36 AM

ID 번호의 유효성과 성별을 확인하는 PHP 정규식 방법

주민등록번호 체크코드를 확인하는 PHP 정규식 주민등록번호 체크코드를 확인하는 PHP 정규식 Jun 24, 2023 am 10:42 AM

주민등록번호 체크코드를 확인하는 PHP 정규식

Go 언어에서 정규식을 사용하여 문자열이 합법적인 ID 번호인지 확인하는 방법 Go 언어에서 정규식을 사용하여 문자열이 합법적인 ID 번호인지 확인하는 방법 Jul 13, 2023 pm 07:55 PM

Go 언어에서 정규식을 사용하여 문자열이 합법적인 ID 번호인지 확인하는 방법

ID 번호의 형식을 확인하는 PHP 정규식 ID 번호의 형식을 확인하는 PHP 정규식 Jun 24, 2023 am 11:20 AM

ID 번호의 형식을 확인하는 PHP 정규식

See all articles