未定义名称'randrange'错误,密码生成器

问题描述 投票:0回答:1

我正在尝试对密码生成器进行编码,但是它不起作用,并且我无法理解错误。

import random
import string

lw = list(string.ascii_lowercase)
uw = list(string.ascii_uppercase)
ns = list(string.digits)
password = ""

def addLW():
    f = randrange(1, len(lw))
    password = password + lw[f]

def addUW():
    f = randrange(1, len(lw))
    password = password + uw[f]

def addN():
    f = randrange(1, len(lw))
    password = password + ns[f]

funcs = [addLW, addUW, addN]

maxx = input("Password generator.\nMax: ")

if maxx.isdigit():
    maxx = int(maxx)
    for i in range(maxx):
        func = random.choice(funcs)
        func()
    print(f"Password: {password}")
else:
    print("Error")

完整错误:

Traceback (most recent call last):
  File "Password Generator.py", line 29, in <module>
    func()
  File "Password Generator.py", line 14, in addUW
    f = randrange(1, len(lw))
NameError: name 'randrange' is not defined

我不明白,因为我已经导入了'随机'...

random import passwords generator
1个回答
0
投票

是,您已导入random。这意味着您的全局名称空间现在包含random。它确实[[not包含randrange(),因此如果想要它找到该方法,则需要明确地使用random.randrange()

可以

通过以下方式将randrange自身引入全局名称空间:from random import randrange
但是:

    [给您randrange(),而不是random中的其他任何东西;
  • 如果您需要其他东西,它将迅速用名称污染全局名称空间;和
  • 如果您要导入大量内容(除非您导入*,但请参见前面的要点),这将很乏味。
© www.soinside.com 2019 - 2024. All rights reserved.