ホームページ バックエンド開発 Python チュートリアル 一个计算身份证号码校验位的Python小程序

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

Jun 06, 2016 am 11:32 AM
識別番号

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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Python 正規表現を使用して ID 番号を抽出する方法 Python 正規表現を使用して ID 番号を抽出する方法 Jun 22, 2023 am 10:35 AM

データ処理のプロセスでは、多くの場合、テキストから特定の形式で情報を抽出する必要があります。 ID番号は比較的一般的な個人情報として、データ処理によく使用されます。 Python 正規表現を使用すると、ID 番号を簡単に抽出し、それに対して特定の検証を実行できます。 IDカード番号は18桁で構成されており、IDカード番号には地域、生年月日、チェックコードなどが含まれます。 Python では、re モジュールの正規表現関数を使用して ID 番号を抽出できます。頭

入力文字列が ID 番号またはパスポート番号の形式であるかどうかを確認するための PHP 正規表現 入力文字列が ID 番号またはパスポート番号の形式であるかどうかを確認するための PHP 正規表現 Jun 24, 2023 pm 12:11 PM

ID 番号とパスポート番号は、人々の生活の中でよく使われる文書番号です。これらの文書番号に関連する機能を実装する場合、多くの場合、入力された番号の形式検証を実行して、その正確性を確認する必要があります。 PHP では、この機能を実現するために正規表現を使用することができますが、この記事では、PHP の正規表現を使用して、入力文字列が ID 番号またはパスポート番号の形式であるかどうかを確認する方法を紹介します。 1. ID カード番号の確認 ID カード番号は 18 桁で構成されており、最後の 1 桁は文字 (チェック コード) の場合があり、その形式は次のとおりです。

ID番号の誕生日情報を検証するPHP正規表現 ID番号の誕生日情報を検証するPHP正規表現 Jun 24, 2023 pm 02:22 PM

ID番号は私たちが日常生活で頻繁に使用する本人証明ツールであり、それに含まれる誕生日情報も非常に重要です。 PHP を使用して ID 番号を検証する場合、誕生日情報が正しいかどうかを判断する必要があることがよくあります。この記事では、PHPの正規表現を使ってID番号の誕生日情報を確認する方法を紹介します。 1. ID 番号の基本形式 ID 番号は 18 桁の数字と文字で構成される文字列で、最後の 1 桁は数字または文字、大文字または小文字を使用できます。最初の 17 桁は ID カードの所有者です

PHP 正規表現を使用して、入力文字列が正しい ID 番号、パスポート番号、または香港およびマカオのパス形式であるかどうかを確認する方法 PHP 正規表現を使用して、入力文字列が正しい ID 番号、パスポート番号、または香港およびマカオのパス形式であるかどうかを確認する方法 Jun 24, 2023 am 10:36 AM

IDカード、パスポート、香港やマカオのパス番号は重要な個人証明書であり、個人情報の安全性を確保するために、ユーザーが入力したID番号が標準フォーマットに準拠しているかどうかをシステムで検証する必要があります。 PHP 正規表現は、この目的を簡単に達成できる非常に強力なツールです。この記事では、PHP 正規表現を使用して、ユーザーが入力した ID 番号、パスポート番号、香港およびマカオのパス番号を検証する方法を紹介します。 1. ID カード番号形式の確認 ID カード番号は 18 桁の数字で、最後の 1 桁は数字または文字 X です。身元

Go 言語で正規表現を使用して文字列が有効な ID 番号であるかどうかを判断する方法 Go 言語で正規表現を使用して文字列が有効な ID 番号であるかどうかを判断する方法 Jul 13, 2023 pm 07:55 PM

Go 言語で正規表現を使用して文字列が法的な ID 番号であるかどうかを判断する方法 ID 番号は各中国国民の一意の識別子であり、社会のあらゆる側面で個人を識別するための重要な基盤でもあります。データ処理では、文字列が正当な ID 番号であるかどうかを判断する必要があることがよくあります。この記事では、Go 言語で正規表現を使用して文字列が正当な ID 番号であるかどうかを判断する方法を紹介します。 Go 言語で正規表現を使用するには、regexp パッケージを導入する必要があります。 ID 番号を決定するための正規表現は次のとおりです。

ID番号の有効性と性別を検証するためのPHP正規表現方法 ID番号の有効性と性別を検証するためのPHP正規表現方法 Jun 24, 2023 am 09:36 AM

IDカード番号は我が国の住民を識別するための重要な記号であり、多くの場面で本人確認に使用されます。アプリケーションでは、ID 番号の有効性と正確性を保証するために、正規表現による検証が必要です。この記事では、PHP 正規表現を使用して ID 番号の有効性と性別を検証する方法を紹介します。 1. ID カード番号の構成と規則 ID カード番号は、18 桁または 17 桁と 1 桁のチェックコードで構成されます。このうち最初の17桁はIDカード所有者の情報を表し、最後の1桁はIDカードを認証するための認証コードを表します。

PHP 正規表現の練習: ID 番号の照合 PHP 正規表現の練習: ID 番号の照合 Jun 23, 2023 am 10:24 AM

日常の開発では、ID 番号を一致させる必要があるシナリオが数多くあります。 ID 番号は固定形式ですが、各州によってルールが若干異なるため、一致させるには特定の正規表現が必要です。 PHP は、ID 番号を簡単に照合できる組み込みの正規表現関数とクラスを提供する、広く使用されているプログラミング言語です。この記事では、PHP 正規表現を使用して ID カード番号を照合する方法を紹介します。 ID カード番号の形式 ID カード番号は 18 桁の数字とチェック コードで構成されます。

PHP正規表現を使用してID番号の年齢範囲を確認する方法 PHP正規表現を使用してID番号の年齢範囲を確認する方法 Jun 24, 2023 pm 01:00 PM

ID カード番号は中国国民にとって唯一の身分証明書であり、生年月日などの個人識別情報が含まれています。実際のアプリケーションでは、ID 番号の年齢範囲を検証する必要がある場合がありますが、これを実装するには PHP 正規表現が非常に便利です。この記事では、PHP 正規表現を使用して ID 番号の年齢範囲を確認する方法を紹介します。 1. ID カード番号の構造 ID カード番号は 17 文字で構成され、6 つの部分に分かれています。最初の 2 桁は州コード、中央の 4 桁は市および郡コード、次の 2 桁は年コード、次の 2 桁は年コードです。

See all articles