如何实现先校验文本文件中用户名再请求密码的登录系统并处理换行符?
文本登录系统实现方案
先解决你提到的两个核心问题,再给你修正后的完整代码:
问题解决思路
- 读取文件第一列(用户名):按行读取文件,每行用
split(",")分割后,第一个元素就是用户名。 - 去除密码末尾的换行符:用
strip()方法去掉字符串两端的空白字符(包括换行符\n、多余空格),或者用rstrip("\n")只清除末尾的换行。
修正后的完整代码
你原来的代码有几个明显问题:调用readlines()后文件指针已经到末尾,后续循环不会执行;流程颠倒(应该先校验用户名存在再输密码);没处理密码的换行符。修正后的代码如下:
# 读取数据库文件,把账户信息存成字典(用户名:密码),方便快速查询 accounts = {} with open('database.txt', 'r') as f: for line in f: # 先去掉行尾的换行符,再分割用户名和密码 clean_line = line.strip() username, password = clean_line.split(",") accounts[username] = password # 第一步:输入用户名并校验是否存在 login_username = input("Enter Username: ") if login_username not in accounts: print("用户名不存在,登录失败") else: # 第二步:用户名存在时再输入密码 login_password = input("Enter PASSWORD: ") if login_password == accounts[login_username]: print("LOGGED IN") else: print("密码错误,登录失败")
代码说明
- 用
with语句打开文件,会自动关闭文件,避免资源浪费 - 把账户存在字典里,查用户名是否存在的效率比循环遍历高很多
strip()处理每行内容,既能去掉换行符,还能清理掉可能不小心加的前后空格- 严格按照你要的流程:先校验用户名,存在才让输密码
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

