Python 为什么此脚本最多只能打印32个字符?
好的,我找到了一个随机密码生成器,它的工作原理令人惊讶,但有两件事我想知道。 1.为什么它最多只能打印32个字符?我如何才能让它打印更多字符? 2.(可选的,但它与第一个有联系)为什么它总是在中间打印四个数字? 这是代码Python 为什么此脚本最多只能打印32个字符?,python,random,passwords,generator,Python,Random,Passwords,Generator,好的,我找到了一个随机密码生成器,它的工作原理令人惊讶,但有两件事我想知道。 1.为什么它最多只能打印32个字符?我如何才能让它打印更多字符? 2.(可选的,但它与第一个有联系)为什么它总是在中间打印四个数字? 这是代码 import uuid def my_random_string(string_length=100): """Returns a random string of length string_length.""" random = str(uuid.uuid
import uuid
def my_random_string(string_length=100):
"""Returns a random string of length string_length."""
random = str(uuid.uuid4()) # Convert UUID format to a Python string.
random = random.upper() # Make all characters uppercase.
random = random.replace("-","") # Remove the UUID '-'.
return random[0:string_length] # Return the random string.
while True:
print(my_random_string(100)) # For example, D9E50C
my_random_string()
如果您想要一个随机密码生成器,请编写其中一个。不要使用,这不仅是因为长度的复杂性(它将是32个字符的块),而且因为密码将只包含数字和A-F 您可以使用以下内容:
import random
import string
def passgen(n = 12):
possible_lettters = string.ascii_letters + string.digits
return ''.join(random.choice(possible_lettters ) \
for x in range(n))
In [92]: print(passgen(30))
cjBQgGJO5nlEyMlP2fdiZ6ra4IvDzF
请注意,此处的
可能的\u letter
由大小写字母组成,构成区分大小写的密码。但是,对于只包含大写字符的密码,您当然可以将string.ascii_字母
替换为string.ascii_大写
。一个随机密码生成器,它将生成具有用户定义的字符数的密码:
from random import randint
def passwordgen(characters):
chars = '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
password = ''
for i in range(0, characters):
password = password + chars[randint(0, len(chars))]
return password
完整地说,您应该在末尾添加
.upper()
。@BurhanKhalid如果我想要大写密码,我会选择string.ascii\u大写
,而不是ascii\u字母
。我特意选择了所有字母,以表明您可以获得区分大小写的密码。OP特别使用了.upper()
-因此您应该在答案中添加注释,因为它可以更好地解释问题。(很抱歉,作为一个noob,我对python有点陌生)我应该在打印位置放置什么?@Meduza您的意思是打印(passgen(100))
?这在很多级别上都是糟糕的代码。。。