如何实现密码强度不足时重新输入?排查当前代码逻辑问题
问题分析与修复
原代码的核心问题
- 语法错误:
l>=缺少具体数值(比如应该是l>=1,假设l是小写字母的计数) - 执行顺序错误:
break语句写在print("Strong password")之前,导致密码符合要求时直接跳出循环,成功提示永远不会被执行 - 错误处理逻辑错误:
else分支里用print(input("Weak password, try again: "))完全错误,应该是获取新输入后重新校验,而非打印输入内容
修正后的代码示例
假设这段代码原本嵌套在循环中(比如while True),修正后的完整逻辑如下:
while True: s = input("Enter password: ") # 先统计密码各类字符数量 l = sum(1 for c in s if c.islower()) u = sum(1 for c in s if c.isupper()) p = sum(1 for c in s if not c.isalnum()) d = sum(1 for c in s if c.isdigit()) # 修正条件与执行顺序 if l >= 1 and u >= 1 and p >= 1 and d >= 1 and l + u + p + d == len(s): print("Strong password") break else: print("Weak password, try again!")
关键修复点
- 补全
l>=的数值(示例用l>=1,可根据实际密码规则调整) - 将成功提示
print("Strong password")放在break之前,确保符合条件时能正常输出 - 调整
else分支逻辑:仅打印错误提示,循环会自动回到输入步骤重新校验新密码
内容的提问来源于stack exchange,提问作者Skipz
相关产品推荐
相关产品推荐

