# 需求: # 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 #当集合的长度不等于输入的生成号码数,就继续循环