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

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

好的,我找到了一个随机密码生成器,它的工作原理令人惊讶,但有两件事我想知道。 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()

如果您想要一个随机密码生成器,请编写其中一个。不要使用,这不仅是因为长度的复杂性(它将是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))
?这在很多级别上都是糟糕的代码。。。