導航:首頁 > 編程語言 > python中編寫6位數字校驗碼

python中編寫6位數字校驗碼

發布時間:2022-12-29 17:26:22

⑴ 跪求一道python的題目解答!

def isMima(mima):
----mima = str(mima)
----if mima.isdigit() and len(mima) ==6:
--------for i in range(1,6):
------------int_i = mima[i]
------------int_idel1 = str((int(mima[i-1])+1)**3)[-1]
------------if int_i != int_idel1:
----------------return print('wrong')
--------return print('right')
----else:
--------return print('wrong')

isMima(272727)
isMima(123456)
isMima('272727')
#字元串數字都可以輸入

⑵ python實現包含字母數字、小數點、下劃線的密碼6-12位的正則表達式

[a-zA-Z0-9\._]{6,12}

⑶ 用Python校驗身份證號碼真偽

#這個演算法都給了,應該比較簡單吧。我也很菜,隨意寫了一個。異常沒做,你可以自##己加一下。做一些驗證過濾。不知道隨機是不是真是隨意隨機,我沒有按照身份證規##則做隨機。是真的隨機了18位。。。如果你有規則,也可以自己寫一個。
importrandom

yushu=[xforxinrange(0,11)]
ma=['1','0','X','9','8','7','6','5','4','3','2','1']

defyanzheng(nid):

dicma=dict(zip(yushu,ma))

sum=0

forx,yinenumerate(nid[:-1]):

sum+=((2**(18-x-1))%11)*int(y)#17位對應系數相乘的和

ifnid[-1]==dicma[sum%11]:#校驗碼對照
return'%sTrue'%nid
else:
return'%sFalse'%nid
defreadfile(fname):
f=open(fname,'rb')
forlineinf.readlines():
printyanzheng(line.strip())
f.close()
defrandnum():
idstr=''
foriinrange(17):#前17位隨機
idstr+=str(random.randint(0,9))

idstr+=random.choice(ma)#最後一位從列表種隨意一個,因為有X
returnidstr


if__name__=="__main__":
nid=raw_input('PleaseenteryourID:')#用戶輸入ID,沒做任何驗證
printyanzheng(nid)#驗證身份證
readfile('id.txt')#從文件讀出來再驗證
printyanzheng(randnum())#隨機一個在驗證

⑷ python身份證號換成***

最近工作中剛好要清洗一批客戶數據,涉及到身份證號碼15位和18位的轉換,特意研究了下,在這里分享下。
身份證號碼的構成
既然談到了身份證轉換,那就需要先了解下證件號碼的構成。

