# 需求:
# 1、写个一函数,这个函数的功能是,传入一个数字,产生N条手机号,产生的手机号不能重复。
# [150,189,188,170,132,150,186]
# def phone(500):
# phone.txt
# 1861232323
# 23423423
做题思路
1.传一个数,需要调用函数时入参def phone(number):
2.生成n条手机号,需要用输入的参数做判断,i = 0 while i < number:以此来做判断需要循环生成多少个手机号
3.因手机号开头是固定的,需要导入random模块,使用random.choice()方法,从指定的list内随机取
4.手机号共11位,前三位从list中取,后8位生成随机数random.randint(10000000, 99999999)
5.因要判断生成的手机号是否重复,所以将所有生成的手机号都放在list中,以此方便判断手机号是不是在list内存在(not in或in)
6.如果生成手机号又重复的可能性,所以用while判断的方法用来循环生成手机号,不重复则将变量值+1,重复则将变量值还取原来的数值,重新再执行一遍
7.将手机号写入文件时要放在while循环外面,否则写入的将是重复的
# def phone(number):
# num_l=['150','189','188','170','132','186']
# phones=[]
# i = 0
# while i < number: #while len(phones)!=number 如果产生重复的,用需要的电话个数和生成的个数做对比
# t = i
# import random
# h = random.randint(0, 99999999) #需要取8位,取到少于位数的需要补0
# p = random.choice(num_l) #字符串可以直接用加好连接
# phone = '%s%08d' % (p, h) #phone = '%s%08d' % (p, h) 意思为长度为8的整数;如果产生的随机数不够8位,就补0,补齐8位
# if phone not in phones: #可以用集合,自动过滤重复的数据,同时产生条数可以和需要条数做对比,如果不等就继续循环取值
# phones.append('%s%s\n' % (p, h))
# i += 1
# else:
# i = t
# with open('phone.txt', 'a+', encoding='utf-8') as fr:
# fr.writelines(phones)
# fr.seek(0)
# content = fr.read()
# return content
#
# phones=phone(2)
# print(phones)
#另外一种判断重复的办法
# phones=() #集合有自动去除重复的特性
# while len(phones)!=number #当集合的长度不等于输入的生成号码数,就继续循环