本文实例讲述了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程序设计有所帮助。