生活随笔
收集整理的這篇文章主要介紹了
Python随机生成n个满足如下要求的手机号码
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
python練習(xí)題:隨機(jī)生成n個(gè)滿足如下要求的手機(jī)號(hào)碼:
手機(jī)號(hào)碼必須是13、15、17、18開(kāi)頭手機(jī)號(hào)碼相同數(shù)字出現(xiàn)的次數(shù)不能大于5次任意兩個(gè)手機(jī)號(hào)不能重復(fù)生成的手機(jī)號(hào)碼需保存在列表tels中,并且按照升序進(jìn)行排列
import random
n = int(input("請(qǐng)輸入n值:")) #n就是要生成的手機(jī)號(hào)個(gè)數(shù)
tels = []
begin = [3,5,7,8]
i = 1 #計(jì)數(shù)while i <= n:last9 = [random.choice(range(10)) for _ in range(9)] #剩下的九個(gè)數(shù)字tel = [1] + [random.choice(begin)] + last9 #按順序生成11個(gè)數(shù)字,儲(chǔ)存在tel列表里if tel not in tels: #將不重復(fù)的tel存進(jìn)tels列表中tels.append(tel) i += 1for m in tel:if tel.count(m) > 5: #判斷有無(wú)重復(fù)出現(xiàn)5次以上的數(shù)字 tels.remove(tel) #若有,從tels列表里刪除該teli -= 1 #刪除后計(jì)數(shù)減一,繼續(xù)返回循環(huán)A = '' #定義一個(gè)空串方便將列表形式的11個(gè)獨(dú)立數(shù)字合并為一個(gè)字符串
for x in range(0, len(tels)):for s in tels[x]:a = str(s)A = A + atels[x] = A #按順序存進(jìn)題目要求的tels列表A = '' #前一個(gè)合并完之后,A清零進(jìn)行下一個(gè)字符串的處理tels.sort() #升序排序
print(tels)
import randomn = int(input("請(qǐng)輸入n:"))
starts = [13, 15, 17, 18] # 前兩位
tels = [] # 保存生成的手機(jī)號(hào)碼
# 遍歷
while True:tel = "" # 保存每一次生成的手機(jī)號(hào)tel += str(starts[random.randint(0, 3)]) # 隨機(jī)選擇前兩位tmp = [] # 隨機(jī)選擇數(shù)字序列for i in range(10):if str(i) in tel:tmp = tmp + [i] * 3else:tmp = tmp + [i] * 4random.shuffle(tmp) #打亂順序for _ in range(9): # 隨機(jī)從選擇序列中i = random.randint(0, len(tmp) - 1)tel += str(tmp[i])del tmp[i]if tel not in tels: # 去除重復(fù)tels.append(tel)if len(tels) > n:# 生成n個(gè)數(shù)后跳出循環(huán)breakprint(tels)
?以上是學(xué)校python入門(mén)課的一道小題,附自己琢磨出的解決辦法(第一個(gè))和老師給的代碼(第二個(gè))。自己的方法更多側(cè)重每一個(gè)數(shù)字生成和處理的過(guò)程,老師的更偏向于建立一個(gè)大的數(shù)集,然后從中取數(shù)組成電話號(hào),私以為各有所長(zhǎng)所短。但是黑貓白貓,抓到耗子就算好貓!
如有需要供參考,立個(gè)小博客記錄hhhhh
歡迎批評(píng)指正!!
總結(jié)
以上是生活随笔為你收集整理的Python随机生成n个满足如下要求的手机号码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。