You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 12:55:10