def login(): print("*" * 30) print("##登录界面:") account = input("**账号:") password = input("**密码:") print("*" * 30) file = open("用户表.txt", 'r', encoding='utf-8') peoplelist=file.read() print(peoplelist) for key,val in peoplelist: if key==account and val==password: print("登录成功") print(peoplelist)
时间: 2024-03-04 07:48:09 浏览: 38
这段代码是一个简单的登录函数,但是有几个问题:
1. `peoplelist` 变量的值是一个字符串,而不是一个列表,因此在 `for` 循环中使用 `key` 和 `val` 不会按照你期望的方式工作。你需要将 `peoplelist` 转换为一个列表,例如使用 `split()` 方法。
2. 如果用户输入的账号和密码匹配,则会输出 "登录成功",但是没有做任何其他操作,比如返回一个表示登录成功的值或者跳转到其他页面。你需要在登录成功时添加相应的操作。
下面是修改后的代码:
```python
def login():
print("*" * 30)
print("##登录界面:")
account = input("**账号:")
password = input("**密码:")
print("*" * 30)
with open("用户表.txt", 'r', encoding='utf-8') as file:
peoplelist = file.read().split('\n')
for people in peoplelist:
key, val = people.split(',')
if key == account and val == password:
print("登录成功")
# 在此添加登录成功后的操作
return True
print("账号或密码错误")
return False
```
这里使用了 `with` 语句来打开文件,这样可以自动关闭文件并且更加安全。同时,将读取到的字符串使用 `split('\n')` 方法转换为了一个列表,列表中的每个元素代表一个用户的账号和密码,使用 `,` 分隔开。在 `for` 循环中,使用 `split()` 方法将每个元素拆分为账号和密码,然后比较输入的账号和密码是否和列表中的某个元素匹配。如果匹配成功,输出 "登录成功" 并返回 `True`,否则输出 "账号或密码错误" 并返回 `False`。这样在调用 `login()` 函数时,可以根据返回的值来判断登录是否成功。
阅读全文