我对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
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)))
。注意右括号中的细微差别。你知道吗相关问题 更多 >
编程相关推荐