python 生成手機號,並且驗證手機號是否存在

2021-09-24 19:24:24 字數 4141 閱讀 6154

1、該功能需要兩個庫,random和phone

2、已移動手機號為例,首先匯入需要的庫,然後定義乙個類,在init裡定義移動手機號的字首,self.yd裡的手機號前三位都是屬於移動的。

# coding:utf-8

import random

from phone import phone

class cellphonenumber:

def __init__(self):

# 定義移動手機號字首

self.yd = ['134', '135', '136', '137', '138', '139', '147', '150', '151', '152',

'157', '158', '159', '165', '178', '182', '183', '187', '188']

3、建mobile函式,定義空的陣列,用於儲存生成的手機號

def mobile(self, yds):

array =

print('正在生成字首是 ' + yds + ' 的手機號')

4、迴圈隨機生成手機號後8位的數,然後把手機號的字首和隨機生成的後8位組合成乙個完整的手機號

for i in range(500000):

a = random.randint(0, 9)

b = random.randint(0, 9)

c = random.randint(0, 9)

d = random.randint(0, 9)

e = random.randint(0, 9)

f = random.randint(0, 9)

g = random.randint(0, 9)

h = random.randint(0, 9)

data = str(yds) + str(a) + str(b) + str(c) + str(d) + str(e) + str(f) + str(g) + str(h)

5、判斷組成的手機號是否在array陣列裡,如果不在,則把生成的手機號追加到array裡。由於生成的手機號較多,我新增了乙個生成進度的判斷。

if data not in array:

# 列印生成進度

if i == 124999:

print('字首:' + str(yds) + ' 已生成 25%')

elif i == 249999:

print('字首:' + str(yds) + ' 已生成 50%')

elif i == 375999:

print('字首:' + str(yds) + ' 已生成 75%')

elif i == 499999:

print('字首:' + str(yds) + ' 已生成 100%')

print('-----------------------------------------')

return array

6、再建乙個call_true的函式,迴圈獲取init裡定義的值,執行上面的mobile函式生成手機號,例項化phone,phone用於判斷手機號的詳細資訊,如果phone解析失敗會返回空

定義乙個空的陣列,把能夠解析的手機號儲存起來

def call_true(self):

for i in self.yd:

data = self.mobile(i)

# print(data)

p = phone()

true =

7、迴圈獲取mobile函式返回的手機號資訊,並判斷是否可以查詢成功。查詢失敗表示手機號沒有註冊。查詢成功的手機號存放到true陣列裡。

for d in data:

city = p.find(d)

# print(city)

if city != none:

8、開啟乙個txt檔案,把true陣列裡的手機號寫入txt檔案裡

tr = open(r"c:\移動" + str(i) + ".txt", 'w')

for t in true:

tr.write(str(t) + '\n')

tr.close()

print('字首:' + str(i) + ' 已驗證並寫入txt檔案')

9、完整**如下

# coding:utf-8

import random

from phone import phone

class cellphonenumber:

def __init__(self):

# 定義移動手機號字首

self.yd = ['134', '135', '136', '137', '138', '139', '147', '150', '151', '152',

'157', '158', '159', '165', '178', '182', '183', '187', '188']

def mobile(self, yds):

array = # 定義空的陣列,用於儲存生成的手機號

print('正在生成字首是 ' + yds + ' 的手機號')

for i in range(500000): # 迴圈50萬次,獲取手機號前三位以後的值

# a-h是隨機生成的手機號後8位變數

a = random.randint(0, 9)

b = random.randint(0, 9)

c = random.randint(0, 9)

d = random.randint(0, 9)

e = random.randint(0, 9)

f = random.randint(0, 9)

g = random.randint(0, 9)

h = random.randint(0, 9)

# 合併所有的隨機數

data = str(yds) + str(a) + str(b) + str(c) + str(d) + str(e) + str(f) + str(g) + str(h)

if data not in array: # array裡沒有已存在的隨機手機號,則新增到array陣列裡

# 列印生成進度

if i == 124999:

print('字首:' + str(yds) + ' 已生成 25%')

elif i == 249999:

print('字首:' + str(yds) + ' 已生成 50%')

elif i == 375999:

print('字首:' + str(yds) + ' 已生成 75%')

elif i == 499999:

print('字首:' + str(yds) + ' 已生成 100%')

print('-----------------------------------------')

return array

def call_true(self):

for i in self.yd: # 迴圈獲取移動手機號字首

data = self.mobile(i) # 生成移動手機號

# print(data)

p = phone() # phone例項化

true = # 定義空的陣列,用於儲存已驗證的移動手機號

for d in data: # 迴圈獲取生成的移動手機號

city = p.find(d) # 獲取手機號的資訊

# print(city)

if city != none: # 當前手機號資訊可以查到,則新增到true陣列裡

# 開啟乙個txt檔案,把所有移動手機號儲存到txt文字裡,然後關閉檔案

tr = open(r"c:\移動" + str(i) + ".txt", 'w')

for t in true:

tr.write(str(t) + '\n')

tr.close()

print('字首:' + str(i) + ' 已驗證並寫入txt檔案')

cell = cellphonenumber()

cell.call_true()

python 手機號驗證

import re 驗證手機號是否正確 phone pat re.compile 13 d 14 5 7 15 d 166 17 3 6 7 18 d d while true input 和 raw input 這兩個函式均能接收 字串 但 raw input 直接讀取控制台的輸入 任何型別的輸入...

java 驗證手機號

電信 中國電信手機號碼開頭數字 133 153 180 181 189 177 173 149 聯通 中國聯通手機號碼開頭數字 130 131 132 155 156 145 185 186 176 175 移動 中國移動手機號碼開頭數字 1340 1348 135 136 137 138 139 ...

簡訊驗證手機號

原理 使用者點選獲取驗證碼時,傳送手機號到後端介面,後端接受請求後,將手機號以及驗證碼發給簡訊閘道器,並將手機號和簡訊驗證碼儲存起來。使用者收到簡訊後,輸入驗證碼,然後前端將驗證碼和手機號傳給後端,後端校驗手機號和驗證碼是否與之前儲存的一致,如果一致,則驗證通過,向前端傳送認證狀態,認證通過的狀態下...