Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python,生成随机的括号字符串_Python_String_Random - Fatal编程技术网

Python,生成随机的括号字符串

Python,生成随机的括号字符串,python,string,random,Python,String,Random,我希望生成方括号的随机长度和图案,例如, [][[]][[]] 到目前为止,我已经设法让我的程序随机生成括号,但随机生成括号的次数是多少,所以目前我的程序给我的结果是 【】【】【】【】【】 […] 【】【】【】【】 因此,括号内没有随机性,仅显示括号数的随机性 我想知道如何随机排列括号的顺序以及显示的括号数量 这是我到目前为止的代码 import random import string def randomGen(N): return random.randint(1,N) cha

我希望生成方括号的随机长度和图案,例如, [][[]][[]]

到目前为止,我已经设法让我的程序随机生成括号,但随机生成括号的次数是多少,所以目前我的程序给我的结果是

【】【】【】【】【】

[…]

【】【】【】【】

因此,括号内没有随机性,仅显示括号数的随机性

我想知道如何随机排列括号的顺序以及显示的括号数量

这是我到目前为止的代码

import random
import string

def randomGen(N):
    return random.randint(1,N)

char1 = '['
char2 = ']'
finalist = []
newList = []
newList2 = []

newValue = randomGen(99)

for i in range(newValue):
    newList = char1
    newList2 = char2
    finalist.append(newList + newList2)

for everChar in finalist:
    print everChar,

谢谢。

您可以使用
random.sample
来选择放置位置的索引,例如左括号。然后在其他地方放置右括号:

In [119]: import random

In [122]: N = 10

In [125]: idx = set(random.sample(range(N), N//2))

In [126]: idx
Out[126]: {0, 1, 4, 5, 7}

In [127]: ''.join(['[' if i in idx else ']' for i in range(N)])
Out[127]: '[[]][[][]]'

根据您的示例,我假设您需要相等数量的左括号和右括号。如果不需要,请使用jonrsharpe的解决方案。

您需要从两个字符中随机选择;您可以在一行中完成所有操作:

 finallist = [random.choice('[]') for _ in range(random.randint(1, 99))]
您还可以简化输出:

print " ".join(finallist)
我刚才运行的一个示例:

[ ] ] [ [ [ ] [ ] ] [
您还可以生成字符串而不是列表:

length_to_generate = randomGen(99)
finalist = ""
for i in range(length_to_generate):
    if random.randint(0, 1):
        finalist += "]"
    else:
        finalist += "["

print finalist

好吧,如果你只是想修复你的代码,你可以简单的做

finalist = list("".join(finalist))
random.shuffle(finalist)
for everChar in finalist:
    ...

如果你想要高效更好的方法,请看一下其他答案。

random.choice(“[]”)
会很好,而且对我来说更可读。我更喜欢
“”。加入(random.choice(“[]”)范围内的(random.randint(1,99)))
:)@thefourtheye为一行?因为而不是genexps@GrijeshChauhan哦,是的,我最近才读到。谢谢你提醒我:)我已经通过朋友的帮助让我的工作正常了,但是我也在寻找我的程序来告诉用户结果是平衡的还是不平衡的。我的意思是[][](平衡的)和[]不平衡。你知道我将如何实施这个吗?
finalist = list("".join(finalist))
random.shuffle(finalist)
for everChar in finalist:
    ...