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开发购物车的更多相关文章

  1. Python开发 第01课 Python 简介

    一.Python 介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为AB ...

  2. python开发环境搭建

    虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境. 1.准备好安装包 1)上python官网下载python运 ...

  3. 【Machine Learning】Python开发工具:Anaconda+Sublime

    Python开发工具:Anaconda+Sublime 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现 ...

  4. Python开发工具PyCharm个性化设置(图解)

    Python开发工具PyCharm个性化设置,包括设置默认PyCharm解析器.设置缩进符为制表符.设置IDE皮肤主题等,大家参考使用吧. JetBrains PyCharm Pro 4.5.3 中文 ...

  5. Python黑帽编程1.2 基于VS Code构建Python开发环境

    Python黑帽编程1.2  基于VS Code构建Python开发环境 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Atta ...

  6. Eclipse中Python开发环境搭建

    Eclipse中Python开发环境搭建  目 录  1.背景介绍 2.Python安装 3.插件PyDev安装 4.测试Demo演示 一.背景介绍 Eclipse是一款基于Java的可扩展开发平台. ...

  7. Python开发:环境搭建(python3、PyCharm)

    Python开发:环境搭建(python3.PyCharm) python3版本安装 PyCharm使用(完全图解(最新经典))

  8. Python 开发轻量级爬虫08

    Python 开发轻量级爬虫 (imooc总结08--爬虫实例--分析目标) 怎么开发一个爬虫?开发一个爬虫包含哪些步骤呢? 1.确定要抓取得目标,即抓取哪些网站的哪些网页的哪部分数据. 本实例确定抓 ...

  9. Python 开发轻量级爬虫07

    Python 开发轻量级爬虫 (imooc总结07--网页解析器BeautifulSoup) BeautifulSoup下载和安装 使用pip install 安装:在命令行cmd之后输入,pip i ...

随机推荐

  1. 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 ...

  2. [hdu P4334] Trouble

    [hdu P4334] Trouble Hassan is in trouble. His mathematics teacher has given him a very difficult pro ...

  3. 一天一点Zynq(1)xilinx-arm-linux交叉编译链 安装总结以及资源更新

    结束了对xilinx-arm-linux交叉编译链安装后,总结一下整个过程,方便后来的研究者们,少走点弯路. 关于xilinx-arm-linux交叉编译链的安装,网上一搜一大把,可是有的资料中的资源 ...

  4. 监听图片src发生改变时的事件

    $img.on('load', function() { $img.attr("src", getBase64Image($img.get(0))); $img.off('load ...

  5. 2010-10-08在浏览器中兼容+jQuery3

    一.实现背景图片铺满(兼容各种浏览器) <script type="text/javascript"> $(document).ready(function() { $ ...

  6. RandomAccessFile多线程下载

    public class DownloadServer { ; private static String fileUrl = "https://dldir1.qq.com/qqtv/mac ...

  7. MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.2 Static Map with Two Layers

    MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.2 Static Map with Two Layers 一.前言 上一篇博客< ...

  8. learning makefile automatic dependency generation

  9. js运行机制

    情况一 script标签里面的运行顺序是同步的 遇到settimeout的时候就会变异步,最后执行 执行顺序为1342 情况二 只输出a 情况三 输出4444 异步队列插入的时间和执行时间 for循环 ...

  10. Python编程高级特性--迭代器

    一.简单介绍 直接作用于for循环的数据类型有以下几种: 集合数据类型: list 例如:list = ["yuhaohao", "lisheng", &quo ...