# 需求:
# 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 #當集合的長度不等於輸入的生成號碼數,就繼續循環