我正在为我的班级设计一个简单的项目,以检查密码是否仅包含数字和字母,而不包含其他字符,但我的变量计数中仍然出现错误。
代码运行正确的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
答案 0 :(得分:1)
注意:此答案仅显示代码中的问题。它根本不是一个好/快/ pythonic解决方案。还有很多其他更好的方法可以做到这一点。
您正在goodCha
循环中创建变量badCha
和for
,因此,在每次迭代时,它们都会设置为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