首页 > 解决方案 > 我正在尝试通过上部函数在python的密码生成器中生成两个大写字母,但它不起作用

问题描述

我创建了一个函数以

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

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

标签: pythonfunctionuppercasepassword-generator

解决方案


我不完全确定您为什么要尝试以这种方式生成随机密码。但是我相信要解决您的问题,您可能需要调用 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))

推荐阅读