【问题标题】:PYTHON PRINT RANDOM PHONE NUMBERSPython 打印随机电话号码
【发布时间】:2022-06-18 02:35:22
【问题描述】:

伙计们!

我正在尝试打印一个巨大的列表,其中应该是电话号码。考虑到现场的电话号码如下(24)999999999。我不需要括号,我只需要随机打印。
前两位数字必须介于 1124 之间 以下两个,即第三和第四位必须在6799之间

现在最好看看我到目前为止所做的事情

ddd = list(range(11, 24))                                                                                                                                                                     
op = list(range(67, 99))                                                                                                                                                                      
list1 = list(range(100, 999))                                                                                                                                                                 
list2 = list(range(1234, 9999))                                                                                                                                                               
for d in ddd:                                                                                                                                                                                 
    ddd = d                                                                                                                                                                                   
    #print(ddd)                                                                                                                                                                               
    for fixos in op:                           
        pre = fixos                            
        #print(pre)                            
        for l in list1:                       
            part1 = l                                                                         
            #print(part1)                                                                     
            for x in list2:   
                part2 = x                                                                    
                #print(part2)                                                                 
                #print(f"({ddd}) {pre}{l}-{l2}")                                              
                numbers = str(ddd) + str(pre) + str(l) + str(x)                              
                #print(numbers)                                                               
                requests.urllib3.disable_warnings()

list1list2 将组成其余的数字。正如我所说,我想尽可能随机地进行。

但是当我运行脚本时,它会像这样打印

numbers : 11671001000                                                                                                                                                      
numbers : 11671001001

它是一个接一个。 T_T 遗憾的是,这不是我打算做的。

有人能帮我解决这个问题吗?

【问题讨论】:

  • 那么在第三个和第四个数字之前,对第五个,第六个,第七个等数字没有限制吗?

标签: python-3.x loops range


【解决方案1】:

您可以尝试使用此代码生成 100,000 个数字,也可以将范围 100,000 编辑为您的目标数字

import random
ddd = list(range(11, 25))
op = list(range(67, 100))
for i in ddd:
    for j in op:
        beg=(str(i)+str(j))
        for p in range(100000):
            random_number=random.randint(1000000, 10000000)
            print(beg+str(random_number))

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

我想提出一个不同的解决方案:

from random import shuffle
from itertools import cycle
from pprint import pprint
country_code = list(range(11, 24))
operator_code = list(range(67, 99))
exchange_code = list(range(100, 999))
terminal_code = list(range(1234, 9999))


target_len = 100000
ls = set()
while len(ls) < target_len:
    shuffle(country_code)
    shuffle(operator_code)
    shuffle(exchange_code)
    shuffle(terminal_code)
    numbers = zip(cycle(country_code), cycle(operator_code), cycle(exchange_code), terminal_code)
    for c, o, e, t in numbers:
        ls.add(f"{c} {o}{e}-{t}")


pprint(ls)
print(len(ls))
# To randomize final output
ls = [i for i in ls]
shuffle(ls)

这里的输出是有序的,因为集合是有序的,但它使用 shuffle 和循环对随机化进行了一些改进,并确保您不会使用 set 的约束重复数字。大多数情况下,我提供它是一种以不同方式思考随机化的方式——虽然选择带替换的随机数 (randint) 是一条路线,shuffle()choice() 都是确保随机性的好方法,你可以做一些事情与 zip()cycle() 一起创建您选择的随机流。

解决这个问题的真正方法是创建一个生成器函数 - 我必须更加努力地思考如何去做,但这也是一个可能的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    • 2016-10-22
    • 1970-01-01
    • 2019-11-03
    • 2013-08-23
    相关资源
    最近更新 更多