一个计算身份证号码校验位的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)
忘记函数原型吧,这里不需要指明返回值类型,不需要指明形参数据类型。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

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

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

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