为什么此脚本最多只能打印32个字符?

时间:2014-09-28 18:43:37

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

2 个答案:

答案 0 :(得分:1)

如果您想要随机密码生成器,请编写其中一个。不要使用UUID,不仅因为长度复杂(它将以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

请注意,possible_lettters此处由大写和小写字母组成,并设置区分大小写的密码。但是,您当然可以将string.ascii_letters替换为string.ascii_uppercase,以获取仅包含大写字符的密码。

答案 1 :(得分:0)

随机密码生成器,它将使用用户定义的字符数生成密码:

    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