在python中生成随机字符串的问题

2024-07-07 07:10:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python还不太熟悉,我正在尝试创建一个随机用户名和密码生成器,但是我没有遇到设置随机用户名的问题

我试着生成一个随机的10个字符的字符串,但是结果太长了,而且重复性很强。这是我试过的密码

class CreateAcc:
    def passwordGenerator(self):
        import random, string
        password = ''.join(random.choice(string.ascii_letters + string.digits) for i in range(8))
        return password
    def usernameGenerator(self):
        import random, string
        nameExtra = ''.join(str(random.randint(0, 9) for i in range(2)))
        username = ''.join(random.choice(string.ascii_letters) for i in range(10))
        username = username.join(nameExtra)
        return username
    def main():
        print("Username: %s. Password: %s" %(self.usernameGenerator(), self.passwordGenerator()))
ca = CreateAcc()
ca.main()                

密码工作得很好,但我得到了一个巨大的用户名,当我只需要10个字符。看起来是这样的:

用户名:xMxzISsYSg.xMxzISsYSgxMxzISsYSgxMxzISsYSgaxMxzISsYSgtxMxzISsYSg xmxzissysg0xmxzissysg0xmxzissysg0xmxzissysg0xmxzissysg0xmxzissysg0xmxzissysg0xmxzissysg2xmxzissysg0xmxzissysgbxmxzissysg0xmxzissysg9xmxzissysgaxmxzissysg5xmxzissysgdxmxzissysg8xmxzissysg4xmxzissysg8xmxzissysg>;。密码:mvomUHH6


Tags: inimportself密码forstringdefusername
1条回答
网友
1楼 · 发布于 2024-07-07 07:10:56

username.join(nameExtra)表示“取nameExtra中的每个字符,并将username的完整值放在它们之间”。这就是为什么它出现了好几次。要解决此问题,请执行username + nameExtra而不是username.join(nameExtra)。你知道吗

另外,您没有正确构建字符串,因此它使用<generator object CreateAcc.usernameGenerator.<locals>.<genexpr> at 0x0000020B09A5DE48>作为字符串,而不是您希望它使用的文本。要解决此问题,请执行''.join(str(random.randint(0, 9)) for i in range(2))而不是''.join(str(random.randint(0, 9) for i in range(2)))。注意右括号中的细微差别。你知道吗

相关问题 更多 >