【问题标题】:Why does this script only print up to 32 characters?为什么这个脚本最多只能打印 32 个字符?
【发布时间】:2014-11-23 03:52:08
【问题描述】:

好的,所以我找到了一个随机密码生成器,它的效果非常好,但是我想知道两件事。 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()

【问题讨论】:

  • 这只是很多层面上的糟糕代码......

标签: python random passwords generator


【解决方案1】:

一个随机密码生成器,它将生成具有用户定义的字符数的密码:

    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

【讨论】:

    【解决方案2】:

    如果您想要一个随机密码生成器,请编写其中一个。不要使用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 以获得仅包含大写字符的密码。

    【讨论】:

    • 为完整起见,应在末尾添加.upper()
    • @BurhanKhalid 如果我想要大写密码,我会选择string.ascii_uppercase 而不是ascii_letters。我故意选择所有字母,以表明您可以实现区分大小写的密码。
    • OP 专门使用.upper() - 因此您应该将您的评论添加到您的答案中,因为它可以更好地解释它。
    • (对不起,我是菜鸟,我对python有点陌生)我在打印的地方放了什么?
    • @Meduza 你的意思是print(passgen(100))?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多