我的计数器运行不正常

时间:2018-03-26 18:10:57

标签: python string python-3.x counter boolean-logic

我正在为我的班级设计一个简单的项目,以检查密码是否仅包含数字和字母,而不包含其他字符,但我的变量计数中仍然出现错误。

代码运行正确的if语句,但不会添加到计数器中。最后,它还会返回True而不是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

1 个答案:

答案 0 :(得分:1)

注意:此答案仅显示代码中的问题。它根本不是一个好/快/ pythonic解决方案。还有很多其他更好的方法可以做到这一点。

您正在goodCha循环中创建变量badChafor,因此,在每次迭代时,它们都会设置为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