所以我在python上有点初学者,我不能为我的生活找出为什么它不会检查并添加每个字母
def howstrong (password):
points = len(password)
charactersallowed = ["!", "$", "%", "^", "&", "*", "(", ")", "-", "_", "=", "+"]
for ch in password:
if ch.isupper():
points= points+5
elif ch.islower():
points = points+5
elif ch.isdigit():
points = points+5
elif ch in charactersallowed:
points= points+5
else:
points = points+0
return points
如果输入密码密码!在我的代码中,它告诉我我的积分是14但是这个密码应该是24?下面我将添加我的其余代码,但我怀疑它在那个部分,我相信我的for循环中有错误。
def checkingmain():
while 1:
p = input("\nEnter password: ")
if len(p) < 8 or len(p) > 24:
print("Password must be 6 to 12 characters.")
elif input("Re-enter password: ") != p:
print("Passwords did not match. Please try again.")
else:
score= howstrong(p)
if not score:
print("Invalid character detected. Please try again.")
else:
if score <= 0:
print("your password is weak",score)
elif score>0 and score<20:
print("your password is medium",score)
else:
print("your password is strong",score)
break
我很感激,如果有人能用一个可以理解的解决方案回到我身边,对于一个有点蟒蛇初学者的人来说。
答案 0 :(得分:5)
它只检查第一个字符,因为你在循环内部返回。将return语句移回一个缩进,因此它不在for循环中。
答案 1 :(得分:1)
由于你在循环中有你的return语句,它只能在从函数返回之前运行循环一次。如果将return语句移回一个选项卡,它应该可以工作
答案 2 :(得分:0)
return语句在for循环中,所以当你的程序第一次到达for循环的末尾时,它只是从函数返回,所以你的for循环终止了。如下所示,您的代码稍有改动就会对您有所帮助。
for ch in password:
if ch.isupper():
points= points+5
elif ch.islower():
points = points+5
elif ch.isdigit():
points = points+5
elif ch in charactersallowed:
points= points+5
else:
points = points+0
return points
希望它有所帮助!