【发布时间】:2021-04-06 01:54:22
【问题描述】:
我编写了一个 Python 程序来生成密码。有一个小故障,因为它没有正确洗牌。请建议一些方法来做到这一点。还建议更好的方法。
import random
import array
digits = ['0','1','2','3','4','5','6','7','8','9']
lowercase = ['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']
uppercase = ['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 = ['!','@','#','$','%','*','&']
mixture = digits + lowercase + uppercase + Symbols
random_digit = random.choice(digits)
random_lowercase = random.choice(lowercase)
random_uppercase = random.choice(uppercase)
random_symbol = random.choice(Symbols)
Password = random_digit + random_lowercase + random_uppercase + random_symbol
length = random.randint(8,12)
for x in range (length) :
Password = Password + random.choice(mixture)
print(Password)
【问题讨论】:
-
这里有什么问题?你期望什么,你会得到什么?
-
我运行了你的代码并生成了
5uH%idWn!$aDQAT。你能解释一下这个字符串是如何不洗牌的吗? -
好吧,您可以执行以下操作:在 1 和 4 之间随机化,然后选择数字、大小写和符号中的任何一个并附加到您的密码中。但这是一种非常糟糕的密码方式。
-
前 4 个字符 ..
-
@Jarvis 我认为问题可能在于它始终是数字大小写特殊模式。
标签: python arrays string random