[英]Problem with making random string in python
I'm semi-new to python, and i'm trying to make a random username and password generator, but nothing that I've been having trouble setting up a random username我是 python 的半新手,我正在尝试制作一个随机用户名和密码生成器,但没有什么我在设置随机用户名时遇到问题
I've tried just generating a random string of ten characters, but it ends up being way too long, and quite repetitive.我试过只生成一个由十个字符组成的随机字符串,但它最终太长了,而且非常重复。 Here's the code I tried
这是我尝试过的代码
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()
The password works just fine, but I get a huge username, when I only want ten characters.密码工作得很好,但是当我只想要十个字符时,我得到了一个巨大的用户名。 It looks like this:
它看起来像这样:
Username: xMxzISsYSg.xMxzISsYSgxMxzISsYSg xMxzISsYSgaxMxzISsYSgtxMxzISsYSg xMxzISsYSg0xMxzISsYSgxxMxzISsYSg0xMxzISsYSg0xMxzISsYSg0xMxzISsYSg0xMxzISsYSg0xMxzISsYSg2xMxzISsYSg0xMxzISsYSgBxMxzISsYSg0xMxzISsYSg9xMxzISsYSgAxMxzISsYSg5xMxzISsYSgDxMxzISsYSgExMxzISsYSg4xMxzISsYSg8xMxzISsYSg>. Username: xMxzISsYSg.xMxzISsYSgxMxzISsYSg xMxzISsYSgaxMxzISsYSgtxMxzISsYSg xMxzISsYSg0xMxzISsYSgxxMxzISsYSg0xMxzISsYSg0xMxzISsYSg0xMxzISsYSg0xMxzISsYSg0xMxzISsYSg2xMxzISsYSg0xMxzISsYSgBxMxzISsYSg0xMxzISsYSg9xMxzISsYSgAxMxzISsYSg5xMxzISsYSgDxMxzISsYSgExMxzISsYSg4xMxzISsYSg8xMxzISsYSg>. Password: mvomUHH6
密码:mvomUHH6
username.join(nameExtra)
means "take each of the characters in nameExtra
, and put the full value of username
between each of them". username.join(nameExtra)
的意思是“取nameExtra
中的每个字符,并将username
的完整值放在每个字符之间”。 This is why it's appearing several times.这就是它多次出现的原因。 To fix this problem, do
username + nameExtra
instead of username.join(nameExtra)
.要解决此问题,请执行
username + nameExtra
而不是username.join(nameExtra)
。
Also, you're not building a string correctly, so it's using <generator object CreateAcc.usernameGenerator.<locals>.<genexpr> at 0x0000020B09A5DE48>
as the string, instead of the text you wanted it to use.此外,您没有正确构建字符串,因此它使用
<generator object CreateAcc.usernameGenerator.<locals>.<genexpr> at 0x0000020B09A5DE48>
作为字符串,而不是您希望它使用的文本。 To fix this problem, do ''.join(str(random.randint(0, 9)) for i in range(2))
instead of ''.join(str(random.randint(0, 9) for i in range(2)))
.要解决此问题,请执行
''.join(str(random.randint(0, 9)) for i in range(2))
而不是''.join(str(random.randint(0, 9) for i in range(2)))
。 Note the subtle difference in the closing parentheses.请注意右括号中的细微差别。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.