имя 'randrange' не определено ОШИБКА, генератор паролей - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь закодировать генератор паролей, но он не работает, и я не могу понять ошибку.

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' ...

1 Ответ

0 голосов
/ 18 апреля 2020

Да, вы импортировали random. Это означает, что ваше глобальное пространство имен теперь содержит random. не содержит randrange(), поэтому вам нужно явно использовать random.randrange(), если вы хотите, чтобы он нашел этот метод.

Вы можете введите randrange себя в глобальное пространство имен с помощью:

from random import randrange

, но:

  • , что only дает вам randrange(), а не любое другое вещи из random;
  • , которые быстро загрязнят ваше глобальное пространство имен именами, если вам понадобятся другие вещи; и
  • будет утомительно, если вы захотите импортировать большое количество вещей (если вы не импортируете *, но посмотрите предыдущий пункт).
...