在python中制作随机字符串的问题

时间:2019-10-27 17:48:38

标签: 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()                

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

用户名:xMxzISsYSg.xMxzISsYSgxMxzISsYSg xMxzISsYSgaxMxzISsYSgtxMxzISsYSg xMxzISsYSg0xMxzISsYSgxxMxzISsYSg0xMxzISsYSg0xMxzISsYSg0xMxzISsYSg0xMxzISsYSg0xMxzISsYSg2xMxzISsYSg0xMxzISsYSgBxMxzISsYSg0xMxzISsYSg9xMxzISsYSgAxMxzISsYSg5xMxzISsYSgDxMxzISsYSgExMxzISsYSg4xMxzISsYSg8xMxzISsYSg>。密码:mvomUHH6

1 个答案:

答案 0 :(得分:0)

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)))。请注意右括号之间的细微差别。