我的计数器不正确 运行

My counter isn't running properly

我正在为我的 class 开发一个简单的项目来检查密码是否只包含数字和字母而没有其他字符,但我的变量计数总是出错。

代码通过正确的 if 语句运行,但它没有添加到计数器中。最后也是returnsTrue而不是False。有帮助吗?

def chaCheck2(password):
    for i in range(len(password)):
        goodCha = 0
        badCha = 0
        if 48 <= ord(password[i]) <= 57 or 65 <= ord(password[i]) <= 90 or 
        97 <= 
        ord(password[i]) <= 122:
            goodCha += 1
            print ("goodCha: ", goodCha)
        else:
            badCha += 1
            print("badCha: ", badCha)
    if badCha > 0:
        print("False")
    else: print("True")

chaCheck2("a.bcd")

输出:

goodCha:  1
badCha:  1
goodCha:  1
goodCha:  1
goodCha:  1
True

注意:这个回答只是为了展示你的代码中的问题。它根本不是 good/fast/pythonic 解决方案。还有许多其他更好的方法可以做到这一点。

您正在 for 循环中创建变量 goodChabadCha,因此,在每次迭代中,它们都设置为 0。因此,首先,在 for 循环之前初始化它们。

其次,您可以使用for i in password:来获取字符,而不是使用for i in range(len(password))

def chaCheck2(password):
    goodCha = 0
    badCha = 0
    for c in password:
        if 48 <= ord(c) <= 57 or 65 <= ord(c) <= 90 or 97 <= ord(c) <= 122:
            goodCha += 1
            print("goodCha: ", goodCha)
        else:
            badCha += 1
            print("badCha: ", badCha)
    if badCha > 0:
        print("False")
    else:
        print("True")

chaCheck2("a.bcd")

输出:

goodCha:  1
badCha:  1
goodCha:  2
goodCha:  3
goodCha:  4
False