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
相关产品推荐
相关产品推荐

