python练习题6(初级、中级购物车)

初级购物车

1.用户信息由user.info文件存放,内容格式:abc | 123 | 0, qwe | 123 | 1000
账号 | 密码 | 余额, 账号 | 密码 | 余额

2.实现登录,注册,注销,购物,充值,退出系统六个功能

3.注册可以完成用户的注册,注册时要提供账号密码,初始财产余额为0
1)注册先输入账号,要对账号做
输入的是否为空、输入的账号是否已经存在两种判断,都通过进入输入密码,否则重新输入
2)输入密码,要对密码长度最短为3位的限制,长度3位或以上代表合法,可以完成注册
3)注册是将账号密码写入文件,财产余额初始为0,
第一次写入格式:账号 | 密码 | 余额
再次写入格式:, 账号 | 密码 | 余额

4.用户登录状态需要保存,在程序运行的py文件最上方定义一个user字典,字典为空代表未登录,为
{‘usr’: 账号, ‘ps’: 密码, ‘money’: 余额}
代表登录,记录的就是当前登录的用户

5.完成用户登录
1)解析user.info文件,将用户信息存放到users_dic字典中,格式见下,解析的过程可以定义为方法,
{
‘abc’: {‘ps’: ‘123’, ‘money’: 0},
‘qwe’: {‘ps’: ‘000’, ‘money’: 1000}
}
2)判断用户是否登录了,如果登录了就提示不需要重复登录,未登录就可以往下走,完成登录
3)先输入账号,账号为空、不存在都会验证失败,继续输入,3
次失败后就可以进入注册功能,验证通过进行玩下
4)再输入密码,密码必须超过3位,3
次登录失败退出登录,成功的记录登录的用户信息到user字典,表示已登录

6.用户注销,就是清楚登录状态,将存放登录用户信息的user字典制空user = {}

7.用购物功能完成购物,
1)必须在登录状态,未登录时,进入登录页面,已登录则可以购物
2)预定义一些商品与价格,每一次完成购物后,提示用户是否继续进行购物
3)如果余额不足则进入充值功能

8.充值功能
1)必须在登录状态才可以操作
2)充值后的金额数据要同步到user.info文件,user字段和user_dic字典中

9.退出系统,将退出系统,但注册的用户和余额都保存在文件中


import os

user = {}


def auth_user(*args):
    '''
    当args参数个数为0时,只取用户信息
    当args参数个数为1时,只取验证用户名是否合法,重复
    当args参数个数为2时,只取验证密码是否对应
    :param args: 参数列表
    :return: 返回用户信息或判断结果
    '''
    user_dic = {}
    with open('user.info', 'r', encoding='utf-8') as r:
        res = r.read().rstrip()
        for item in res.split(','):
            if item:
                item_list = item.split('|')
                name, password, money = item_list
                user_dic[name] = [password, money]

    if len(args) == 0:  # 只取用户信息
        return user_dic

    if len(args) == 1:  # 验证用户名逻辑
        name = args[0]
        if name in user_dic:
            return True  # 用户名存在
        return False

    if len(args) == 2:  # 验证密码逻辑
        user, password = args
        if user_dic[user][0] == password:
            return True
        return False


def auth_password(password):
    '''
    验证密码长度是否大于3
    :param password:
    :return:bool
    '''
    if len(password) > 3:
        return True
    return False


def register():
    '''
    用户注册
    :return:
    '''
    while True:
        name = input("请输入注册用户名(不能为空): ")
        if not auth_user(name) and name:  # 用户名验证通过
            password = input("请输入密码: ")
            if auth_password(password):
                with open('user.info', 'a', encoding='utf-8') as a:  # 内容格式:abc | 123 | 0, qwe | 123 | 1000
                    a.write(name + '|' + password + '|' + '0' + ',')  # 刚注册余额为0
                    return
            else:
                print("密码长度至少3位,请重新输入")
        else:
            print("用户名验证不通过,请更换别的用户名")
            continue


def login():
    '''
    用户登录
    :return:bool
    '''
    if user:
        print("用户已登录")
        return 1
    i = 0
    while i < 3:
        username = input("请输入登录的用户名: ")
        if username in user:
            print("用户已登录")
            return
        if auth_user(username) and username:
            password = input("请输入对应的密码: ")
            if password and auth_user(username, password) and auth_password(password):
                user_dic = auth_user()
                money = user_dic[username][1]
                user[username] = {'ps': password, 'money': money}
                print("登录成功")
                return True
        print("验证失败")
        i += 1
    else:
        print("请重新注册")
        return False


def logout():
    '''
    清除登录状态
    :return:
    '''
    global user
    user = {}
    print("
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值