Python注册登录程序代码缺陷修复请求
修复后的用户注册与登录程序
一、注册程序修复
原问题:未实现循环验证密码至符合要求的逻辑,直接写入文件。修复后添加密码校验循环,确保用户输入的密码满足长度≥8位且包含至少一个大写字母的要求。
修复后的注册代码:
def register(): username = input("请输入用户名: ") # 循环验证密码直到符合要求 while True: password = input("请输入密码(长度≥8位且包含至少一个大写字母): ") # 校验密码条件 if len(password) >= 8 and any(c.isupper() for c in password): break print("密码不符合要求,请重新输入!") # 追加写入用户信息到文件 with open("users.txt", "a") as f: f.write(f"{username}:{password}\n") print("注册成功!") if __name__ == "__main__": register()
修复说明:
- 新增
while True循环,强制用户输入符合规则的密码才会继续流程 - 用
any(c.isupper() for c in password)快速判断密码是否包含大写字母 - 采用追加模式(
a)写入文件,避免覆盖已有用户数据
二、登录程序修复
原问题:存在字符串匹配格式错误、变量引用错误。修复后确保正确读取文件内容,精准匹配用户输入的账号密码。
修复后的登录代码:
def login(): username = input("请输入用户名: ") password = input("请输入密码: ") login_success = False # 读取用户文件并验证账号密码 try: with open("users.txt", "r") as f: for line in f: # 清理换行符并分割用户名和密码 user_info = line.strip().split(":") if len(user_info) != 2: continue # 跳过格式错误的无效行 stored_username, stored_password = user_info if stored_username == username and stored_password == password: login_success = True break except FileNotFoundError: print("暂无用户,请先注册!") return print("登录成功!" if login_success else "用户名或密码错误!") if __name__ == "__main__": login()
修复说明:
- 修复字符串匹配逻辑:通过
strip()去除换行符,split(":")正确拆分用户名和密码 - 增加
try-except捕获文件不存在的情况,避免程序崩溃 - 新增格式校验,跳过文件中格式错误的行,提升程序鲁棒性
- 修正变量引用问题,确保存储的账号密码与输入值正确对比
三、用户信息文件格式示例(users.txt)
Alice:Pass1234 Bob:MySecurePass Charlie:HelloWorld123
内容的提问来源于stack exchange,提问作者Michael Yeboah
相关产品推荐
相关产品推荐

