Python 3.x 我的循环不是';它不能正常工作

Python 3.x 我的循环不是';它不能正常工作,python-3.x,Python 3.x,我已经做了一个程序,它应该要求你输入一个密码,并检查它是否符合某些要求,如果它不符合这些要求,它将要求你输入另一个密码。我试着通过一个范围设置为3的循环来重新提问。它有点起作用,但有点不起作用。如果你第一次做对了,它会说“密码有效”,不会再问你。但是,如果您第一次出错,它会再次询问,但无论您输入什么,它都会出现与第一次相同的错误消息 minlength = (8) errors = list() i = 0 for i in range(3): pw = str(input("Inser

我已经做了一个程序,它应该要求你输入一个密码,并检查它是否符合某些要求,如果它不符合这些要求,它将要求你输入另一个密码。我试着通过一个范围设置为3的循环来重新提问。它有点起作用,但有点不起作用。如果你第一次做对了,它会说“密码有效”,不会再问你。但是,如果您第一次出错,它会再次询问,但无论您输入什么,它都会出现与第一次相同的错误消息

minlength = (8)
errors = list()
i = 0
for i in range(3):
    pw = str(input("Insert new password."))
    num = sum(1 for c in pw if c.isnumeric())
    alpha = sum(1 for c in pw if c.isalpha())
    if len(pw) < minlength:
        errors.append("Not enough characters")
    if alpha < 1:
        errors.append("At least on letter is needed")
    if num < 1:
        errors.append("At least one number is needed")
    if pw.isalnum() == False:
        errors.append("Must be alphanumeric")
    if not errors:
        print("Password is valid")
        break
    else:
        print("Password is invalid")
        for err in errors:
            print(err)
            break
minlength=(8)
错误=列表()
i=0
对于范围(3)中的i:
pw=str(输入(“插入新密码”))
num=sum(如果c.isnumeric(),则pw中的c为1)
alpha=总和(如果c.isalpha(),则pw中的c为1)
如果len(pw)

如果您输入了不同的内容,我需要一种方法使其不会输出相同的错误消息。

您需要清空循环开头的
错误列表,或者将其声明为循环内部的局部变量,如:

for i in range(3):
    errors = list()
    ...

在当前编写代码时,当出现错误时,元素会在循环的第一次迭代中插入到此列表中,即使在后续迭代中,元素也会无限期地保留在该列表中。

问题在于,您只声明一次
错误
数组(在循环之前),然后重复添加到该数组中。您可以通过正确确定
errors
变量的范围来解决问题-将
errors=list()
行移动到
for
循环中