下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

如何用python制作购物车

作者:课课家教育     来源: http://www.kokojia.com点击数:1154发布时间: 2019-09-23 14:39:33

标签: python教程python数据库操作python培训

大神带你学编程,欢迎选课

# 让用户输入金钱

Python是一种计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。

众所周知购物车很麻烦(反正我不爱写)....但是又很重要

1 使用DRF框架

2 关系型数据库选择MySQL

3 非关系型数据库选择Redis

我们首先思考权限验证

非登录用户要可以存储购物车

登录用户也要可以存储购物车

用户还可以对购物车的增删改查(不论登录和非登录)

结算时要勾选需要结算的物品

用户登录时合并购物车

登录用户状态保持使用JWT&非登录用户使用cookie

如何区分说完了 、但是购物车储存信息放哪是个问题

众所周知关系型数据库的性能真的是烂到家了

关系型数据库每秒的访问次数1100多次&菲关系型数据库比如redis可以达到11W次之多

所以优化很重要 不然你程序跑起来之后如果访问次数很大 服务器很容易就崩溃 

>>>购物车 数据 >>redis

未登录用户购物车数据存放致cookie&登录用户直接扔到redis

技术方向 登录用户存储redis中需要储存两个 1 物品信息,就存一个sku_id 和count (因为结算要用嘛)存储类型>>哈希

如果想不到就一个一个去试试完就哈希最合适

xxxx{}.format(user_id) ={xxx:10,xxxxx:20}  哈希真的很合适做购物车

redis 里面还要存储一个 勾选功能

方便的是用set类型 因为自动去重

当然如果追求完美 list也可以 大不了你自己去重嘛 lrem 然后储存也要用lpush 还能升序

想想也很心动

当然在操作物品信息和勾选时候!!一定要一起操作!!!!!!!!!

未登录用户操作购物车

使用Json来存储 很方便!!!sku和是否勾选都可以放到一个字典里去

但是讲道理你需要加个密吧

base64 and pickle 俩标准模块

最后在说说合并购物车

有些人在这会很迷惑如何区分我是谁我在哪等等

其实很简单 你电脑里存有cookie 然后你登录了 然后用户和cookie不就合并了?

讲道理你打什么overwatch啊pubg啊炉石啊 哥们关系好 很多人在玩很正常。

你一个购物软件不会共享了吧? 当然你要非说一个软件登录两个账号

最多你在给他个选项是否要合并购物车

当然这只是基本设计 真正实现起来又要肝出一片天了

money = input("请输入充值的金额:")
if money.isdecimal():
# 判断用户输入的是不是数字(是不是真钱)
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
]
# goods就是超市中的商品货架
car = {}
# 推的购物车
money_sum = 0
# 消费的总额
while True:
# 循环展示商品
for i in range(len(goods)):
print(i+1,goods[i]["name"],goods[i]["price"])
# 展示商品序号,名称,价格
num = input("请输入您要购买的商品序号(N/结算|Q/退出):")
# 用户输入要购买的序号

    if num.isdecimal() and 0 < int(num) <= len(goods):
        # 判断用户输入商品序号在商品货架上
        num = int(num) - 1
        # 展示的时候进行加1 用户输入的商品序号进行减1
        print(goods[num]["name"],goods[num]["price"])
        # 展示用户选择的商品名称和价格
        if car.get(goods[num]["name"]):
            # 判断用户推得购物车中是否有此商品
            car[goods[num]["name"]][goods[num]["price"]] += 1
            # 在针对此商品数量进行加1
        else:
            # 此商品不在购物车中
            car[goods[num]["name"]] = {goods[num]["price"]:1}
            # 将此商品添加到购物车中
        print(car)
        # 查看我们的购车中都有哪些商品

    elif num.upper() == "N":
        # 结算功能
        for em in car:
            # 循环查看购物车中的商品
            sp_num = list(car[em].values())[0]
            # 每一个商品的数量
            sp_price = list(car[em].keys())[0]
            # 每一个商品的单价
            money_sum += int(sp_num) * int(sp_price)
            # 购物车中所有商品的总价格
            print(f"商品:{em}\\t数量:{sp_num}\\t单价:{sp_price}")
            # 给用户展示购买了哪些商品

        if int(sp_num) * int(sp_price) <= int(money):
            # 判断用户购物车中商品的总金额时候小于用户的充值金额
            money = int(money) - money_sum
            # 进行支付
            print(f"结算成功,消费金额 :{money_sum}账户余额 :{money}")
            # 给用户显示此次购物共消费的金额
            car.clear()
            # 清空购物车(结算完了)
        else:
            print("钱不够啊!")
            sp_name = input("请输入您要删除的商品名称:")
            # 让用户输入要删除的商品名称
            if sp_name in car:
                # 判断要删除的商品是否在购物车中
                if car[sp_name][list(car[sp_name].keys())[0]] > 0:
                    # 判断此商品的总数量是否大于0
                    car[sp_name][list(car[sp_name].keys())[0]] -= 1
                    # 对商品的总数量进行减1
                if car[sp_name][list(car[sp_name].keys())[0]] == 0:
                    # 如果此商品不在购物车中
                    del car[sp_name]
                    # 删除此商品
            else:
                print("商品不存在!")

    elif num.upper() == "Q":
        # 退出
        print("欢迎下次光临!")
        money = int(money) - money_sum
        # 用户的充值金额 减去消费金额 获取最新的账号余额
        print(f"结算成功,消费金额 :{money_sum}账户余额 :{money}")
        # 给用户显示此次购物消费了多少钱,还剩多少钱
        break
        # 将客人请出超市
    else:
        print("输入错误,请重新输入!")

else:
print("滚犊子!")

Python的设计目标之一是让代码具备高度的可阅读性。它设计时尽量使用其它语言经常使用的标点符号和英文单字,让代码看起来整洁美观。它不像其他的静态语言如C、Pascal那样需要重复书写声明语句,也不像它们的语法那样经常有特殊情况和意外。

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程