关于#python#的问题:这里把每个用户的用户名和密码保存成键值对的形式,利用 JSON模块进行操作

本项目要求实现用户注册、登录、修改密码和注销等功能。这里把每个用户的用户名和密码保存成键值对的形式,利用 JSON模块进行操作。

创建一个空的 JSON 文件,用来存储用户信息。

编写注册函数,接收用户输入的用户名和密码,将其以键值对的形式保存到 JSON 文件中。

编写登录函数,接收用户输入的用户名和密码,从 JSON 文件中查找对应的键值对,判断登录是否成功。

编写修改密码函数,接收用户输入的用户名和旧密码,检查其是否正确,若正确则将其对应的键值对中的密码修改为新密码。

编写注销函数,接收用户输入的用户名,从 JSON 文件中删除对应的键值对。

下面是一个简单的实现代码

import json

# JSON 文件路径
JSON_FILE = 'users.json'

# 注册函数
def register():
    # 获取用户名和密码
    username = input('请输入用户名:')
    password = input('请输入密码:')
    
    # 读取 JSON 文件
    with open(JSON_FILE, 'r') as f:
        users = json.load(f)
        
    # 判断用户名是否已存在
    if username in users:
        print('用户名已存在')
    else:
        # 添加新用户
        users[username] = password
        
        # 写入 JSON 文件
        with open(JSON_FILE, 'w') as f:
            json.dump(users, f)
            
        print('注册成功')

# 登录函数
def login():
    # 获取用户名和密码
    username = input('请输入用户名:')
    password = input('请输入密码:')
    
    # 读取 JSON 文件
    with open(JSON_FILE, 'r') as f:
        users = json.load(f)
        
    # 判断用户名和密码是否正确
    if username in users and users[username] == password:
        print('登录成功')
    else:
        print('用户名或密码错误')

# 修改密码函数
def change_password():
    # 获取用户名和旧密码
    username = input('请输入用户名:')
    old_password = input('请输入旧密码:')
    
    # 读取 JSON 文件
    with open(JSON_FILE, 'r') as f:
        users = json.load(f)
        
    # 判断用户名和密码是否正确
    if username in users and users[username] == old_password:
        # 获取新密码
        new_password = input('请输入新密码:')
        
        # 修改密码
        users[username] = new_password
        
        # 写入 JSON 文件
        with open(JSON_FILE, 'w') as f:
            json.dump(users, f)
            
        print('密码修改成功')
    else:
        print('用户名或密码错误')

# 注销函数
def logout():
    # 获取用户名
    username = input('请输入用户名:')
    
    # 读取 JSON 文件
    with open(JSON_FILE, 'r') as f:
        users = json.load(f)
        
    # 判断用户名是否存在
    if username in users:
        # 删除用户
        del users[username]
        
        # 写入 JSON 文件
        with open(JSON_FILE, 'w') as f:
            json.dump(users, f)
            
        print('注销成功')
    else:
        print('用户名不存在')

使用时,可以根据用户输入的选项调用相应的函数:

while True:
    print('请选择操作:')
    print('1. 注册')
    print('2. 登录')
    print('3. 修改密码')
    print('4. 注销')
    print('5. 退出')
    
    choice = input()
    
    if choice == '1':
        register()
    elif choice == '2':
        login()
    elif choice == '3':
        change_password()
    elif choice == '4':
        logout()
    elif choice == '5':
        break
    else:
        print('无效选项')

注意,这里没有对 JSON 文件进行加密或者其他安全处理,实际应用中需要考虑更多的安全性问题。

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7646155
  • 这篇博客也不错, 你可以看下Python 如何进行JSON提取数据的字段值?
  • 除此之外, 这篇博客: python接口自动化获取响应数据中的 做接口测试的时候,经常需要json处理,那么json处理到底什么情况下需要用到了 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 一、在做接口测试传参的时候,我们往往需要定义一个字典,含有key和value的值,如下:

    data={
    	"gameId": "2",
    	"issueType": "5",
    	"operatorId": "87"
    }
    

    然后请求的时候,会把data赋值给post请求,然而这样是错误的,data的数据类型为dict,接口请求的数据类型为字符串,只不过是json格式的字符串,但是本质是字符串是不会改变的,故需要通过json.dunps(data)转化成json格式的字符串,然后传递给post请求
    二、在接口请求后返回值的时候,往往看到后面加一个“.json()”,为什么呢,如图:

    import requests,json
    data={
    	"gameId": "2",
    	"issueType": "5",
    	"operatorId": "87"
    }
    # print(type(data))
    header={'Content-Type': 'application/json'}
    url='http://10.12.103.12:8889/v1/game/queryGameIssue'
    re= requests.post(url=url,data=json.dumps(data),headers=header).json()
    print(type(re))  #<class 'dict'>
    

    发现在返回值后加“.json()”后,返回的数据类型变成了dict,这样就方便我们按照字典的操作去拿数据,如果不加“.json()”的话,返回值为:<class ‘requests.models.Response’>
    三、如何拿到响应头里的cookie和其他信息呢
    接口测试中,接口返回的cookie一般为cookiejar类,管理HTTP cookie值、存储HTTP请求生成的cookie、向传出的HTTP请求添加cookie的对象。实际工作中一般通过如下方式把响应的cookie转化成cookie的字符串:

    cookies = requests.get(url).cookies
    cookie = requests.utils.dict_from_cookiejar(cookies)
    

    此时我们可以将cookie写入json文件,供后续接口使用

  • 您还可以看一下 黄菊华老师的微信小程序Json数据使用专题课程中的 微信小程序入门到就业课(全栈课)学习说明【建议看下】小节, 巩固相关知识点