关于python:如何生成长度可变的随机字符串

How to generate random strings that have variable length

本问题已经有最佳答案,请猛点这里访问。

我想知道如何用Python打印随机字符串。我希望这是一个像"ayhbygb"这样的随机字符串,并且是随机长度的字母。比如,有一次它可以打印"A",下一次它可以打印"AiubFiub"或"Aiuhiu"等。

有人能告诉我怎么做吗?


但是,您可以这样做,您必须指定字符串的最大长度。您也可以为max_length生成一个随机数。

1
2
3
4
5
6
7
import random, string

def random_string(length):
   return ''.join(random.choice(string.lowercase) for i in range(length))

max_length = 5
print(random_string(rando??m.randint(1, max_length)))

以下是5个测试用例:

1
2
3
4
5
print(random_string(random.randint(1, max_length)))
print(random_string(random.randint(1, max_length)))
print(random_string(random.randint(1, max_length)))
print(random_string(random.randint(1, max_length)))
print(random_string(random.randint(1, max_length)))

它们的输出是:

1
2
3
4
5
wl
crhxl
uvl
ty
iuydl

当然,您可以通过将max_length变量更改为您想要的任何值来更改字符串的最大长度。


可能不是最优雅的,但这应该能做到。如果只需要小写,可以用string.ascii_小写字母替换"string.ascii_letters"。

1
2
3
4
5
6
7
8
9
10
11
12
import random
import string

MIN_NUM_CHAR = 5
MAX_NUM_CHAR = 25
num_char = random.randint(MIN_NUM_CHAR, MAX_NUM_CHAR)

rand_string =""
for i in range(num_char):
    rand_string += random.choice(string.ascii_letters)

print(rand_string)


可变字符串,可变长度:

1
2
3
4
5
6
7
8
9
10
11
12
>>>import random, string    
>>>max_rand_str_length = 10
>>> def genCustomString():
...    return ''.join(random.choice(string.lowercase) for _ in range(random.choice(range(1, max_rand_str_length))))
...
>>> genCustomString()
'v'
>>> genCustomString()
'mkmylzc'
>>> genCustomString()
'azp'
>>> genCustomString()