随机生成10条“8个字符长度”的密码,并将它们显示出来。

密码字符的构成: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