本文实例讲述了Python实现随机生成有效手机号码及身份证功能。分享给大家供大家参考,具体如下:
中国那么大,人那么多,几乎人手一部手机。手机号码已经作为各大互联网站的注册账户。同样,身份证更是如此。以下是生成有效手机号码和身份证号。
身份证需要下载districtcode.txt文件。
完整代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
import os import random import datetime BASE_DIR = os.path.dirname(os.path.dirname(__file__)) DC_PATH = BASE_DIR + "districtcode.txt" # 随机生成手机号码 def createPhone(): prelist = [ "130" , "131" , "132" , "133" , "134" , "135" , "136" , "137" , "138" , "139" , "147" , "150" , "151" , "152" , "153" , "155" , "156" , "157" , "158" , "159" , "186" , "187" , "188" ] return random.choice(prelist) + " ".join(random.choice(" 0123456789 ") for i in range ( 8 )) # 随机生成身份证号 def getdistrictcode(): with open (DC_PATH) as file : data = file .read() districtlist = data.split( '\n' ) for node in districtlist: #print node if node[ 10 : 11 ] ! = ' ' : state = node[ 10 :].strip() if node[ 10 : 11 ] = = ' ' and node[ 12 : 13 ]! = ' ' : city = node[ 12 :].strip() if node[ 10 : 11 ] = = ' ' and node[ 12 : 13 ] = = ' ' : district = node[ 14 :].strip() code = node[ 0 : 6 ] codelist.append({ "state" :state, "city" :city, "district" :district, "code" :code}) def gennerator(): global codelist codelist = [] if not codelist: getdistrictcode() id = codelist[random.randint( 0 , len (codelist))][ 'code' ] #地区项 id = id + str (random.randint( 1930 , 2013 )) #年份项 da = datetime.date.today() + datetime.timedelta(days = random.randint( 1 , 366 )) #月份和日期项 id = id + da.strftime( '%m%d' ) id = id + str (random.randint( 100 , 300 )) #,顺序号简单处理 i = 0 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] id = id + checkcode[ str (count % 11 )] #算出校验码 return id print createPhone() print gennerator() |
运行结果如下:
希望本文所述对大家Python程序设计有所帮助。