【发布时间】:2022-08-17 02:33:21
【问题描述】:
所以我需要生成一个10位密码(需要使用random模块),每次都必须包含2个小写字母、2个大写字母、3个特殊符号和3个数字,所有这些都以随机顺序排列。我已经完成了随机密码生成器部分,但我不确定如何将其限制为 2 个小写字母、2 个大写字母、3 个特殊符号和 3 个数字。
这是我到目前为止所拥有的:
import random
import string
lc_letter = [\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\"w\",\"x\",\"y\",\"z\"]
uc_letter = [\"A\",\"B\",\"C\",\"D\",\"E\",\"F\",\"G\",\"H\",\"I\",\"J\",\"K\",\"L\",\"M\",\"N\",\"O\",\"P\",\"Q\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\"]
symbols = [\"!\",\"@\",\"#\",\"$\",\"%\",\"^\",\"&\",\"*\",\"(\",\")\",\"_\",\"+\",\"=\",\"-\",\"/\",\">\",\"<\",\",\",\".\",\"?\",\"\\\\\"]
numbers = [\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\"]
options = [lc_letter,uc_letter,symbols,numbers]
for i in range(10):
choice = random.choice(options)
digit = random.choice(choice)
print(digit, end = \'\')
-
好吧,您的要求加起来就是您需要的符号总数。那么为什么不从每个类别中选择所需的数量,然后将它们混在一起呢?