# 需求:# 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 = '%sd' % (p, h) #phone = '%sd' % (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 #当集合的长度不等于输入的生成号码数,就继续循环
转载于:https://www.cnblogs.com/hehetian/p/10051883.html