与女友分手后,我将我的密码更改为:
“ MyEx-GirlFriendIsAnInsult”(是的,很幼稚)
我使用了大写,小写,数字和特殊字符,但我不记得现在放的位置。
我想构建一个脚本,以生成“ MyEx-GirlFriendIsAnInsult”的所有可能组合。
例如,“ E”可以是“ E”,“ e”,“ 3”,“ i”可以是“ i”,“ 1”,“!”等等。
在这种情况下,是否存在可以帮助我的python库?
我该如何进行?我完全迷失了方向,不知道从哪里开始(Python初学者,这将是我的第一个研究案例之一。)
谢谢!
答案 0 :(得分:3)
首先建立一个包含所有可能字符替换的列表。为了简明扼要,我简化了您的示例,您当然希望在代码中构建它,而不是将列表指定为文字:
mylist = ["Mm", "yY", "Gg", "I1i" , "rR", "Ll", "Fr", "Ii1", "Ee3", "nN", "dD"]
一旦拥有所有选项,请使用itertools
获取所有这些选项的乘积:
import itertools
for f in itertools.product(*mylist):
print (''.join(f))
这给出了:
MyGIrLFRIEnd
MyGIrLFRIEnD
... 13,820 more ..
mYgiRlfr13Nd
mYgiRlfr13ND
答案 1 :(得分:1)
您可以定义字典,将键定义为大写字符,将值定义为该字符的所有可能组合。
rand_dict = {
"A": ["@", "a", "A"],
"B": ["b", "3", "B"],
"C": ["c", "(", "C"],
"D": ["D", "d", "6"],
"E": ["E", "e"],
"F": ["F", "f"],
"G": ["6", "G", "g", "9"],
"H": ["h", "H"],
"I": ["I", "i", "!"],
"J": ["J", "j"],
"K": ["k", "K"],
"L": ["l", "L", "1"],
"M": ["m", "M"],
"N": ["n", "N"],
"O": ["O", "o", "0"],
"P": ["p", "P"],
"Q": ["Q", "q"],
"R": ["R", "r"],
"S": ["s", "S", "$"],
"T": ["T", "t"],
"U": ["U", "u"],
"V": ["v", "V", "<"],
"W": ["w", "W"],
"X": ["x", "X"],
"Y": ["Y", "y"],
"Z": ["z", "Z"],
}
通过循环字符串来随机播放所有可能的列表
foo = "MyExGirlFriendIsAnInsult"
bar = []
for i in list(foo.upper()):
random.shuffle(rand_dict[i], random.random)
bar.append(rand_dict[i][0])
print("".join(bar))
输出如下:
Myex9Ir1fR!EnD!s@NInsulT
myEXGiRLfRIeNdI$AnIN$uLT
MYEX6Irlfrien6!$aNInsUlt
MYEXG!R1fr!ENdISAn!nSu1t
myExg!rLFrIEn6is@NiN$u1T