【Web_接口測試_Python3_自動化生成四要素】姓名/身份證/銀行卡/手機號,接口測試準備工作之四要素生成,自動化測試案例

#!/usr/bin/env/python3
# -*- coding:utf-8 -*-
'''
Author:leo
Date&Time:2020/5/25 and 10:24
Project:Python3
FileName:接口自動化,測試數據準備
Description:
1.生成隨機姓名
2.生成隨機身份證號碼
3.生成隨機銀行卡號
4.生成隨機手機號


import random, datetime, time
from datetime import date
from datetime import timedelta

class Auth():
    # 隨機返回一個四字姓名
    def realname(self):
        num = random.randint(1, 1307)
        name = ["王石",  "蔣錫培", "向文波", "牛根生", "熊曉鴿", "王冉", "於清教", "謝清海", "劉旗輝", "劉步塵", "陳達夫", "船長", "葉茂中", "李士福", "王進生", "任志強", "付偉", "孫虹鋼", "宋新宇", "王微", "翁向東", "賙濟譜", "袁嶽", "成君憶", "艾學蛟", "雷永軍", "劉秋華", "宋煒", "劉東華", "科特勒", "陳志列", "張巨峯", "姚日來", "李朝曙", "劉興亮", "滄海", "曾玉", "姜汝祥", "徐浩然", "鄧國堅", "辜勝阻", "範以錦", "郭梓林", "秦合舫", "王育琨", "王輝耀", "胡奎", "華仔", "韓耀國", "唐清建", "曲向東", "李志起", "吳伯凡", "景素奇", "賈昌榮", "林國峯", "沈坤", "劉賢方", "周永亮", "馬向陽", "熊焰", "唐崇健", "王廣偉", "孔繁任", "劉孝全", "徐浩然", "沈青", "陳功", "李肅", "宋立新", "金錯刀", "劉泳華", "路長全", "白立新", "蔣小華", "楊暉", "王永", "王穎", "陳亮", "郭凡生", "黃鳴", "靳羽西", "王吉萬", "蔡明", "楊卓舒", "周鴻禕", "欒潤峯", "趙民", "姜汝祥", "季欣麟", "張志雄", "張瓊", "錢學鋒", "卞華舵", "王嘉倫", "卞秉彬", "白雲峯", "程朝暉", "周彥平", "劉佳", "楊曦淪", "盧文兵", "劉石", "池向東", "畢國才", "王吉舟", "王方劍", "楊子云", "龐玉良", "嚴旭", "郭世邦", "謝宏", "林義相", "王正華", "嚴介和", "張志勇", "端木", "呂多加", "劉傑克", "於剛", "姜明", "王巍", "聶慶平", "宋文洲", "趙曉", "張五常", "茅於軾", "王吉緋", "易憲容", "趙錫軍", "王福重", "巫繼學", "陸新之", "梅新育", "時寒冰", "郭田勇", "鄒恆甫", "盛洪", "張曙光", "王東京", "劉軍洛", "何帆", "巴曙鬆", "朱莊虹", "劉紀鵬", "金岩石", "王先慶", "盧麒元", "項兵", "丁學良", "張寧", "段紹譯", "林毅夫", "肖金成", "張寅", "張旭昆", "陶冬", "盧菁", "徐滇慶", "董藩", "何協", "餘根錢", "魯政委", "餘元洲", "董保華", "孫立堅", "謝百三", "湯敏", "丁志傑", "郎鹹平", "王志樂", "馬宇", "何志毅", "吳志峯", "謝作詩", "朱錫慶", "薛兆豐", "鄭風田", "沈明高", "何維達", "許家林", "呂隨啓", "韓志國", "左曉蕾", "劉煜輝", "董登新", "恩道爾", "曹鳳岐", "黃明", "迪迪埃", "李開發", "孫滌", "曹建海", "尹中立", "吳曉波", "張明", "肖耿", "陳志武", "李玲", "徐洪才", "林伯強", "賴偉民", "趙偉", "劉利剛", "周其仁", "李稻葵", "管清友", "夏斌", "胡星斗", "石建勳", "秦暉", "曹遠征", "郝演蘇", "袁鋼明", "王小魯", "顧銘德", "潘英麗", "孔祥智", "何廣文", "陳杰", "許小年", "陳平", "王佔陽", "張維迎", "姚餘樑", "韓復齡", "周天勇", "陳浩武", "郭生祥", "範必", "姚樹潔", "謝丹陽", "洪平凡", "趙弘", "吳國俊", "沈建光", "鄒恆甫", "楊再平", "李羅力", "朱寧", "馮興元", "熊鷺", "於曉華", "屈宏斌", "黃震", "劉尚希", "黃建中", "王德培", "葉檀", "楊宇東", "馬光遠", "皮海洲", "劉正山", "方泉", "劉兆輝", "周春兵", "陳序", "魯寧", "寧山", "吳木鑾", "朱小央", "朱大鳴", "鈕文新", "村婦", "劉杉", "蘇培科", "董少鵬", "五連發", "羅振宇", "周斌", "程實", "羅建法", "羅天昊", "曹中銘", "杜澤壯", "馬忠普", "楊小潔", "張志偉", "張維", "傅峙峯", "盛大林", "水皮", "餘豐慧", "陳劍夫", "秦朔", "費國平", "朱時均", "蘇小和", "張弓驚", "曹彤", "張庭賓", "石磊", "明清石", "竇含章", "徐旭紅", "周太友", "趙巖", "封城", "唐鈞", "童大煥", "羅慰年", "周行健", "劉振華", "智勇", "林採宜", "劉忠良", "何亞福", "劉遠舉", "胡釋之", "蔡紅東", "楊林", "艾誠", "孫榮海", "李勝哲", "孫豔豔", "李馨", "張志軍", "張厚寶", "龐文濤", "宋爽", "胡婷", "王金國", "張繼福", "羊琳", "金鑫", "汪濤", "於雷", "盛鳳霞", "劉廣永", "張淑杜", "李揚", "秦嘉欣", "王嵐", "馬鍵偉", "宋繼朋", "李愛玲", "劉莉", "孫廣輝", "王長興", "張文傑", "刁希剛", "王燕", "曹振偉", "於坤志", "修明義", "呂丕星", "江守君", "吳愛芹", "陸桂玲", "潘貽斐", "王秀芹", "王彩玲", "郭軍萍", "史忠諾", "繼玉民", "廉鴻梅", "劉翔", "周希芳", "劉成洪", "王麗麗", "李孝壽", "孫蓬勃", "王俊", "徐立波", "尹翠花", "朱記祥", "李衛", "鄒大鵬", "邊文浩", "霰琳", "李泰龍", "趙磊", "朱永勝", "呂芹", "伊佳", "邢寶標", "路玉娥", "於國良", "侯爍", "王麗華", "郭建昌", "郭方臣", "蘇學玲", "馬騰賓", "於海濤", "王光志", "尹曉豔", "張桂榮", "孫業明", "楊逢永", "孫浩成", "荊林忠", "徐長坤", "錢玉國", "韓其軍", "韓利祥", "郝慶", "孫登強", "韓祥傑", "蘇磊", "於洪娟王建", "王介珍", "種碩", "魏書美", "陳建軍", "李姝辰", "劉玉環", "馬偉", "歐曉麗", "曹士偉", "高升", "王新成", "董曉麗", "王道平", "李生", "喬偉", "遲洪江", "王洪豔", "鄒明", "張培順", "馬振國", "林杉", "張雷", "範鵬飛", "欒淑芳", "周天茂", "張迎明", "金娜", "閆有志", "林樹香", "王建勳", "王豔", "趙啓超", "侯悅軍", "逄永波", "劉萬樂", "劉法滇", "王世傑", "樑傳祺", "丁琳", "王偉", "孟玲", "李文光", "張林", "宮保傑", "原世梅", "王立娜", "王恆利", "李曉燕", "崔建成", "王曉怡", "劉衛平", "程瑤瑤", "崔林平", "許帥", "袁人剛", "李廣慶", "李洋", "張錫惠", "宋迪", "趙良臣", "呂品志", "魏燕", "劉子龍", "杜建強", "王萍", "樑娟娟", "侯力紅", "王立萍", "侯曉榮", "崔天忠", "郝軍", "樑雪燕", "張璋", "王洪娜", "範玉花", "王幸琦", "齊進友", "冀濤涓", "於芹", "婁承旭", "王榮", "馬殿增", "劉鼕鼕", "荀學貴", "王春虹", "王學策", "張麗敏", "薛英進", "方景盛", "崔財本", "李新海", "潘士俊", "張倩", "王心剛", "王汝良", "戰德昌", "金晟鳴", "呂榮福", "隋信良", "溫瑞班", "王育勝", "閆福林", "王尊序", "馬德志", "馬秀妮", "馬小磊", "劉振德", "慈華", "孫國業", "徐立超", "丁萍", "葛樹民", "耿成名", "範貞傑", "孔祥", "王積霞", "楊豐豔", "迮興順", "樑學林", "範桂蘭", "王世岐", "孫亮", "秦紹其", "姜亮", "許本傑", "張愛榮", "劉新景", "段玉顯", "王志旭", "秦永生", "王庚芳", "于濤", "周林梅", "霍鈺馨", "唐小莉", "李向東", "李英軍", "呂守輝", "王國建", "鄒志迅", "張煥強", "董文穎", "邵家初", "王思厚", "韓阜呈", "孫愛卿", "蔣健", "駱洪訓", "孫建芹", "李培明", "楊培友", "於曉光", "張翠芝", "王玉欣", "王瑞卿", "王明舫", "姜華", "李海英", "鄒清好", "呂建國", "侯東基", "劉雪夏", "孫成安", "張煥東", "孔鈺鈞", "劉建", "張妍", "孫曉豔", "姜斌", "王騰", "郭春福", "陳培海", "崔世行", "曲政東", "龐智銘", "陳玉蓮", "王靜", "馬寶忠", "張曉燕", "孫靜", "李維斌", "欒吉棟", "李宏利", "盛國財", "於維民", "孫桂玉", "高進光", "劉永秀", "魏兆功", "竇百金", "範作國", "王增林", "方壽亭", "李美玲", "李斌", "孫天波", "姬常洪", "曹洪英", "李寶軍", "張淑慧", "陳百鵬", "遲明友", "王玉華", "趙術傑", "馮啓花", "韓學生", "徐振強", "崔中珍", "趙守本", "於建羣", "宋經芝", "魏範", "趙衛雲", "袁文秀", "劉唐清", "孟慶軍", "褚豔麗", "郎豐蘭", "李錫河", "高洪福", "管恩喜", "馬洪坡", "田全昌", "武學英", "李昌盛", "李德仁", "牛士祿", "郭金滿", "謝麗玲", "何茂偉", "秦秀江", "李玉軍", "宋兆華", "王官苓", "劉宗祥", "牟澤又", "宋少英", "李南南", "魯長茂", "王槐德", "王福友", "王啓硯", "易友全", "周乃良", "周建紅", "孫強", "王龍雲", "宋學章", "霍麗敏", "李峯", "劉斌", "潘立美", "韓娟", "於偉華", "趙月平", "姜紅燕", "寇學有", "常維霞", "董建博", "喬日彩", "張永鳳", "毛建民", "姜長富", "郭良娟", "孫志福", "張兆全", "馬守春", "顧玉祥", "王三舍", "孫安法", "薛復麗", "孫慶剛", "李培忠", "劉金政", "郭秀功", "李吉章", "孫秀卿", "曹光前", "王龍吉", "趙志靈", "黃鳳學", "崔乃成", "張敏", "李培寶", "張愛燕", "鄔林", "賈國忠", "王新朋", "張兆明", "湯秀梅", "董興路", "王漢慶", "劉華偉", "齊雲峯", "鄭德雲", "趙世昌", "李金金", "張金祥", "李兆祥", "李傑", "宋立華", "王俊濤", "劉明紅", "袁波", "王繼寶", "宋修硯", "劉清東", "孫晶", "王建芬", "王國華", "王欽榮", "李學強", "譚瑞剛", "隋相軍", "李揚", "孟慶才", "王樹才", "王同華", "張龍祥", "鄭藝偉", "張武元", "範慶江", "姜明勝", "管延明", "高明慶", "宮玉春", "劉際偉", "周來清", "王淑祥", "隋建偉", "宋愛香", "範立賢", "趙清明", "嶽玉田", "李學信", "郭寬亮", "孫禮忠", "康曉晨", "陳金明", "韓朋朋", "趙洪喜", "郝來勳", "潘加勝", "楊冬論", "王維友", "崔清剛", "郭宗澤", "李花榮", "李作浩", "羅炳弟", "劉先兵", "竇波", "王培明", "潘延偉", "王明磊", "李樹昌", "張崇美", "逄淑棋", "付興傑", "毛玉富", "高樹森", "董豔梅", "譚濤", "孫化良", "段勳", "陳炳信", "張佃鑫", "李志田", "王夕光", "鄭金波", "季召雲", "汪愛東", "周福莉", "段興水", "李芹梅", "張玉花", "劉玉德", "姜永華", "孫友勤", "劉強", "劉洪亮", "戴紀坤", "路媛媛", "彭樹奎", "程煥芝", "劉鋒銳", "姜傳昆", "管培春", "玄承才", "劉秀英", "孔令海", "李煥春", "黃澤升", "陳玉徵", "王密坤", "宋秀清", "王光明", "馬良之", "徐培貴", "張立天", "肖存永", "滕少梅", "冷顯平", "宋福順", "楊雲匯", "賈春芬", "曹豐春", "王方仁", "王曉君", "張崇蘭", "劉琳", "隋丕言", "燕化祥", "丁德羣", "孫順書", "郝佳", "戴建邦", "董豐祥", "孫秀榮", "吳明福", "李世子", "封洪池", "馬維江", "鄭召玉", "張平", "于振旗", "盧向榮", "許仁濤", "林在霞", "劉西太", "孫娟", "範德福", "張帆", "王獻平", "張洪君", "張旭令", "高懷東", "周連祥", "劉華江", "李新", "潘炳友", "陳淑芹", "馬元禮", "李硯文", "羅秀娟", "卜洪芬", "張春林", "竇洪法", "陳官傑", "李亞芳", "季綵鳳", "房德娟", "劉玉傑", "丁連明", "程清民", "王梅", "孫增英", "王學臣", "潘昭海", "趙順忠", "劉春光", "高英", "劉明勳", "李芳", "範忠聘", "苑太剛", "侯法永", "張勤棟", "秦國慶", "吳京仁", "王輝", "陳英", "王克平", "孫玉美", "孫樂文", "閔曉涵", "楊志全", "宋麗娟", "王久永", "張昆志", "嶽敏", "王增亮", "李淑芹", "趙錫恩", "李青葉", "王嶽", "王克軍", "宇振紅", "王磊", "張彥羣", "韓增田", "馬啓海", "楊孟江", "董小敏", "鍾明祥", "邢濤", "夏茂會", "李巖", "劉樹芹", "韓燕", "王文東", "齊延波", "周升江", "趙永順", "李彬彬", "潘貴天", "李國昌", "隋汝明", "王文平", "王法武", "張豔麗", "於長春", "劉建青", "侯少欽", "張慶英", "慈建強", "劉相聲", "王克信", "邰學軍", "王炳敬", "劉洪巖", "任憲陽", "王中令", "楊炳亮", "魏金燕", "王太彬", "張學林", "劉素梅", "張文芬", "劉奎榮", "張志剛", "張慶榮", "董沙沙", "李仕坤", "陳明紀", "王桂民", "崔董煜", "劉文舉", "解相青", "朱連峯", "王洪祿", "葛秀珍", "唐金國", "陳安西", "解炳輝", "於懷河", "蘇保寧", "王瑞濤", "劉鉅祥", "韓曉雪", "樑立國", "賈翠花", "楊沛然", "陳宜靈", "魯玉文", "樑睿", "張鋮鋮", "郝京美", "王超", "陰生軍", "杜燕慧", "張磊", "吳秋潼", "李煥麗", "王濤", "劉燦亮", "侯軍", "李慶偉", "歐陽春蘭", "曹乃勝", "張慶蘭", "鄧光運", "韓文成", "白仲英", "倪文峯", "程瑞榮", "楊榮軍", "桑剛", "鮑光建", "王德洪", "常金峯", "肖秀榮", "張存忠", "李愛清", "江培波", "劉序偉", "林桂森", "孫玉玲", "郭英華", "肖術平", "張新京", "董久麗", "何明麗", "趙國華", "李彩雲", "崔軍明", "蔡尚芹", "苗晟惠", "李凱", "王金蘭", "姜小寧", "結結", "鄒平", "伯振仿", "許德蘭", "姜軍", "於國利", "劉濤", "董崇本", "劉龍", "許志敏", "姜麗", "郭茂慧", "李德新", "劉傑昌", "金光", "王玉華", "李源波", "遲剛", "於永青", "李曉紅", "於平平", "江元芹", "李優", "叢朝霞", "畢雪玉", "叢強滋", "許橋", "田序強", "孫吉澤", "盛小鳳", "孫玉科", "叢芳", "呂飛", "於洋", "段德雲", "郭學明", "叢長日", "李國振", "劉培民", "趙林", "李濤", "曲芳", "鄭世善", "徐德愛", "於深洋", "孫兆法", "田法雲", "劉新梅", "郝春燕", "李長坤", "陳國強", "吳立強", "劉木安", "劉大偉", "周希賓", "劉明", "王煥民", "相玉常", "吳懷霞", "劉彬", "劉兆銘", "柴成蓮", "毛德山", "徐慶嶺", "張永善", "董彥義", "張煥英", "侯奇", "張曉紅", "顔世國", "崔獻慈", "王力雪", "龐廷佩", "劉軍", "劉霞", "陳海蓉", "劉彥前", "徐恆瑩", "鍾海莉", "王希嶺", "李瑞月", "魏兆坤", "任博", "宋克中", "劉水軍", "劉俊美", "徐淑文", "劉春嶺", "趙洪雲", "王遠升", "張建欣", "孟慶友", "劉純森", "王敬華", "王永剛", "鹹瑞章", "邵士東", "孫鳳洪", "劉現典", "左興安", "張體釗", "徐維田", "符紹彬", "徐家坤", "高志恆", "姬傳蘭", "王進軍", "李仲玉", "李明山", "李京華", "張樹", "常從喜", "彭京花", "張濤", "陳彥兆", "劉寶秀", "李冬", "王燕", "張西海", "徐洪君", "夏計芳", "段建練", "趙旭", "趙峯", "魯芮", "劉美玉", "宋倫峯", "喬瑋瑋", "蘇峯", "馮瑞傑", "杜樹芝", "苗洪昌", "史立莉", "譚汝元", "王子春", "劉磊", "張全啓", "李萍", "李繼祥", "趙新廷", "徐慶峯", "劉元傑", "葛鳳霞", "寇榮建", "徐恆彥", "聶新全", "劉樹傳", "王守剛", "戚佃勤", "孫仲德", "滕金磊", "米德軍", "張慶舉", "蔣同秀", "郝愛華", "夏德乾", "張朔", "連民", "郭從彥", "卞錫善", "張希亮", "李欣成", "王家鬆", "徐偉", "李興友", "高得軍", "段鳳英", "李長山", "李雲", "張建濤", "常子亮", "高樹強", "王吉倫", "董克勝", "吳士棟", "焦洪奎", "孟祥森", "劉延羣", "何峯旭", "崔學敏", "刁玉香", "劉潤澤", "劉軍", "惠敏", "王文元", "崔永霞", "楊化強", "吳傳金", "蔣寧波", "王友", "任慶偉", "張之餘", "吳世娟", "王立濤", "趙彥山", "劉海芝", "朱孟月", "丁大偉", "王濤", "宋豔陽", "孟凡義", "邊紀恩", "丁媛媛", "高持霞", "姜麗華", "李明", "李萍", "李玉逢", "劉豔飛", "王鳳葉", "魏紅", "徐曉麗", "楊玉石", "張貞", "單衛", "王恆建", "張龍江", "周新", "胡彬", "吳壘歷", "殷超", "崔媛媛", "徐祗江", "唐信山", "劉現寧", "李學農", "王光娟", "徐鵬", "付潤升", "王思維", "郭東瑞", "陳棚", "馬金龍", "劉佔飛", "蘇雲芳", "張文廣", "於君生", "宋繼成", "姚曉東", "郭士林", "林祥芬", "蔣沂萍", "楊香", "任玉婷", "鄧新華", "朱振軍", "潘松嶺", "冷靜", "紀飛", "張連第", "朱苓", "吳漢兵", "孫宏昌", "鞠春娟", "張雷", "殷興華", "王春", "宋增芬", "陳琪森", "朱高峯", "徐利", "張莉", "房德川", "張維成", "徐蕾", "趙娟", "聶佳麗", "李希玲", "莊悅寧", "薛原", "徐淑磊", "薛希合", "孫欽功", "韓立", "薛琳彥", "王曉磊", "朱禮明", "高文秀", "付朝彬", "李鳳琴", "王學山", "王利利", "李洪英", "楊德福", "邵愛蓮", "李興旺", "車秀河", "苑琳琳", "劉暉", "馮學森", "趙吉平", "張希勇", "康殿保", "懷山", "楊翱", "崔廣波", "王榮", "張桂芹", "王韶忠", "黃玉榮", "韓延麗", "韓秋生", "張林", "臺傑", "劉斌", "李自留", 
                "蔡徐坤", "陳立農", "範丞丞", "黃明昊", "林彥俊", "朱正廷", "王子異", "王琳凱", "尤長靖", "畢雯珺", "李希侃", "黃新淳", "李權哲", "丁澤仁", "秦奮", "韓沐伯", "徐鶴尼", "左葉", "羅正", "陸定昊", "董又霖", "董巖磊", "錢正昊", "韓雍傑", "木子洋", "靈超", "嶽嶽", "卜凡", "朱均天", "朱均一", "朱一文", "張晨宇", "應智越", "萬宇賢", "呂晨瑜", "宋微子", "何東東", "李長庚", "張藝凡", "李若天", "鄧烺怡", "靖佩瑤", "周騰陽", "楊羿", "張奕軒", "姜京佐", "許凱皓", "凌崎", "周彥辰", "朱星傑", "Rapen", "Glgel", "張昕", "王宥辰", "陳斯琪", "於潔", "武連傑", "徐聖恩", "張達源", "陳名豪", "王梓豪", "金逸涵", "甘俊", "明鵬", "侯浩然", "餘明君", "姜禕", "婁滋博", "胡致邦", "高茂桐", "葉泓希", "伽裏", "羅傑", "李志傑", "林浩楷", "孫凡傑", "于斌", "何嘉庚", "孫浩然", "張晏愷", "李俊毅", "譚俊毅", "黃書豪", "陳義夫", "閔喆祥", "李讓", "周銳", "鄭瑞彬", "林超澤", "趙凌峯", "趙俞澈", "邱治諧", "樑輝", "楊非同", "李汶翰", "胡春楊", "胡文煊", "林陌", "陳宥維", "陳濤", "李宗霖", "嘉羿", "鄧澤鳴", "卡斯柏", "楊朝陽", "鄧超元", "王喆", "車慧軒", "蒙恩", "連淮維", "夏瀚宇", "姚明明", "師銘澤", "姜聖民", "李之繁", "管爍", "易烊千璽", "王俊凱", "王源", "丁程鑫", "馬嘉祺", "張真源", "敖子逸", "李天澤", "陳璽達", "宋亞軒", "劉耀文", "賀俊霖", "劉昊然", "吳磊", "鄭凱", "鹿晗", "陳赫", "李晨", "鄧超", "包貝爾", "王祖藍", "王寶強", "張翰", "吳尊", "白敬亭", "魏大勳", "鄧倫", "周杰倫", "汪蘇瀧", "許嵩", "徐良", "張藝興", "道枝駿佑", "片寄涼太", "山崎賢人", "黃子韜", "吳世勳", "邊伯賢", "樸燦烈", "金鐘大", "金鐘仁", "都暻秀", "金鐘國", "王嘉爾", "劉憲華", "杜海濤", "沈騰", "何炅", "李維嘉", "薛之謙", "楊洋", "成龍", "李小龍", "吳京", "李易峯", "華晨宇", "紀凌塵", "陳翔", "車銀尤", "南赫柱", "王力宏", "潘瑋柏", "古天樂", "羅志祥", "蘇有朋", "林志穎", "馬天宇", "胡先煦", "馬可", "吳彥祖", "任嘉倫", "李榮浩", "艾芙傑尼", "邢昭林", "林更新" ]
        unicode_name = chr(random.randint(0x4e00, 0x9fbf))
        return ("李" + unicode_name + name[num][0] + name[num][1])

    # 校驗身份證最後一位是否正確
    def check_id(self, id=None):
        lis = list(id)
        ten = ['X', 'x', 'Ⅹ']
        ID = ["10" if i in ten else i for i in lis]     #將羅馬數字Ⅹ和字母X替換爲10
        W = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
        Checkcode = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]
        sum = 0
        for i in range(17):
            sum = sum + int(ID[i]) * W[i]
        if Checkcode[sum % 11] == int(ID[17]):
            print('輸入正確')
            return True
        else:
            print('輸入錯誤')
            return False

    # 生成18位身份證號碼,測試過程中發現1000次有87次無法通過校驗,老腳本捨棄
    def old_id(self):
        '''
        1.隨機生成身份證號,現行身份證號爲18位
        2.組成部分爲6位地址碼,8位生日,3位順序碼(最後一位奇數爲男,偶數爲女),
        3.一位校驗碼,並作爲返回值
        '''
        area_id = str(510000)
        year = str(random.randint(1990, 1999))
        # 生成月份日期 方法爲當前日期+隨機時間
        da = date.today()+timedelta(days=random.randint(1, 366))  # 月份和日期項
        da = da.strftime('%m%d')
        code = str(random.randrange(100, 999, 2))  # 生成順序碼,女性
        id = area_id+year+da+code  # 除最後一位的身份證
        # 生成校驗碼
        count = 0
        weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] #權重項
        checkcode = {'0': '1', '1': '0', '2': 'X', '3': '9', '4': '8', '5': '7', '6': '6', '7': '5', '8': '5', '9': '3', '10': '2'}  # 校驗碼映射
        for i in range(0, len(id)):
            count = count + int(id[i])*weight[i]
        check = checkcode[str(count%11)]  # 算出校驗碼
        id = id + check  #組合生成身份證號
        return id
    # (新腳本)生成18位身份證號碼,1000次測試1000次通過校驗,
    def new_id(self):
        '''隨機生成個身份證號,現行身份證號爲18位,分別爲6位地址碼,8位生日,3位順序碼(最後一位基數爲男,偶數爲女),一位校驗碼,並作爲返回值'''
        area_id = str(510000)
        year = str(random.randint(1990, 1999))
        # 生成月份日期 方法爲當前日期+隨機時間
        da = date.today()+timedelta(days=random.randint(1, 366))  # 月份和日期項
        da = da.strftime('%m%d')
        code = str(random.randrange(100, 999, 2))  # # 生成順序碼(女)
        # 除最後一位的身份證
        id = area_id+year+da+code
        list_id = list(id)
        ten = ['X', 'x', 'Ⅹ']
        ID = ["10" if i in ten else i for i in list_id]     # 將羅馬數字Ⅹ和字母X替換爲10
        Weight = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
        Checkcode = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]
        sum = 0
        for i in range(17):
            sum = sum + int(ID[i]) * Weight[i]
        last_num = Checkcode[sum % 11]

        id = str(id) + str(last_num)          # 組合生成身份證號
        if "X" in id:
            id = self.new_id()
            return id
        else:
            return id

    # 老腳本(生成銀行卡,無法通過銀行校驗)
    def ccb(self):
        '''隨機生成建行銀行卡,並作爲返回值'''
        head = '621284'
        list1 = []
        for i in range(11):
            list1.append(random.choice('0123456'))
        part = ''.join(list1)
        end = '10'
        code = head+part+end
        return code

    # 新腳本(生成銀行卡並通過校驗,校驗銀行卡是否正確(Luhn算法))
    '''
    if __name__ == '__main__':
        for _ in range(10):
            random_card_num = gen_card_num('621284', 19)
            valid_result = check_luhn(random_card_num)
            print('%s %s' % (random_card_num, valid_result))
    '''
    # 銀行卡校驗(Luhn算法)
    def check_luhn(self, card_num):
        s = 0
        card_num_length = len(card_num)
        for _ in range(1, card_num_length + 1):
            t = int(card_num[card_num_length - _])
            if _ % 2 == 0:
                t *= 2
                s += t if t < 10 else t % 10 + t // 10
            else:
                s += t
        return s % 10 == 0
    def gen_card_num(self, start_with, total_num):
        result = start_with
        # 隨機生成前N-1位
        while len(result) < total_num - 1:
            result += str(random.randint(0, 9))
        # 計算前N-1位的校驗和
        s = 0
        card_num_length = len(result)
        for _ in range(2, card_num_length + 2):
            t = int(result[card_num_length - _ + 1])
            if _ % 2 == 0:
                t *= 2
                s += t if t < 10 else t % 10 + t // 10
            else:
                s += t
        # 最後一位當做是校驗位,用來補齊到能夠整除10
        t = 10 - s % 10
        result += str(0 if t == 10 else t)
        if Auth().check_luhn(result):
            return result
        else:
            return "生成銀行卡號失敗"
    # 自動生成手機號
    def mobile(self):
        tel=random.choice(['134', '139', '135', '150', '151', '157', '130', '132', '133', '153'])
        list1 = []
        for i in range(8):
            list1.append(random.choice('0123456789'))
        part = ''.join(list1)
        mobile = tel+part
        return mobile
    # 寫入文本,注意修改路徑
    def write_txt(self,filename,user_info):
        filepath = "..."
        # 寫入新文件(如果沒有文件後綴.txt,默認文本文件)
        with open(filepath + f'{filename}', mode="a+", encoding="utf8") as wfile:
            wfile.write(user_info)
            wfile.write("\n")
            wfile.seek(0, 0)
            new = wfile.read()
            # print(str(new))

if __name__ == '__main__':
    '''
    now = datetime.datetime.now()
    nowtime=str(now.strftime('%Y%m%d%H%M%S'))
    logging.basicConfig(filename=os.path.join(os.getcwd(),'生成的身份證號'+nowtime+'.txt'),level=logging.INFO)
    for i in range(100):
        logging.info("隨機生成的身份證號碼=%s",Auth().id())
    '''
    def tmp(j=0):
        logTime = time.strftime('%Y%m%d_%H:%M:%S', time.localtime(time.time()))
        m = ""
        dev, sit, uat, pre = "0", "1", "2", "3"
        for i in range(1, 5000):
            idName = Auth().realname()
            idNo = Auth().new_id()
            idBank = Auth().gen_card_num('621284', 19)
            # idMobile = Auth().mobile()
            idMobile = f"18500{sit}{j}{i:0>4}"  # dev:0,sit:1,文件名0,序號5001
            m = f"{idName}"+","+f"{idNo:<18}"+","+idBank+","+idMobile
            # print(m)
            Auth().write_txt(f"2020_infoAutoID{j}.txt", str(m))
    for n in range(0, 10):
        tmp(j=n)





 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章