因为你需要每一个字符串都有一个字母和一个数字,所以我们需要比平常做更多的工作。我们可以继续生成随机单词,只接受满足我们约束的单词,也可以通过构造来构建满足约束的字符集合。在from random import choice, shuffle
from string import digits, ascii_lowercase
def gen_word(N, min_N_digits, min_N_lower):
choose_from = [digits]*min_N_dig + [ascii_lowercase]*min_N_low
choose_from.extend([digits + ascii_lowercase] * (N-min_N_low-min_N_dig))
chars = [choice(bet) for bet in choose_from]
shuffle(chars)
return ''.join(chars)
def gen_word_rejection(N, min_N_digits, min_N_lower):
bet = digits + ascii_lowercase
while True:
word = ''.join([choice(bet) for i in range(N)])
if (sum(c.isdigit() for c in word) >= min_N_digits and
sum(c.islower() for c in word) >= min_N_lower):
return word
这给了我
^{pr2}$
所有这些至少有一个数字和至少一个小写字母。在