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中的Numeric包和Numarray包使用教程
Apr 13 Python
python引用DLL文件的方法
May 11 Python
python常用知识梳理(必看篇)
Mar 23 Python
在Python中使用defaultdict初始化字典以及应用方法
Oct 31 Python
Django的Modelforms用法简介
Jul 27 Python
如何在Django中使用聚合的实现示例
Mar 23 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
Apr 10 Python
vscode写python时的代码错误提醒和自动格式化的方法
May 07 Python
详解python方法之绑定方法与非绑定方法
Aug 17 Python
如何一键升级Python所有包
Nov 05 Python
学点简单的Django之第一个Django程序的实现
Feb 24 Python
python三子棋游戏
May 04 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
Discuz 模板引擎的封装类代码
2008/07/18 PHP
php错误、异常处理机制(补充)
2012/05/07 PHP
PHP 年龄计算函数(精确到天)
2012/06/07 PHP
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
php curl post 时出现的问题解决
2014/01/30 PHP
php静态文件返回304技巧分享
2015/01/06 PHP
php判断表是否存在的方法
2015/06/18 PHP
33道php常见面试题及答案
2015/07/06 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
2019/05/28 PHP
IE iframe的onload方法分析小结
2010/01/07 Javascript
javascript插入样式实现代码
2012/02/22 Javascript
thinkphp实现无限分类(使用递归)
2015/12/19 Javascript
JS显示日历和天气的方法
2016/03/01 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
微信小程序 Page()函数详解
2016/10/17 Javascript
AngularJS压缩JS技巧分析
2016/11/08 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
微信小程序开发入门基础教程
2017/04/19 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
2018/08/06 Javascript
最适应的vue.js的form提交涉及多种插件【推荐】
2018/08/27 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
python版学生管理系统
2018/01/10 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
对python3标准库httpclient的使用详解
2018/12/18 Python
python判断字符串或者集合是否为空的实例
2019/01/23 Python
python修改字典键(key)的方法
2019/08/05 Python
TensorFlow加载模型时出错的解决方式
2020/02/06 Python
学习Python列表的基础知识汇总
2020/03/10 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
印度首个本地在线平台:nearbuy
2019/03/28 全球购物
环境保护与污染治理求职信
2014/07/16 职场文书
护理专业自荐信范文
2015/03/06 职场文书
小学六一儿童节活动总结
2015/05/05 职场文书
实施意见格式范本
2015/06/05 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL