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

Python文本文件登录程序同时输出正误提示的代码修复

Python文本文件登录程序异常排查

问题现象

编写基于文本文件存储的Python登录程序时,输入正确用户名的情况下,程序不会仅输出Welcome to the database提示,反而会同时输出Welcome to the database和Username invalid. Please try again.两条提示。

原始问题代码

def login():
    while True:
        name = input("Name: ")
        with open('username.txt', "r")as name_file:
            for line in name_file.readlines():
                if name == line.strip():
                    print("welcome to database")
                else:
                    print("Username invalid. Please try again")

错误根因

逻辑判断的位置错误:

  • 现有代码在逐行遍历用户名文件的过程中,每比对一行就立刻输出一次结果:当前行和输入用户名匹配就打印欢迎语,不匹配就打印用户名无效。
  • 只要username.txt中存储的账号数量大于1,或者匹配的正确账号不在文件第一行,遍历过程就会触发多次判断,同时打印出两种提示。除此之外,现有代码就算匹配成功也不会跳出外层while True循环,会一直要求用户重复输入用户名。

修正方式

调整判断逻辑:遍历文件过程中只做匹配状态标记,不即时输出结果;匹配到正确用户名后立刻终止遍历,等全文件比对完成后再统一输出对应结果,匹配成功时直接跳出登录循环。
修正后代码:

def login():
    while True:
        name = input("Name: ")
        is_valid_user = False
        with open('username.txt', "r") as name_file:
            for line in name_file.readlines():
                if name == line.strip():
                    is_valid_user = True
                    # 匹配到目标用户后直接终止行遍历,减少无效读取
                    break
        # 全量比对完成后统一输出结果
        if is_valid_user:
            print("welcome to database")
            # 登录成功后跳出输入循环
            break
        else:
            print("Username invalid. Please try again")

内容的提问来源于stack exchange,提问作者user19449158

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:45:31