python-随机生成N条手机号

 需求:
随机取手机号
1、写个一函数,这个函数的功能是,传入一个数字,随机生成N条手机号且这N条手机号不能重复
2、手机号前三位可以选择150, 189, 188, 170, 132, 150, 186
3、生成的手机号写入文件里
思路:
存入N条不重复的手机号:(两种方法)
1)定义一个空的list准备存手机号,每次存入之前都判断一下是否和list里面的手机号重复,用while循环,直到list中存够了N条手机号则停止循环
2)定义一个空的集合,集合本身就是不重复元素序列,所以往集合里添加元素时自动去重,用while循环,直到集合中存够了N条手机号则停止循环

注:while循环是当while后面的条件(表达式)为真,才执行while循环体内的while suite,直到条件为假时,退出循环。

 1 import random
 2 
 3 #方法一:把随机生成的N条手机号存入列表里
 4 def phone(n):
 5     phone_list=[] #定义一个空的列表,存手机号
 6     while len(phone_list)!=n:
 7         phone_head=random.choice([150, 189, 188, 170, 132, 150, 186]) #随机选择一个元素作为手机号的前三位
 8         #phone_end=random.randint(10000000,999999999)#指定一个范围,随机取整数作为手机号的后八位
 9         phone_end=random.randint(0,999999999)
10         phone='%s%08d
'%(phone_head,phone_end) #08d取八位数字
11         if phone not in phone_list:
12             phone_list.append(phone) #在list末尾增加一个元素
13     with open('user.txt','w') as fw:
14         fw.writelines(phone_list)
15 
16 #方法二:把随机生成的N条手机号存入集合里
17 def phone2(n):
18     phone_gather=set()
19     while len(phone_gather)!=n:
20         phone_head = random.choice([150, 189, 188, 170, 132, 150, 186])  # 随机选择一个元素作为手机号的前三位
21         phone_end = random.randint(0, 999999999) #指定一个范围,随机取整数作为手机号的后八位
22         phone = '%s%08d
' % (phone_head, phone_end)  # 08d取八位数字
23         phone_gather.add(phone)  # 把获取到的手机号添加到集合里面
24     with open('user.txt', 'w') as fw:
25         fw.writelines(phone_gather)






原文地址:https://www.cnblogs.com/you-me/p/10067379.html