python开发购物车
1 业务需求
商品中心
显示库存的商品
商品能够加入到购物车
个人中心
购物车
修改购物车的商品
下单
完成的订单
订单详情
账户余额
2 代码实现
# 定义全局变量信息
# 商品编号信息
goods_num = {'G1': '皮鞋', 'G2': '皮带', 'G3': '帽子', 'G4': '笔记本'}
# 商品单价
goods_price = {'皮鞋': 165, '皮带': 99, '帽子': 49, '笔记本': 3999}
# 购物车
shopping_car = {}
# 完成的订单
already_paid = {}
# 个人编号的功能
IdCenter_Num = {'M1':"shopping_car", 'M2':"already_paid"}
# 个人中心的功能
IdCenter_dict = {"shopping_car": shopping_car, 'already_paid': already_paid}
# 账户余额
AccountBalance = [400, ] # 商品选择页面
def GoodsFunction():
# 打印商品编号,商品以及对应价格,供选择
print('序号\t\t\t商品\t\t\t价格')
for i in goods_num:
print('%s\t\t\t%s\t\t\t%s' % (i, goods_num.get(i), goods_price.get(goods_num.get(i))))
result = input("请输入序号:").strip()
# 判断传入参数
if result == '':
print("Error:不能为空")
elif result == '' or result == "":
return result
elif result in goods_num:
goodname = goods_num.get(result)
# 参数为商品编号,传入到AddGood()函数
AddGood(goodname)
else:
print("Error:指令错误,请重新输入")
return '' # 加入购物车
def AddGood(goodname):
N_1 = int(input('请输入%s的数量:' % goodname))
if N_1 > 0:
# 判断商品元素是否存在,存在则修改数量,不存在则追加
if goodname in shopping_car:
shopping_car[goodname] = N_1
print(shopping_car)
else:
shopping_car.update({goodname:N_1})
print(shopping_car)
else:
print('Error:商品数量有误') # 个人中心
def GoIdCenter():
print("欢迎来到个人中心,\n序号\t选项")
for i in IdCenter_Num:
print('%s\t\t%s' % (i, IdCenter_Num.get(i)))
print("\n账户余额:%s\n0\t商品页\n1\t个人中心(购物车、订单、余额)" % AccountBalance[0])
result = input("请输入序号:").strip()
if result == '':
print("Error:不能为空,请重新输入!")
elif result == '' or result == '':
return result
elif result in IdCenter_Num:
if result == 'M1':
# 购物车操作函数,flag作为操作标识,如果返回不为空则将返回值在此返回并跳出循环
flag = ''
while True:
flag = ShopCartFun()
if flag != '':
return flag
continue
elif result == 'M2':
# 订单查看函数
GoodOrder()
return 1
else:
print("Error:指令错误,请重新输入!")
return '' # 购物车操作
def ShopCartFun():
# 判断购物车是否为空
if shopping_car:
print('购物车\n商品名\t\t数量\t\t单价\t\t总价')
for i in shopping_car:
# 打印购物车商品详单
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)))
else:
print("你的购物车空旷如也")
print('\n0\t商品页\n1\t个人中心(购物车、订单、余额)\n2\t清空购物车\n3\t结账\n修改商品数量请输入商品名。')
result = input("请输入:").strip()
if result == '':
print("不能为空,请重新输入")
elif result == '' or result == '' or result == '':
# 3为结账选项,返回到主函数,调用结账函数
return result
elif result in shopping_car:
# 修改商品数量,再次调用AddGood()函数
AddGood(result)
else:
print("指令错误,请重新输入")
return '' # 结账函数
def CheckOut():
# 购物车金额合计
Total = 0
for i in shopping_car:
Total += shopping_car.get(i) * goods_price.get(i)
print(Total)
# 判断是否满足结账条件
if Total > AccountBalance[0]:
print("余额不足")
else:
import time
# 生成时间戳,作为订单号
Date = int(time.time())
# 生成订单呢
already_paid.update({Date:shopping_car})
# 扣款
AccountBalance[0] = AccountBalance[0] - Total
# 购物车清空
shopping_car.clear()
return '' # 查看订单详情
def GoodOrder():
if already_paid:
print('完成订单\n订单号')
for i in already_paid:
print(i)
print('\n0\t商品页\n1\t个人中心(购物车、订单、余额)')
N_2 = int(input('\n输入要查看的订单号:').strip())
if N_2 == '':
print('不能为空,请重新输入')
elif N_2 == '' or N_2 == '':
return N_2
elif N_2 in already_paid:
print('订单%s详情商品名\t数量\t总价'%N_2)
for i in already_paid.get(N_2):
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)))
else:
print('输入有误') if __name__ == "__main__":
N = GoodsFunction()
while True:
if N == '':
N = GoodsFunction()
elif N == '':
N = GoIdCenter()
elif N == '':
shopping_car = {}
N = GoodsFunction()
elif N == '':
N = CheckOut()
3 个人理解
任何事物都可分为两个维度,属性和方法,属性可理解数据结构,方法就是对数据结构操作的动作。
确定数据的结构,数据结构是用来存存储数据的地方,它本身也是对象。
一个函数的返回结果可能是另外一个函数形式参数。
无论是面向对象还是面向过程的编程,都是需要立足于现实的业务逻辑。
对于程序,我们需要多写多练习,当你回头看的时候,你会发现原来困扰你的问题会很简单。
4 思路来源
http://www.cnblogs.com/ikmi/p/6195065.html
python开发购物车的更多相关文章
- Python开发 第01课 Python 简介
一.Python 介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为AB ...
- python开发环境搭建
虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境. 1.准备好安装包 1)上python官网下载python运 ...
- 【Machine Learning】Python开发工具:Anaconda+Sublime
Python开发工具:Anaconda+Sublime 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现 ...
- Python开发工具PyCharm个性化设置(图解)
Python开发工具PyCharm个性化设置,包括设置默认PyCharm解析器.设置缩进符为制表符.设置IDE皮肤主题等,大家参考使用吧. JetBrains PyCharm Pro 4.5.3 中文 ...
- Python黑帽编程1.2 基于VS Code构建Python开发环境
Python黑帽编程1.2 基于VS Code构建Python开发环境 0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Atta ...
- Eclipse中Python开发环境搭建
Eclipse中Python开发环境搭建 目 录 1.背景介绍 2.Python安装 3.插件PyDev安装 4.测试Demo演示 一.背景介绍 Eclipse是一款基于Java的可扩展开发平台. ...
- Python开发:环境搭建(python3、PyCharm)
Python开发:环境搭建(python3.PyCharm) python3版本安装 PyCharm使用(完全图解(最新经典))
- Python 开发轻量级爬虫08
Python 开发轻量级爬虫 (imooc总结08--爬虫实例--分析目标) 怎么开发一个爬虫?开发一个爬虫包含哪些步骤呢? 1.确定要抓取得目标,即抓取哪些网站的哪些网页的哪部分数据. 本实例确定抓 ...
- Python 开发轻量级爬虫07
Python 开发轻量级爬虫 (imooc总结07--网页解析器BeautifulSoup) BeautifulSoup下载和安装 使用pip install 安装:在命令行cmd之后输入,pip i ...
随机推荐
- openLDAP安装时无法操作根节点数据,提示的是This base cannot be created with PLA.
1.无法操作根节点数据,提示的是This base cannot be created with PLA. 解决办法 1)添加一个base.ldif文件,里面的dc和配置文件里的保持一致即可 dn: ...
- 通用Mapper环境下,mapper接口无法注入问题
写了一个mapper接口 package com.nyist.mapper; import com.nyist.entity.User; import tk.mybatis.mapper.common ...
- SSH免密码登录教程
在一些受信任的环境中配置免密码登录,是比较方便的:而对于ansible等自动化工具配置免密码登录更是必要的. 免密码登录的要点就是,把想让服务器信任的客户机的公钥发送到服务器. 当客户机连接服务器时直 ...
- Quartz的基本使用之入门(2.3.0版本)
一.Quartz可以用来做什么 Quartz是一个强大任务调度框架,我工作时候会在这些情况下使用到quartz框架,当然还有很多的应用场景,在这里只列举2个实际用到的 餐厅系统会在每周四晚上的22点自 ...
- mysql查询出相同数据出现的次数,统计相同值的数量
1.可以使用count SELECT count(name='A' OR NULL) FROM table 2.用sum SELECT sum(if( = 'A', 1, 0)) FROM table ...
- 跟随我在oracle学习php(9)
三目运算符:表达式? 表达式: 表达式: 自增在前在后没有影响 参与表达式需要注意 在前先计算,在后最后加1. + 字符串拼接. 字符串转数字:从左到右第一个不是数字的位置结束 取整 parseInt ...
- 微服务-开发框架之springboot by 大雄daysn
目录 一.关于springboot 二.springboot的实践 2.1发布一个rest的api 2.2端点 2.3健康检查 2.4远程监控 一.关于springboot 由来:spring1.0- ...
- js的预解析详解
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 虚拟机模拟SSD用于Ceph测试
一.简单介绍 在一些使用场景中,我们需要使用SSD进行测试,如Ceph的分级,OpenStack多种云硬盘配置.在物理设备受限的情况下,我们可以采用模拟SSD的方式进行 二.SSD的标识 在实际的使用 ...
- python面向对象封装案例(附:is和==的区别)
面向对象封装案例 目标 封装 小明爱跑步 存放家具 01. 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对 ...