我正在尝试对密码生成器进行编码,但是它不起作用,并且我无法理解错误。
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
。这意味着您的全局名称空间现在包含random
。它确实[[not包含randrange()
,因此如果想要它找到该方法,则需要明确地使用random.randrange()
。
可以
通过以下方式将randrange
自身引入全局名称空间:from random import randrange
但是:
randrange()
,而不是random
中的其他任何东西;*
,但请参见前面的要点),这将很乏味。