生成一个随机字符串,只允许某些字符在python

时间:2015-07-03 16:42:11

标签: python string python-2.7 random random-sample

好的,我正在尝试生成包含特定字符的10个字符的字符串。 条件是,字母不能重复(但数字CAN),字符串只能包含两个字母,不多也不少。最终的字符串输出必须是8个数字和2个字母。

numbers = ["1", "2", "3"]
letters = ["X", "Y", "Z"]

即。字符串输出应类似于

123X21Y213

问题是,我不知道如何做到这一点,优雅。 我确实创建了一个解决方案,但它的行数太多了,它不断检查字符串的前一个字符。 我真的很擅长这个,需要更简单的东西。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:5)

numbers = ["1", "2", "3"]
letters = ["X", "Y", "Z"]

from random import sample, shuffle


samp = sample(letters,2)+sample(numbers*3,8)
shuffle(samp)

print("".join(samp))
113332X2Z2

或使用选择和范围:

from random import sample, shuffle,choice

samp = sample(letters,2)+[choice(numbers) for _ in range(8)]
shuffle(samp)

print("".join(samp))
1212ZX1131