Python编写密码输入校验功能时无法重复循环该如何解决?
密码校验循环失效问题修复
核心问题原因
- 密码输入逻辑
input("Password: ")仅写在循环外,程序只会在启动时读取一次输入,循环过程中不会获取用户新输入的密码 - 校验失败后的重新提示逻辑放在了while循环外部,无法被循环触发
- 空格校验逻辑写反:现有代码会在密码不含空格时判定为不合法,不符合常规密码不能包含空格的需求,需要调整判断条件
修正后可正常运行的代码
import re while True: # 输入逻辑放入循环内,每次校验前读取用户新输入的密码 p = input("Password: ") is_valid = True if len(p) < 8 or len(p) > 32: is_valid = False elif not re.search("[a-z]", p): is_valid = False elif not re.search("[0-9]", p): is_valid = False elif not re.search("[A-Z]", p): is_valid = False elif not re.search("[$#@]", p): is_valid = False # 调整空格校验逻辑:存在空格则判定密码不合法 elif re.search("\s", p): is_valid = False if is_valid: print("Valid Password") # 校验通过直接跳出循环 break else: print("Not a Valid Password. Please type again.")
内容的提问来源于stack exchange,提问作者wyatt
相关产品推荐
相关产品推荐

