如何生成1亿个手机号码?Python来教你。真实的面试题哦。

案例解析 最近在网上看到一个python的面试题目: 如何用Python生成1亿个手机号码? 我第一眼看到的时候心想,这个还不简单?直接 random.ra

案例解析

最近在网上看到一个python的面试题目: 如何用Python生成1亿个手机号码?

我第一眼看到的时候心想,这个还不简单?直接 random.randint(1,999999999999) 就完事了。

但是马上就发现了这其中的错误:这个是生成1-99999999之间的随机数,可能是1,也可能是666.

但电话号码是11位的,而且前3位只有指定的号段,比如135、136。直接 random.randint(1,999999999999) 这么做并不符合条件。

那么如何生成呢?于是有了下面这段代码:

import random
def create_phone_num(num):all_phone_nums = set()  # 存放生成的电话号码while True:  # 因为set会自动去重,因此死循环生成电话号码,直到等于num个号码停止start = random.choice(['135', '136', '137'])  # 存放前3位的号段,从中随机取一个end = ''.join(random.sample(string.digits, 8))  # 随机生成后面8位数字all_phone_nums.add(f'{start}{end}')  # 拼接前3位和后8位if len(all_phone_nums) >= num:  # 如果号码个数等于num,则停止breakphone_num(10000 * 10000)

经过这次写代码我才发现,原来Python的random里