公民身份號碼是特徵組合碼,由 十七位數字本體碼 和 一位數字校驗碼 組成;
排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。
六位數字地址碼:表示編碼對象常住戶口所在縣(市、旗、區)的行政區劃代碼,按GB/T 2260 的規定執行。
八位數字出生日期碼:表示編碼對象出生的年、月、日,按 GB/T 7408 的規定執行。年、月、日代碼之間不用分隔符。某人出生日期為 1995年08月12日,其出生日期碼為 19950812。
三位順序碼:表示在同一地址碼所標識的區域范圍內,對同年、同月、同日出生的人編定的順序號,順序碼的奇數分配給男性,偶數分配給女性。
一位校驗碼:校驗碼按照 ISO 7064:1983.MOD 11-2校驗碼計算出來的檢驗碼。
校驗碼計算方法
1、將前面的身份證號碼17位數分別乘以不同的系數。從第一位到第十七位的系數分別為: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 ;
2、將這17位數字和系數相乘的結果相加;
3、用加出來和除以11,看余數是多少;
4、余數只可能有0 1 2 3 4 5 6 7 8 9 10這11個數字。其分別對應的最後一位身份證的號碼為 1 0 X 9 8 7 6 5 4 3 2 ;
5、通過上面得知如果余數是2,就會在身份證的第18位數字上出現羅馬數字的X。
解決思路
15位轉18位:即身份證號碼的前六位數字+ '19' + 身份證第六位以後的數字 + 校驗碼
(不要問我為什麼加19這種白痴(´⊙ω⊙`) @?¥&?的問題,當然是因為只有19世紀的人才可能擁有15位的身份證號啦)
校驗碼計算方法就更簡單了,將這17位數字和系數相乘的結果相加除以11匹配余數對應的號碼即可。
注意:代碼中我用了幾個變數,在這里拆解講解下。
Ai: 表示第i位置上的身份證號碼數字值 Wi: 表示第i位置上的加權因子 Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
十七位數字本體碼加權求和公式: S = Sum(AiWi), i = 0, … , 16 ,先對前17位數字的權求和
計算模 Y = mod(S, 11)
通過模得到對應的校驗碼
Y: 0 1 2 3 4 5 6 7 8 9 10
校驗碼: 1 0 X 9 8 7 6 5 4 3 2
OK,分析的差不多了,直接看代碼。
怎麼用代碼實現?
# encoding: utf-8
"""
CREATED ON 19-11-05
@AUTHOR: XUSL
"""
WI = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1, ]
VI = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2, ]
DEF GET_VERITY(EIGHTEEN_CARD):
"""
:PARAM EIGHTEEN_CARD:
:RETURN:
"""
AI = []
REMAINING = ''
IF LEN(EIGHTEEN_CARD) == 18:
EIGHTEEN_CARD = EIGHTEEN_CARD[0:-1]
IF LEN(EIGHTEEN_CARD) == 17:
S = 0
FOR I IN EIGHTEEN_CARD:
AI.APPEND(INT(I))
FOR I IN RANGE(17):
S = S + WI[I] * AI[I]
REMAINING = S % 11
RETURN 'X' IF REMAINING == 2 ELSE STR(VI[REMAINING])
DEF UP_TO_EIGHTEEN(FIFTEEN_CARD):
"""
15位轉18位
:PARAM FIFTEEN_CARD:
:RETURN:
"""
EIGHTEEN_CARD = FIFTEEN_CARD[0:6] + '19' + FIFTEEN_CARD[6:15]
RETURN EIGHTEEN_CARD + GET_VERITY(EIGHTEEN_CARD)
DEF DOWN_TO_FIFTEEN(EIGHTEEN_CARD):
"""
18位轉15位
:PARAM EIGHTEEN_CARD:
:RETURN:
"""
RETURN EIGHTEEN_CARD[0:6] + EIGHTEEN_CARD[8:17]
IF __NAME__ == '__MAIN__':
# 15位轉18位
CARD_1 = UP_TO_EIGHTEEN('632123820927051')
PRINT(CARD_1)
# 18位轉15位
CARD_2 = DOWN_TO_FIFTEEN('410125199908222000')
PRINT(CARD_2)
當然,這只是個小功能,主要還是想分享下代碼,如果有同樣的處理可以直接​用。
總結
以上所述是小編給大家介紹的使用Python完成15位18位身份證的互轉功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

⑸ 檢驗碼的計算方法求助

校驗碼的計算方法如下:

1、從代碼位置序號2開始,所有偶數位的數字代碼求和。

2、將步驟a的和乘以3。

3、從代碼位置序號3開始,所有奇數位的數字代碼求和。

4、將步驟b與步驟c的結果相加。

5、用大於或等於步驟d所得結果且為10最小整數倍的數減去步驟d所得結果,其差即為所求校驗碼的值。

(5)python中編寫6位數字校驗碼擴展閱讀

檢驗碼的結構:

如右圖所示,EAN-13商品條碼是表示EAN/UCC-13商品標識代碼的條碼符號,由左側空白區、起始符、左側數據符、中間分隔符、右側數據符、校驗符、終止符、右側空白區及供人識別字元組成。

左側空白區:位於條碼符號最左側與空的反射率相同的區域,其最小寬度為11個模塊寬。

起始符:位於條碼符號左側空白區的右側,表示信息開始的特殊符號,由3個模塊組成。

左側數據符:位於起始符右側,表示6位數字信息的一組條碼字元,由42個模塊組成。

中間分隔符:位於左側數據符的右側,是平分條碼字元的特殊符號,由5個模塊組成。

校驗符:位於右側數據符的右側,表示校驗碼的條碼字元,由7個模塊組成。

⑹ python 使用正則表達式匹配一個字元串,要求只能有6位,小寫字母

居民身份證的號碼是按照國家的標准編制的,由18位組成:前六位為行政區劃代碼,第七至第十四位為出生日期碼,第15至17位為順序碼,第18位為校驗碼。作為尾號的校驗碼,是由號碼編制單位按統一的公式計算出來的,如果某人的尾號是0-9,都不會出現X,但如果尾號是10,那麼就得用X來代替,因為如果用10做尾號,那麼此人的身份證就變成了19位,而19位的號碼違反了國家標准,並且我國的計算機應用系統也不承認19位的身份證號碼。Ⅹ是羅馬數字的10,用X來代替10,可以保證公民的身份證符合國家標准。 綜上所述,可以看出「X」並不是英文字母,而是羅馬數字。所以與大小寫無關。正確的寫法是:Ⅹ

閱讀全文

與python中編寫6位數字校驗碼相關的資料

熱點內容
手機如何連接伺服器的遠程桌面 瀏覽:48
復雜命令的實現 瀏覽:330
抖音上的程序員和真正的程序員 瀏覽:300
查看kernel編譯器 瀏覽:279
給plc程序加密 瀏覽:225
python多進程數據共享 瀏覽:847
華為和安卓系統有什麼不一樣 瀏覽:106
python中wb表怎麼列印 瀏覽:297
python如何把字元串賦給數組 瀏覽:229
狄克斯特拉演算法是什麼 瀏覽:675
室內裝飾材料pdf 瀏覽:633
gitbook命令行 瀏覽:1000
啟動zookeeper命令 瀏覽:527
健身館app怎麼樣 瀏覽:314
python可視化項目 瀏覽:442
安卓機怎麼辨別蘋果機真假 瀏覽:711
微信小程序源碼轉成抖音 瀏覽:654
優省油app怎麼沒法下載 瀏覽:72
pdf格式轉換excel 瀏覽:625
高爾夫6壓縮機響 瀏覽:310