gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 21:41:41 26 4
gpt4 key购买 nike

我正在尝试编写密码生成器的代码,但它无法正常工作,而且我无法理解该错误。

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

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

最佳答案

import random

您已经导入了random。这意味着您的全局命名空间现在包含到 random 命名空间的绑定(bind)。它包含randrange() 或该命名空间内的任何其他内容,因此您需要明确使用random.randrange() 如果你想让它找到那个方法。

可以randrange 本身带入全局命名空间:

from random import randrange

但这有几个问题:

  • 只有给你randrange(),而不是来自random的任何其他东西;
  • 如果您需要其他东西,它会很快用名称污染您的全局命名空间;和
  • 如果你想导入大量的东西会变得乏味(除非你导入*,但请参阅前面关于污染全局命名空间的要点)。

关于random - 名称 'randrange' 未定义错误,密码生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61284158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com