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之玩转字符串(1)
Sep 14 Python
Python中对元组和列表按条件进行排序的方法示例
Nov 10 Python
取numpy数组的某几行某几列方法
Apr 03 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
Aug 31 Python
Python3中bytes类型转换为str类型
Sep 27 Python
Python 变量类型详解
Oct 10 Python
Python常见数据结构之栈与队列用法示例
Jan 14 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
Feb 20 Python
Python基础学习之函数方法实例详解
Jun 18 Python
python傅里叶变换FFT绘制频谱图
Jul 19 Python
Python模块 _winreg操作注册表
Feb 05 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 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可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
php 特殊字符处理函数
2008/09/05 PHP
php判断并删除空目录及空子目录的方法
2015/02/11 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
js 新浪的一个图片播放图片轮换效果代码
2008/07/15 Javascript
js常用代码段整理
2011/11/30 Javascript
jquery链式操作的正确使用方法
2014/01/06 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
javascript 继承学习心得总结
2016/03/17 Javascript
一分钟理解js闭包
2016/05/04 Javascript
vue2 自定义动态组件所遇到的问题
2017/06/08 Javascript
javascript按顺序加载运行js方法
2017/12/01 Javascript
利用node实现一个批量重命名文件的函数
2017/12/21 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
Vue项目中ESlint规范示例代码
2019/07/04 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
Vue+Vuex实现自动登录的知识点详解
2020/03/04 Javascript
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
python算法学习之基数排序实例
2013/12/18 Python
Python使用smtp和pop简单收发邮件完整实例
2018/01/09 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
对pandas的层次索引与取值的新方法详解
2018/11/06 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
详解pytorch tensor和ndarray转换相关总结
2020/09/03 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
Python绘制词云图之可视化神器pyecharts的方法
2021/02/23 Python
英国领先的奢侈品零售商之一:CRUISE
2016/12/02 全球购物
美国农场鲜花速递:The Bouqs
2018/07/13 全球购物
接口的多继承会带来哪些问题
2015/08/17 面试题
学生的自我鉴定范文
2013/10/24 职场文书
三年级科学教学反思
2014/01/29 职场文书
党务公开方案
2014/05/06 职场文书
鼓舞士气的口号
2014/06/16 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
2014年社区工作总结
2014/11/18 职场文书