它会返回一个随机电话号码xxx-xxx-xxxx,但有以下限制:
答案 0 :(得分:5)
我试图结合OP,@ kgull,@ Cyber的代码和@ ivan_pozdeev的关注,也符合OP的要求:
>>> def gen_phone():
first = str(random.randint(100,999))
second = str(random.randint(1,888)).zfill(3)
last = (str(random.randint(1,9998)).zfill(4))
while last in ['1111','2222','3333','4444','5555','6666','7777','8888']:
last = (str(random.randint(1,9998)).zfill(4))
return '{}-{}-{}'.format(first,second, last)
>>> for _ in xrange(10):
gen_phone()
'496-251-8419'
'102-665-1932'
'262-624-5025'
'230-459-3242'
'355-131-0243'
'488-001-6828'
'244-539-2369'
'896-547-4539'
'522-406-8256'
'789-373-4240'
答案 1 :(得分:1)
import random
让我们从区号开始。没有前导零,所以只能在1到9之间选择。然后剩下的两个可以是00到99之间的任何值。
def makeFirst():
first_digit = random.randint(1,9)
remaining = random.randint(0,99)
return first_digit*100 + remaining
接下来的中间数字。他们不能有9个样本0到8.然后循环直到你得到一个有效的案例,如果你碰巧抽样000就扔掉了。
def makeSecond():
middle = 0
while middle == 0:
middle1 = random.randint(0,8)
middle2 = random.randint(0,8)
middle3 = random.randint(0,8)
middle = 100*middle1 + 10*middle2 + middle3
return middle
对于最后四个号码,我们会使用random.sample
来确保我们不会重复这些号码。
def makeLast():
return ''.join(map(str, random.sample(range(10),4)))
最后将整个事情加在一起,并将其格式化为电话号码。
def makePhone():
first = makeFirst()
second = makeSecond()
last = makeLast()
return '{3}-{3}-{4}'.format(first,second,last)
一些测试
for i in range(5):
print makePhone()
425-426-8902
473-775-2793
434-624-8356
287-630-4560
861-431-7659
答案 2 :(得分:1)
稍微简单的解决方案。
import random
def phn():
n = '0000000000'
while '9' in n[3:6] or n[3:6]=='000' or n[6]==n[7]==n[8]==n[9]:
n = str(random.randint(10**9, 10**10-1))
return n[:3] + '-' + n[3:6] + '-' + n[6:]
每次都返回第一次的解决方案(没有循环)。
import random
def phn():
p=list('0000000000')
p[0] = str(random.randint(1,9))
for i in [1,2,6,7,8]:
p[i] = str(random.randint(0,9))
for i in [3,4]:
p[i] = str(random.randint(0,8))
if p[3]==p[4]==0:
p[5]=str(random.randint(1,8))
else:
p[5]=str(random.randint(0,8))
n = range(10)
if p[6]==p[7]==p[8]:
n = (i for i in n if i!=p[6])
p[9] = str(random.choice(n))
p = ''.join(p)
return p[:3] + '-' + p[3:6] + '-' + p[6:]