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实现的DES加密算法和3DES加密算法实例
Jun 03 Python
python dataframe astype 字段类型转换方法
Apr 11 Python
Python 微信之获取好友昵称并制作wordcloud的实例
Feb 21 Python
Python面向对象之继承和多态用法分析
Jun 08 Python
python读csv文件时指定行为表头或无表头的方法
Jun 26 Python
python中eval与int的区别浅析
Aug 11 Python
django中使用事务及接入支付宝支付功能
Sep 15 Python
python tkinter控件布局项目实例
Nov 04 Python
Python 解析xml文件的示例
Sep 29 Python
Python 可视化神器Plotly详解
Dec 26 Python
Python字符串对齐、删除字符串不需要的内容以及格式化打印字符
Jan 23 Python
python 实现的车牌识别项目
Jan 25 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
Zend Guard一些常见问题解答
2008/09/11 PHP
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
PHP实现图片裁剪、添加水印效果代码
2014/10/01 PHP
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
PHP实现单例模式建立数据库连接的方法分析
2020/02/11 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
js弹出层包含flash 不能关闭隐藏的2种处理方法
2013/06/17 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
nodejs开发环境配置与使用
2014/11/17 NodeJs
JavaScript函数详解
2014/11/17 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
2015/03/18 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
Vue中img的src属性绑定与static文件夹实例
2017/05/18 Javascript
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
jQuery删除/清空指定元素的所有子节点实例代码
2019/07/04 jQuery
简单了解three.js 着色器材质
2020/08/03 Javascript
python 合并文件的具体实例
2013/08/08 Python
python解析html开发库pyquery使用方法
2014/02/07 Python
python通过pil将图片转换成黑白效果的方法
2015/03/16 Python
编写简单的Python程序来判断文本的语种
2015/04/07 Python
在主机商的共享服务器上部署Django站点的方法
2015/07/22 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
2017/08/03 Python
python 全局变量的import机制介绍
2017/09/07 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
Python ini文件常用操作方法解析
2020/04/26 Python
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
精彩的英文自荐信
2014/01/30 职场文书
社区关爱留守儿童活动方案
2014/08/22 职场文书
党的群众路线教育实践活动对照检查材料范文
2014/09/24 职场文书
七年级作文之我的梦想
2019/10/16 职场文书
laravel ajax curd 搜索登录判断功能的实现
2021/04/17 PHP
JavaCV实现照片马赛克效果
2022/01/22 Java/Android
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript