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 ...
随机推荐
- FTP:500 OOPS: failed to open vsftpd log file:/var/log/vsftpd.log
如下:从10.12.8.165 FTP 到 10.1.3.34,报failed to open vsftpd log[a4_csbdc@localhost ~]$ ftp 10.1.3.34Conn ...
- [hdu P4334] Trouble
[hdu P4334] Trouble Hassan is in trouble. His mathematics teacher has given him a very difficult pro ...
- 一天一点Zynq(1)xilinx-arm-linux交叉编译链 安装总结以及资源更新
结束了对xilinx-arm-linux交叉编译链安装后,总结一下整个过程,方便后来的研究者们,少走点弯路. 关于xilinx-arm-linux交叉编译链的安装,网上一搜一大把,可是有的资料中的资源 ...
- 监听图片src发生改变时的事件
$img.on('load', function() { $img.attr("src", getBase64Image($img.get(0))); $img.off('load ...
- 2010-10-08在浏览器中兼容+jQuery3
一.实现背景图片铺满(兼容各种浏览器) <script type="text/javascript"> $(document).ready(function() { $ ...
- RandomAccessFile多线程下载
public class DownloadServer { ; private static String fileUrl = "https://dldir1.qq.com/qqtv/mac ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.2 Static Map with Two Layers
MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.2 Static Map with Two Layers 一.前言 上一篇博客< ...
- learning makefile automatic dependency generation
- js运行机制
情况一 script标签里面的运行顺序是同步的 遇到settimeout的时候就会变异步,最后执行 执行顺序为1342 情况二 只输出a 情况三 输出4444 异步队列插入的时间和执行时间 for循环 ...
- Python编程高级特性--迭代器
一.简单介绍 直接作用于for循环的数据类型有以下几种: 集合数据类型: list 例如:list = ["yuhaohao", "lisheng", &quo ...