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