Python密码校验程序符合约束时while循环持续循环无法正常退出问题
密码校验程序循环问题修复方案
问题根因
- 密码输入、密码长度计算逻辑写在了while循环外部,程序只会在启动时获取一次密码,后续循环都会复用第一次输入的密码做校验,所以会持续输出同一条提示消息。
- 额外加入的
exit()调用属于非常规流程控制语句,在部分运行环境中可能无法立刻生效,反而会导致执行逻辑异常。
符合开发约束的修复后代码
MIN_PASSWORD_LENGTH = 6 # 常量定义 MAX_PASSWORD_LENGTH = 10 message = '' while message != "password strong": # 密码输入、长度计算移到循环内部,每次循环获取新密码 password = input("Please enter your password: ") password_length = len(password) print(password_length) if password_length < MIN_PASSWORD_LENGTH or password_length > MAX_PASSWORD_LENGTH: message = "Password should have more than 6 but less 10 characters" elif password.isalpha(): message = "password weak – contains only letters" elif password.isnumeric(): message = "password weak – contains only numbers" else: message = "password strong" print(message)
修复说明
修复后的代码完全满足两项开发约束:
- 没有使用
break语句,循环完全依靠自身条件判断终止 - while循环的判断条件仅使用
message变量,没有包含password和password_length变量
当密码校验通过时,message被赋值为"password strong",下一次循环条件判断不成立,循环会自动正常结束。
内容的提问来源于stack exchange,提问作者DevP
相关产品推荐
相关产品推荐

