【发布时间】:2016-12-21 23:13:14
【问题描述】:
我想知道如何在 Python 中打印随机字符串。 我希望这是一个像“ayhbygb”这样的随机字符串,并且是随机数量的字母长。比如,一次它可以打印“a”,下一次它可以打印“aiubfiub”或“aiuhiu”等。
谁能告诉我这是怎么做的?
【问题讨论】:
-
这不是它被标记为重复的问题的重复。 Hugh Chalmers 要求可变长度,而回答的问题是固定大小的字符串。
我想知道如何在 Python 中打印随机字符串。 我希望这是一个像“ayhbygb”这样的随机字符串,并且是随机数量的字母长。比如,一次它可以打印“a”,下一次它可以打印“aiubfiub”或“aiuhiu”等。
谁能告诉我这是怎么做的?
【问题讨论】:
您可以这样做,但是,您必须指定字符串的最大长度。您也可以随时为max_length 生成一个随机数。
import random, string
def random_string(length):
return ''.join(random.choice(string.lowercase) for i in range(length))
max_length = 5
print(random_string(random.randint(1, max_length)))
这里有 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)))
他们的输出是:
wl
crhxl
uvl
ty
iuydl
您当然可以通过将max_length 变量更改为您想要的任何值来更改字符串的最大长度。
【讨论】:
random_string(random.randint(1, max_length))调用它
string.ascii_lowercase
可变字符串,可变长度:
>>>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()
【讨论】:
可能不是最优雅的,但这应该可以解决问题。如果你只想要小写,你可以用 string.ascii_lowercase 替换“string.ascii_letters”。
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)
【讨论】: