密码字符的构成:52个大小写英文字母,10个阿拉伯数字(0~9),以及下划线"_"中的任意字符即如果生成的密码为"dAlsy5gh"、"RihLaaBU",
import random
pass_lib = ['_']
for i in range(10):
pass_lib.append(chr(i+48))
for i in range(26):
pass_lib.append(chr(i+65))
pass_lib.append(chr(i+97))
def gen_pwd(length) -> str:
pwd=random.choice(pass_lib)
while len(pwd)<length:
for i in range(1, length):
new_str = random.choice(pass_lib)
if abs(ord(new_str) - ord(pwd[i-1])) <=1:
print(f'不符合要求的前半段:{pwd},冲突字符是:{pwd[i-1]}与{new_str}。重新生成:')
pwd=random.choice(pass_lib)
break
else:
pwd += new_str
return pwd
for i in range(10):
print(f'{i+1}. {gen_pwd(8)}')
一行代码搞定,如果喜欢请采纳:
>>> pwd = lambda x=10:[''.join(__import__('random').sample((*map(chr,[*range(48,58),*range(65,91),*range(97,123)]),'_'),8)) for _ in range(x)]
>>>
>>> print(*pwd())
NVKfO5Du HxT2qSJF _GzK1kD3 KVw1OWjB Ob8fRswa MFqvpEWK fPDzuj8e ZndGFAs7 VHMp3FtX Hc7o642q
>>> print(*pwd())
c2HEwvkn I9wH1Vjm yOCaqzNR pXMqRuDg nUfTKXuV Co5Ebq7g mBCkDco1 ieUzSTpu y1s8zVct OiK3GFTw
>>> print(*pwd(5))
xTd69oJW Ob6pFsaq 4XW5lw_Y aHJxiZgr Z0VAGhNB
>>> print(*pwd(8))
BP1bpzlv VBvnFQE5 kmFZSLid WyCpqvK_ vOyQlB4c VSY8q67y 8lkGBRbt _I4MfqJk