python实现电子产品商店


Posted in Python onFebruary 26, 2019

利用python实现以下功能:基于python下的电子产品商店

电子产品商店

v0.1

请选择商品:

=============================

1       Apple Watch          ¥3299.00

--------------------------------------

2       AirPods           ¥1288.00

--------------------------------------

3       Home Pod            ¥1299.00

--------------------------------------

请输入商品Id(回车去结账,0清空购物车):1

--------------------------------------

Id:1

名称:Apple Watch

价格:¥3299.00

库存:100

请输入购买数量:2

--------------------------------------

Apple Watch(¥3299) * 2 =¥6598.00

--------------------------------------

总金额:¥6598.00

请输入商品Id(回车去结账,0清空购物车):2

--------------------------------------

Id:2

名称:AirPods

价格:¥1288.00

库存:100

请输入购买数量:2

--------------------------------------

Apple Watch(¥3299.00) * 2 =¥6598.00

AirPods(¥1288.00) * 2      =¥2576.00

--------------------------------------

总金额:¥9174.00

1.首先,先在ProcessOn上画出一个基本的流程图,使自己有一个清晰的逻辑,如何去写这个项目,流程图如下:

python实现电子产品商店

2.其次,再列举出来这个项目中需要用到的类都有哪些,各自包含的属性是什么以及定义的都有哪些函数。然后在ProcessOn中 创建一个UML模板(从上往下依次是类名,属性,函数名),模板如下:

python实现电子产品商店

3.根据流程图和UML模板编写程序,代码如下:

(1)定义一个类名为Goods的类       

# 商品类
class Goods(object):
 def __init__(self,name,price,stock):
 self.id = 0
 self.name = name
 self.price = price
 self.stock = stock
 # 当打印对象时,输出的内容
 def __str__(self):
 return 'id:%s\n' \
  '名称:%s\n' \
  '价格:%s\n' \
  '库存:%s\n' % (self.id,self.name,self.price,
    self.stock)
 
 
if __name__ == '__main__':
 goods = Goods('Apple pods',2999,100)
 print(goods)
 goods2 = Goods('Apple Watch',3666,100)
 print(goods2)

(2)定义一个类名为Cartitem的类 

from goods import Goods
 
class CartItem(object):
 # 购物车商品
 def __init__(self,goods,count):
 self.goods = goods
 self.count = count
 
 def __str__(self):
 # %f是小数类型的占位符
 return '%s(¥%.2f)*%s' % (self.goods.name,
     self.goods.price,self.count)
 
 # 计算商品小计
 def amout(self):
 return self.goods.price * self.count
 
 
if __name__ == '__main__':
 goods = Goods('Apple pods',2999,100)
 # 创建购物车商品对象,需要传入一个商品对象
 item = CartItem(goods,2)
 money = item.amout()
 print(money)

(3)最后把前两个类整合一下,实现具体的功能:      

from goods import Goods
from cart import CartItem
 
