沐朝晞 2020-09-18 10:21 采纳率: 100%
浏览 305
已采纳

python中怎样实现每循环一次就重新使用def方法一次

各位高手,我在一个基础知识的练习,写了一段生成随机手机号的代码,现在想继续深化,让它可以按照我设定的次数去生成一定数量的号码添加到我设定的列表中,但是我完全想不到该怎么样实现它。
我现在想要实现每执行一次循环就重新调用def方法一次,生成一个新的号码添加到列表内,求高手指点。

import random

def Suijihaoma():
    a=[133,134,149,153,170,177,180,181,189,130,131,132,145,155,170,175,176,185,186,134,135,136,137,138,139,147,150,151,152,157,158,159,178,182,183,184,187,188]
    d=[0,1,2,3,4,5,6,7,8,9]
    e=[]
    q=[]
    g=random.choice(a)

    for i in range(8):
        e.append(random.choice(d))
    m=(g,e)
    n=str(m).replace(' ','').replace('(','').replace(')','').replace(',','').replace("'",'').replace("'",'').replace("[","").replace("]","")
    return n
haoma=Suijihaoma()

list1=[]
t=0

while t<5:
    list1.append(haoma)
    t=t+1
print(list1)

图片说明

  • 写回答

3条回答 默认 最新

  • jingluan666 2020-09-18 10:33
    关注

    把haoma=Suijihaoma()放在while内部,放在外部只调用一次,放在里面,每次都执行

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • threenewbee 2020-09-18 10:34
    关注

    电话号码是字符串,你非要用数字,你这么写从根本上就是错的。

    评论
  • 天元浪子 Python领域优质创作者 2021-02-10 22:52
    关注

    生成号码的方法有很多,题主的方法也是可行的,只是效率有点低,代码有点凌乱。顺着题主的思路,我整理了一下,仅供参考。

    >>> import random
    >>> def mobile():
    	choices = (133,134,149,153,170) # 此处仅列出部分前缀
    	prefix = str(random.choice(choices))
    	return prefix + ''.join([str(random.randint(0,9)) for i in range(8)])
    
    >>> mobiles = [mobile() for i in range(5)]
    >>> mobiles
    ['15395255987', '15338347860', '13430999913', '17020377203', '15356104067']
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 arcgis制做交通拥堵时变图
  • ¥15 AD20 PCB板步线 这个要怎么步啊
  • ¥50 关于《奇迹世界》1.5版本,数据修改
  • ¥15 请问这个问题如何解决(关键词-File)
  • ¥50 visual studio 2022和EasyX图形化界面
  • ¥15 找一下报错原因,纠正一下
  • ¥50 Cox回归模型Nomogram图制作报错
  • ¥20 SQL如何查询多级用户的数据
  • ¥15 给车牌识别代码加一个识别轮廓长宽比的代码
  • ¥30 商品价格预测的transformer模型优化