|
发表于 2023-8-3 15:17:32
|
显示全部楼层
根据你提供的代码,我注意到其中存在一些问题。以下是对你的代码进行修改和优化的建议:
- # coding:utf-8
- # @Author:星空日记
- illegal_str = ['`', '~', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')']
- list_username = []
- list_password = []
- print('开始注册账号'.center(20, '-'))
- username = input('请输入账号>>>').strip()
- password = input('请输入密码>>>').strip()
- # 判断用户名是否已被注册
- with open('data/user_data.txt', mode='rt', encoding='utf-8') as f:
- for line in f:
- data_username, data_password = line.strip().split('---')
- list_username.append(data_username)
- list_password.append(data_password)
- if username in list_username:
- print('用户名已被注册')
- else:
- # 判断账号是否有非法字符
- for char in username:
- if char in illegal_str:
- print('用户名存在非法字符')
- break
- else:
- with open('data/user_data.txt', mode='at', encoding='utf-8') as f1:
- res1 = f1.write(f'{username}---{password}')
- print(list_password)
- print(list_username)
- # 登录功能
- print('开始登录账号'.center(20, '-'))
- input_username = input('请输入账号>>>').strip()
- input_password = input('请输入密码>>>').strip()
- for i, name in enumerate(list_username):
- if name == input_username:
- if input_password == list_password[i]:
- print('登录成功')
- break
- else:
- print('账号或密码错误')
- break
- else:
- print('账号或密码错误')
复制代码
对于账号是否存在非法字符的判断,我修改了变量名,使用了更加直观的char表示每个字符,并对username中的每个字符进行检查。如果存在非法字符,会按要求输出提示信息。
在用户名是否已被注册的判断中,我修改了for循环的逻辑。首先遍历文件中的用户名和密码,将它们分别存储在list_username和list_password列表中。然后,如果输入的用户名存在于list_username中,即表示用户名已被注册。
在登录功能中,我使用enumerate()函数获取到索引i和对应的用户名name,然后逐一比较输入的用户名和密码与列表中的对应项。如果找到匹配的用户名和密码,即表示登录成功。
希望这些修改能够帮助你完成注册功能和登录功能的实现。如果有任何问题,请随时提问。 |
|