本项目要求实现用户注册、登录、修改密码和注销等功能。这是把每个用户的用户名和密码保存成键值对的形式,利用JOSN模块进行操作。
json.dumps :把Python对象转换为json字符串
json.loads :把json字符串转化为Python对象
文件里只能写字符串,但是可以把字典转成json串,json串是字符串,可以写到文件里
实例
import json
#创建一个新的字典
dictt = dict()
dictt['0'] = 'aaa'
dictt['1'] = 'bbb'
dictt['2'] = 'ccc'
print('字典',dictt)
#字典转化为json字符串
res = json.dumps(dictt)
print('res:',res)
print(type(res))
dic = json.loads(res)
print('dic:',dic)
print(type(dic))
print(dic['0'])
结果输出
字典 {'0': 'aaa', '1': 'bbb', '2': 'ccc'}
res: {"0": "aaa", "1": "bbb", "2": "ccc"}
<class 'str'>
dic: {'0': 'aaa', '1': 'bbb', '2': 'ccc'}
<class 'dict'>
aaa
对于用户注册、登录、修改密码和注销等功能,可以使用JSON模块将每个用户的用户名和密码以键值对的形式保存。具体实现步骤如下:
import json
# 创建一个空字典来存储用户信息
user_dict = {}
# 将用户信息保存到一个JSON文件中
def save_user_info():
with open("user.json", "w", encoding="utf-8") as f:
json.dump(user_dict, f)
def register():
username = input("请输入用户名:")
password = input("请输入密码:")
# 判断用户名是否已存在
if username in user_dict:
print("该用户名已存在,请重新输入!")
register()
else:
user_dict[username] = password
print("注册成功!")
save_user_info()
def login():
username = input("请输入用户名:")
password = input("请输入密码:")
# 判断用户名和密码是否匹配
with open("user.json", "r", encoding="utf-8") as f:
user_dict = json.load(f)
if username not in user_dict:
print("该用户不存在,请先注册!")
register()
elif user_dict[username] != password:
print("密码错误,请重新登录!")
login()
else:
print("登录成功!")
def change_password():
username = input("请输入用户名:")
password = input("请输入旧密码:")
with open("user.json", "r", encoding="utf-8") as f:
user_dict = json.load(f)
if username not in user_dict:
print("该用户不存在,请先注册!")
register()
elif user_dict[username] != password:
print("密码错误,请重新输入!")
change_password()
else:
new_password = input("请输入新密码:")
user_dict[username] = new_password
print("密码修改成功!")
save_user_info()
def delete_user():
username = input("请输入用户名:")
password = input("请输入密码:")
with open("user.json", "r", encoding="utf-8") as f:
user_dict = json.load(f)
if username not in user_dict:
print("该用户不存在,请先注册!")
register()
elif user_dict[username] != password:
print("密码错误,请重新输入!")
delete_user()
else:
del user_dict[username]
print("注销成功!")
save_user_info()
注意事项:
完整代码如下:
import json
# 创建一个空字典来存储用户信息
user_dict = {}
# 将用户信息保存到一个JSON文件中
def save_user_info():
with open("user.json", "w", encoding="utf-8") as f:
json.dump(user_dict, f)
# 注册函数
def register():
username = input("请输入用户名:")
password = input("请输入密码:")
# 判断用户名是否已存在
if username in user_dict:
print("该用户名已存在,请重新输入!")
register()
else:
user_dict[username] = password
print("注册成功!")
save_user_info()
# 登录函数
def login():
username = input("请输入用户名:")
password = input("请输入密码:")
# 判断用户名和密码是否匹配
with open("user.json", "r", encoding="utf-8") as f:
user_dict = json.load(f)
if username not in user_dict:
print("该用户不存在,请先注册!")
register()
elif user_dict[username] != password:
print("密码错误,请重新登录!")
login()
else:
print("登录成功!")
# 修改密码函数
def change_password():
username = input("请输入用户名:")
password = input("请输入旧密码:")
with open("user.json", "r", encoding="utf-8") as f:
user_dict = json.load(f)
if username not in user_dict:
print("该用户不存在,请先注册!")
register()
elif user_dict[username] != password:
print("密码错误,请重新输入!")
change_password()
else:
new_password = input("请输入新密码:")
user_dict[username] = new_password
print("密码修改成功!")
save_user_info()
# 注销函数
def delete_user():
username = input("请输入用户名:")
password = input("请输入密码:")
with open("user.json", "r", encoding="utf-8") as f:
user_dict = json.load(f)
if username not in user_dict:
print("该用户不存在,请先注册!")
register()
elif user_dict[username] != password:
print("密码错误,请重新输入!")
delete_user()
else:
del user_dict[username]
print("注销成功!")
save_user_info()
# 主函数
def main():
while True:
print("="*30)
print("请选择功能:")
print("1. 注册")
print("2. 登录")
print("3. 修改密码")
print("4. 注销")
print("0. 退出")
print("="*30)
choice = input("请输入选项(0-4):")
if choice == "1":
register()
elif choice == "2":
login()
elif choice == "3":
change_password()
elif choice == "4":
delete_user()
elif choice == "0":
print("退出程序!")
break
else:
print("输入有误,请重新选择!")
if __name__ == "__main__":
main()
可以使用JSON模块来实现将用户的用户名和密码保存成键值对的形式,具体实现步骤如下:
首先,我们可以创建一个空字典来保存用户的信息:
users = {}
然后,我们可以使用JSON模块将字典保存到文件中,以便后续使用:
import json
with open('users.json', 'w') as f:
json.dump(users, f)
在注册用户时,我们可以通过获取用户的输入,构建一个包含用户名和密码的字典,然后将其添加到users字典中:
user = {}
username = input('请输入用户名:')
password = input('请输入密码:')
user[username] = password
users.update(user)
在登录用户时,我们可以通过获取用户的输入,验证其用户名和密码是否匹配:
username = input('请输入用户名:')
password = input('请输入密码:')
if username in users and users[username] == password:
print('登录成功!')
else:
print('登录失败,请检查用户名和密码。')
在修改密码时,我们可以通过获取用户的输入,找到其对应的键值对,然后更新密码:
username = input('请输入用户名:')
password = input('请输入原密码:')
new_password = input('请输入新密码:')
if username in users and users[username] == password:
users[username] = new_password
print('密码修改成功!')
else:
print('密码修改失败,请检查用户名和密码。')
在注销用户时,我们可以通过获取用户的输入,找到其对应的键值对,然后将其从users字典中删除:
username = input('请输入用户名:')
password = input('请输入密码:')
if username in users and users[username] == password:
del users[username]
print('注销成功!')
else:
print('注销失败,请检查用户名和密码。')
以上就是一个简单的使用JSON模块保存用户信息的实现。当然,在实际应用中,还需要对用户输入的数据进行格式验证和安全性检查等,以确保系统安全和数据完整性。