0

我创建了一个函数以

def letter_def(letter):
letter_ = randint(1, 26)
if letter_ == 1:
    letter = "a"
elif letter_ == 2:
    letter = "b"

并以

elif letter_ == 25:
    letter = "y"
elif letter_ == 26:
    letter = "z"
return letter

然后我试图通过调用这个函数

password = {symbol_def(symbol_1), symbol_def(symbol_2), number_def(number_1), number_def(number_2),
                letter_def(Capital_1.upper()), letter_def(Capital_2.upper()), letter_def(letter_1),
                letter_def(letter_2), letter_def(letter_3), letter_def(letter_4)}
    password = list(password)
    print("\nyour password is: " + str(password[0]) + str(password[1]) + str(password[2]) + str(password[3]) +
          str(password[4]) + str(password[5]) + str(password[6]) + str(password[7]) + str(password[8]) +
          str(password[9]) + "\n")

并专注于这条线

letter_def(Capital_1.upper()), letter_def(Capital_2.upper())

但生成的密码中没有任何大写字母

your password is: 9fk)b4}qoa

所以我应该为大写创建另一个函数还是有解决这个问题的方法

4

2 回答 2

0

我不完全确定您为什么要尝试以这种方式生成随机密码。但是我相信要解决您的问题,您可能需要调用 letter_def(Capital_1).upper()
这将使您随机选择一个字母后字母大写。

如果您只想生成一个随机密码,则可以使用以下方法:

import string
import random

def gen_password(stringLength=10):
    lettersAndDigits = string.ascii_letters + string.digits
    password = ''.join(random.choice(lettersAndDigits) for i in range(stringLength))
    return ''.join(random.choice(lettersAndDigits) for i in range(stringLength))
于 2021-09-23T11:51:55.170 回答
0

如果你想在某个地方生成一个包含两个且只有两个随机大写字母的随机密码,你可以这样做:

import random
import string


def generate_password(length=10):
    two_random_uppercase = random.choices(string.ascii_uppercase, k=2)
    other_random_characters = random.choices(
        string.ascii_lowercase + string.digits + string.punctuation,
        k=length - 2,
    )

    password = "".join(
        random.sample(two_random_uppercase + other_random_characters, k=length)
    )

    return password


print(generate_password())

首先你取两个随机的大写字母,然后你取一些由小写、数字和特殊字符组成的随机字符。

然后你把它们加在一起,得到一个随机打乱的样本,把随机的字符序列连接在一起,你的密码就准备好了。

于 2021-09-23T11:50:34.713 回答