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字符串对其居中显示的方法
Jul 11 Python
Django框架下在URLconf中指定视图缓存的方法
Jul 23 Python
Python中Collections模块的Counter容器类使用教程
May 31 Python
PYTHON 中使用 GLOBAL引发的一系列问题
Oct 12 Python
利用python实现数据分析
Jan 11 Python
Python实现的爬虫功能代码
Jun 24 Python
在Python中使用AOP实现Redis缓存示例
Jul 11 Python
Python 处理数据的实例详解
Aug 10 Python
python中的不可变数据类型与可变数据类型详解
Sep 16 Python
Python Selenium 之关闭窗口close与quit的方法
Feb 13 Python
python字典的遍历3种方法详解
Aug 10 Python
Python warning警告出现的原因及忽略方法
Jan 31 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将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
详解WordPress开发中用于获取分类及子页面的函数用法
2016/01/08 PHP
PHP常见字符串操作函数与用法总结
2019/03/04 PHP
菜鸟javascript基础整理1
2010/12/06 Javascript
浅谈javascript中的作用域
2012/04/07 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
js实现的在线调色板功能完整实例
2016/12/21 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
浅析Javascript中双等号(==)隐性转换机制
2017/10/27 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
vue实现键盘输入支付密码功能
2018/08/18 Javascript
使用elementUI实现将图片上传到本地的示例
2018/09/04 Javascript
Vue.js实现大屏数字滚动翻转效果
2019/11/29 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
用python 制作图片转pdf工具
2015/01/30 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
解决python3中cv2读取中文路径的问题
2018/12/05 Python
python中partial()基础用法说明
2018/12/30 Python
对python 多线程中的守护线程与join的用法详解
2019/02/18 Python
Python3 把一个列表按指定数目分成多个列表的方式
2019/12/25 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
scrapy利用selenium爬取豆瓣阅读的全步骤
2020/09/20 Python
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
以设计师精品品质提供快速时尚:Mostata
2019/05/10 全球购物
土木工程个人自荐信范文
2013/11/30 职场文书
学生感冒英文请假条
2014/02/04 职场文书
岗位职责风险防控
2014/02/18 职场文书
项目合作意向书模板
2014/07/29 职场文书
1000字打架检讨书
2014/11/03 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
民事调解协议书
2016/03/21 职场文书
24句精辟的现实社会语录,句句扎心,道尽人性
2019/08/29 职场文书
导游词之岳阳楼
2019/09/25 职场文书
一文读懂navicat for mysql基础知识
2021/05/31 MySQL