python开发购物车

Posted Artisan正传

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python开发购物车相关的知识,希望对你有一定的参考价值。

1 业务需求

商品中心

显示库存的商品

商品能够加入到购物车

个人中心

购物车

修改购物车的商品

下单

完成的订单

订单详情

账户余额

2 代码实现

 

  1 # 定义全局变量信息
  2 # 商品编号信息
  3 goods_num = {\'G1\': \'皮鞋\', \'G2\': \'皮带\', \'G3\': \'帽子\', \'G4\': \'笔记本\'}
  4 # 商品单价
  5 goods_price = {\'皮鞋\': 165, \'皮带\': 99, \'帽子\': 49, \'笔记本\': 3999}
  6 # 购物车
  7 shopping_car = {}
  8 # 完成的订单
  9 already_paid = {}
 10 # 个人编号的功能
 11 IdCenter_Num = {\'M1\':"shopping_car", \'M2\':"already_paid"}
 12 # 个人中心的功能
 13 IdCenter_dict = {"shopping_car": shopping_car, \'already_paid\': already_paid}
 14 # 账户余额
 15 AccountBalance = [400, ]
 16 
 17 
 18 # 商品选择页面
 19 def GoodsFunction():
 20     # 打印商品编号,商品以及对应价格,供选择
 21     print(\'序号\\t\\t\\t商品\\t\\t\\t价格\')
 22     for i in goods_num:
 23         print(\'%s\\t\\t\\t%s\\t\\t\\t%s\' % (i, goods_num.get(i), goods_price.get(goods_num.get(i))))
 24     result = input("请输入序号:").strip()
 25     # 判断传入参数
 26     if result == \'\':
 27         print("Error:不能为空")
 28     elif result == \'0\' or result == "1":
 29         return result
 30     elif result in goods_num:
 31         goodname = goods_num.get(result)
 32         # 参数为商品编号,传入到AddGood()函数
 33         AddGood(goodname)
 34     else:
 35         print("Error:指令错误,请重新输入")
 36     return \'0\'
 37 
 38 
 39 # 加入购物车
 40 def AddGood(goodname):
 41     N_1 = int(input(\'请输入%s的数量:\' % goodname))
 42     if N_1 > 0:
 43         # 判断商品元素是否存在,存在则修改数量,不存在则追加
 44         if goodname in shopping_car:
 45             shopping_car[goodname] = N_1
 46             print(shopping_car)
 47         else:
 48             shopping_car.update({goodname:N_1})
 49             print(shopping_car)
 50     else:
 51         print(\'Error:商品数量有误\')
 52 
 53 
 54 # 个人中心
 55 def GoIdCenter():
 56     print("欢迎来到个人中心,\\n序号\\t选项")
 57     for i in IdCenter_Num:
 58         print(\'%s\\t\\t%s\' % (i, IdCenter_Num.get(i)))
 59     print("\\n账户余额:%s\\n0\\t商品页\\n1\\t个人中心(购物车、订单、余额)" % AccountBalance[0])
 60     result = input("请输入序号:").strip()
 61     if result == \'\':
 62         print("Error:不能为空,请重新输入!")
 63     elif result == \'0\' or result == \'1\':
 64         return result
 65     elif result in IdCenter_Num:
 66         if result == \'M1\':
 67             # 购物车操作函数,flag作为操作标识,如果返回不为空则将返回值在此返回并跳出循环
 68             flag = \'\'
 69             while True:
 70                 flag = ShopCartFun()
 71                 if flag != \'\':
 72                     return flag
 73                     continue
 74         elif result == \'M2\':
 75             # 订单查看函数
 76             GoodOrder()
 77             return 1
 78     else:
 79         print("Error:指令错误,请重新输入!")
 80     return \'1\'
 81 
 82 
 83 # 购物车操作
 84 def ShopCartFun():
 85     # 判断购物车是否为空
 86     if shopping_car:
 87         print(\'购物车\\n商品名\\t\\t数量\\t\\t单价\\t\\t总价\')
 88         for i in shopping_car:
 89             # 打印购物车商品详单
 90             print(\'%s\\t%s\\t\\t%s\\t\\t%s\' % (i, shopping_car.get(i), goods_price.get(i), shopping_car.get(i) * goods_price.get(i)))
 91     else:
 92         print("你的购物车空旷如也")
 93     print(\'\\n0\\t商品页\\n1\\t个人中心(购物车、订单、余额)\\n2\\t清空购物车\\n3\\t结账\\n修改商品数量请输入商品名。\')
 94     result = input("请输入:").strip()
 95     if result == \'\':
 96         print("不能为空,请重新输入")
 97     elif result == \'0\' or result == \'1\' or result == \'3\':
 98         # 3为结账选项,返回到主函数,调用结账函数
 99         return result
100     elif result in shopping_car:
101         # 修改商品数量,再次调用AddGood()函数
102         AddGood(result)
103     else:
104         print("指令错误,请重新输入")
105     return \'\'
106 
107 
108 # 结账函数
109 def CheckOut():
110     # 购物车金额合计
111     Total = 0
112     for i in shopping_car:
113         Total += shopping_car.get(i) * goods_price.get(i)
114     print(Total)
115     # 判断是否满足结账条件
116     if Total > AccountBalance[0]:
117         print("余额不足")
118     else:
119         import time
120         # 生成时间戳,作为订单号
121         Date = int(time.time())
122         # 生成订单呢
123         already_paid.update({Date:shopping_car})
124         # 扣款
125         AccountBalance[0] = AccountBalance[0] - Total
126         # 购物车清空
127         shopping_car.clear()
128     return \'1\'
129 
130 
131 # 查看订单详情
132 def GoodOrder():
133     if already_paid:
134         print(\'完成订单\\n订单号\')
135         for i in already_paid:
136             print(i)
137         print(\'\\n0\\t商品页\\n1\\t个人中心(购物车、订单、余额)\')
138         N_2 = int(input(\'\\n输入要查看的订单号:\').strip())
139         if N_2 == \'\':
140             print(\'不能为空,请重新输入\')
141         elif N_2 == \'0\' or N_2 == \'1\':
142             return N_2
143         elif N_2 in already_paid:
144             print(\'订单%s详情商品名\\t数量\\t总价\'%N_2)
145             for i in already_paid.get(N_2):
146                 print(\'%s\\t%s\\t%s\' % (i, already_paid.get(N_2).get(i), goods_price.get(i) * already_paid.get(N_2).get(i)))
147         else:
148             print(\'输入有误\')
149 
150 
151 if __name__ == "__main__":
152     N = GoodsFunction()
153     while True:
154         if N == \'0\':
155             N = GoodsFunction()
156         elif N == \'1\':
157             N = GoIdCenter()
158         elif N == \'2\':
159             shopping_car = {}
160             N = GoodsFunction()
161         elif N == \'3\':
162             N = CheckOut()
View Code

3 个人理解

  任何事物都可分为两个维度,属性和方法,属性可理解数据结构,方法就是对数据结构操作的动作。

  确定数据的结构,数据结构是用来存存储数据的地方,它本身也是对象。

  一个函数的返回结果可能是另外一个函数形式参数。

  无论是面向对象还是面向过程的编程,都是需要立足于现实的业务逻辑。

  对于程序,我们需要多写多练习,当你回头看的时候,你会发现原来困扰你的问题会很简单。

4 思路来源

http://www.cnblogs.com/ikmi/p/6195065.html

以上是关于python开发购物车的主要内容,如果未能解决你的问题,请参考以下文章

Python开发程序:ATM+购物商城

Python入门教程第63篇 模块

Python web 开发购物车修改商品数量功能实现

Python自动化开发-EX03(购物车实现)

Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示(代码片段

python运维开发实践--Day2