class Shop(object):
 """商店"""
 def __init__(self):
 # 存储所有商品
 self.shops = []
 # 存储购物车商品
 self.cart = []
 # 加载商品
 self.load()
 
 def load(self):
 """加载商品"""
 self.add(Goods('Apple Watch', 3299, 100))
 self.add(Goods('AirPods', 1288, 100))
 self.add(Goods('Home Pod', 1299, 100))
 self.add(Goods('iPhone X', 6288, 100))
 
 def add(self, good):
 """
 设置新商品的id,添加到列表中
 :param good: 新商品
 :return: None
 """
 good.id = len(self.shops) + 1
 self.shops.append(good)
 
 def print_line(self):
 
 print('-'*50)
 
 def print_double_line(self):
 print('='*50)
 
 def list(self):
 """列出所有商品"""
 print('请选择商品:')
 self.print_double_line()
 # 遍历商品列表
 for g in self.shops:
 
  print('%s %s %s' % (g.id, g.name, g.price))
  self.print_line()
 
 def list_cart(self):
 """展示购物车商品,计算总价"""
 self.print_line()
 total = 0.0
 for item in self.cart:
  print('%s =¥%s' % (item, item.amout()))
  total += item.amout()
 self.print_line()
 print('总金额:¥%.2f' % total)
 
 def add_to_cart(self):
 """添加商品到购物车"""
 print('\n')
 g_id = input('请输入商品Id(回车去结账,0清空购物车):')
 
 if len(g_id) == 0:
  # 结账
  total = 0.0
  for item in self.cart:
 
  total += item.amout()
  self.print_line()
  print('请支付:¥%.2f' % total)
 
  # 清空购物车
  self.cart.clear()
  print('支付成功!')
 
 elif g_id == '0':
  self.cart.clear()
  print('购物车已清空!')
 else:
  # 计算商品索引
  idx = int(g_id) - 1
  # 取出商品
  goods = self.shops[idx]
  self.print_line()
  print(goods)
 
  count = int(input('请输入购买数量:'))
  # 判断数量是否大于库存量
  while count > goods.stock:
  count = int(input('没有这么多商品,请重新输入:'))
 
  # 如果商品已经在购物车中,修改商品数量
  # 变量表示在购物车中是否有这个商品
  is_exsts = False
  for item in self.cart:
  if item.goods == goods:
   # 说明在购物车中有该商品
   is_exsts = True
   item.count += count
   # 减少库存
   goods.stock -= count
 
  # 如果执行到这,is_exsts的值还是False,说明购物车中没有该商品
  if is_exsts == False:
  # 把商品添加到购物车
  goods.stock -= count
  self.cart.append(CartItem(goods, count))
 
  # 展示购物车商品,计算总价
  self.list_cart()
 
 def run(self):
 """运行应用程序"""
 print('智游电子产品商店')
 print('v1.0')
 print('\n')
 
 self.list()
 
 while True:
  self.add_to_cart()
 
shop = Shop()
shop.run()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
十个Python程序员易犯的错误
Dec 15 Python
python下setuptools的安装详解及No module named setuptools的解决方法
Jul 06 Python
Python探索之ModelForm代码详解
Oct 26 Python
Python实现的tcp端口检测操作示例
Jul 24 Python
Python语言进阶知识点总结
May 28 Python
python ChainMap 合并字典的实现步骤
Jun 11 Python
Python Django简单实现session登录注销过程详解
Aug 06 Python
Python高级property属性用法实例分析
Nov 19 Python
Python while循环使用else语句代码实例
Feb 07 Python
基于Python正确读取资源文件
Sep 14 Python
深度学习小工程练习之垃圾分类详解
Apr 14 Python
Python find()、rfind()方法及作用
Dec 24 Python
Python selenium根据class定位页面元素的方法
Feb 26 #Python
python实现诗歌游戏(类继承)
Feb 26 #Python
Python实现简单查找最长子串功能示例
Feb 26 #Python
基于Python实现用户管理系统
Feb 26 #Python
python selenium firefox使用详解
Feb 26 #Python
Django实现学员管理系统
Feb 26 #Python
Python实现读取txt文件中的数据并绘制出图形操作示例
Feb 26 #Python
You might like
php array_intersect()函数使用代码
2009/01/14 PHP
php采集时被封ip的解决方法
2010/08/29 PHP
php var_export与var_dump 输出的不同
2013/08/09 PHP
php银联网页支付实现方法
2015/03/04 PHP
twig模板获取全局变量的方法
2016/02/05 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
PHP微信H5支付开发实例
2018/07/25 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
2016/09/21 Javascript
微信小程序前端源码逻辑和工作流
2016/09/25 Javascript
原生js实现弹出层效果
2017/01/20 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
vue实现表格增删改查效果的实例代码
2017/07/18 Javascript
NodeJS收发GET和POST请求的示例代码
2017/08/25 NodeJs
基于js中的原型(全面讲解)
2017/09/19 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
VuePress 快速踩坑小结
2019/02/14 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
Vue 一键清空表单的实现方法
2020/02/07 Javascript
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
Python实现比较两个文件夹中代码变化的方法
2015/07/10 Python
Python程序中的观察者模式结构编写示例
2016/05/27 Python
python 读取文件并把矩阵转成numpy的两种方法
2019/02/12 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
CSS3 animation ? steps 函数详解
2019/08/30 HTML / CSS
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
FLIR美国官网:热成像, 夜视和红外摄像系统
2018/07/13 全球购物
如何理解transaction事务的概念
2015/05/27 面试题
企业消防安全制度
2014/02/02 职场文书
师说教学反思
2014/02/07 职场文书