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