Python实现的购物车功能示例


Posted in Python onFebruary 11, 2018

本文实例讲述了Python实现的购物车功能。分享给大家供大家参考,具体如下:

这里尝试用python实现简单的购物车程序。。。

基本要求:

用户输入工资,然后打印购物菜单
用户可以不断的购买商品,直到余额不够为止
退出时打印用户已购买的商品和剩余金额。。。

代码:

#!/usr/env python
#coding:utf-8
import re,math
def get_customer_salary():
  while True:
    salary=raw_input('Please input your monthly salary(a positive integer):')
    if __is_valid_num(salary):
      return int(salary)
    else:
      print '[warn] Please input a valid number!'
def __is_valid_num(num):
  p=re.compile(r'^\d+$')
  m=p.match(num)
  if m:
    return True
  else:
    return False
def get_customer_selection():
  while True:
    selection=raw_input('Please enter the goods number you want to buy:')
    if __is_valid_num(selection):
      if __is_a_valid_selection(int(selection)):
        return int(selection)
      else:
        print '[warn] Please enter a valid selection number'
    else:
      print '[warn] Please enter a valid number!\n'
def __is_a_valid_selection(selection):
  if 1<=selection<=get_total_amount_of_products():
    return True
  else:
    return False
def get_products_list():
  return {'Flower':50,'Perfume':300,'Shoes':600,'Clothing':800,'Alcohol':300,
       'Makeup':800,'Bike':1500,'Car':200000,'Apartment':5000000}
def get_total_amount_of_products():
  return len(get_products_list())
def mapping_type_code_for_products():
  return ['Flower','Perfume','Shoes','Clothing','Alcohol','Makeup','Bike','Car','Apartment']
def get_product_price(type_code):
  return get_products_list()[get_product_name(type_code)]
def get_product_name(type_code):
  return mapping_type_code_for_products()[type_code-1]
def get_lowest_price_of_products():
  price_list=[]
  for k,v in get_products_list().items():
    price_list.append(v)
  return min(price_list)
def get_highest_price_of_produces():
  price_list=[]
  for k,v in get_products_list().items():
    price_list.append(v)
  return max(price_list)
def still_can_buy_something(left_money):
  if left_money<get_lowest_price_of_products():
    return False
  else:
    return True
def still_want_to_buy_something():
  while True:
    answer=raw_input('Do you still want to buy something?(y/n):')
    result=is_a_valid_answer(answer)
    if result=='yes':return True
    if result=='no':return False
    print '[warn] Please enter [yes/no] or [y/n]!\n'
def is_a_valid_answer(answer):
  yes_pattern=re.compile(r'^[Yy][Ee][Ss]$|^[Yy]$')
  no_pattern=re.compile(r'^[Nn][Oo]$|^[Nn]$')
  if yes_pattern.match(answer):return 'yes'
  if no_pattern.match(answer):return 'no'
  return False
def show_shopping_list():
  counter=1
  for i in mapping_type_code_for_products():
    print '''''(%d) %s: %s RMB''' % (counter,i+' '*(10-len(i)),str(get_products_list()[i]))
    counter+=1
def is_affordable(left_money,product_price):
  if left_money>=product_price:
    return True
  else:
    return False
def time_needed_to_work_for_buying_products(salary,price):
  result=float(price)/salary
  return get_formatting_time(int(math.ceil(result)))
def get_formatting_time(months):
  if months<12:return ('%d months' % months)
  years=months/12
  months=months%12
  return ('%d years,%d months' % (years,months))
#主程序从这里开始
if __name__=='__main__':
  salary=get_customer_salary() #获取月工资
  total_money=salary
  shopping_cart=[] #初始化购物车
  while True:
    show_shopping_list() #打印购物列表
    #判断剩余资金是否能够购买列表中的最低商品
    if still_can_buy_something(total_money):
      selection=get_customer_selection() #获取用户需要购买的商品编号
      product_price=get_product_price(selection)#获取商品的价格
      product_name=get_product_name(selection)#获取商品的名称
      if total_money>=product_price:
        total_money-=product_price
        #打印购买成功信息
        print 'Congratulations!You bought a %s successfully!\n' % product_name
        shopping_cart.append(product_name)#将商品加入购物车
        print 'You still have %d RMB left\n' % total_money #打印剩余资金
        #判断是否还想购买其他商品
        if not still_want_to_buy_something():
          print 'Thank you for coming!'
          break
      else:
        #输出还需要工作多久才能购买
        format_time=time_needed_to_work_for_buying_products(salary,product_price-total_money)
        print 'Sorry,you can not afford this product!\n'
        print "You have to work '%s' to get it!\n" % format_time
        #判断是否还想购买其他商品
        if not still_want_to_buy_something():break
    else:
      print 'Your balance is not enough and can not continue to buy anything.'
      break
  #打印购物车列表
  print 'Now,your balance is %d,and\nYou have buy %s' % (total_money,shopping_cart)

运行效果:

Python实现的购物车功能示例

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Django中实现一个高性能计数器(Counter)实例
Jul 09 Python
Python实现子类调用父类的方法
Nov 10 Python
python单元测试unittest实例详解
May 11 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
Aug 23 Python
解决Python网页爬虫之中文乱码问题
May 11 Python
pygame游戏之旅 按钮上添加文字的方法
Nov 21 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
Dec 18 Python
python,Django实现的淘宝客登录功能示例
Jun 12 Python
python循环定时中断执行某一段程序的实例
Jun 29 Python
浅谈SciPy中的optimize.minimize实现受限优化问题
Feb 29 Python
Opencv python 图片生成视频的方法示例
Nov 18 Python
pyqt5打包成exe可执行文件的方法
May 14 Python
python PyTorch参数初始化和Finetune
Feb 11 #Python
Python装饰器用法示例小结
Feb 11 #Python
python PyTorch预训练示例
Feb 11 #Python
TensorFlow中权重的随机初始化的方法
Feb 11 #Python
python的staticmethod与classmethod实现实例代码
Feb 11 #Python
Python语言的变量认识及操作方法
Feb 11 #Python
利用Opencv中Houghline方法实现直线检测
Feb 11 #Python
You might like
推荐一篇入门级的Class文章
2007/03/19 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
php $_SERVER windows系统与linux系统下的区别说明
2014/02/14 PHP
PHP中soap的用法实例
2014/10/24 PHP
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
2014/11/19 PHP
php通过正则表达式记取数据来读取xml的方法
2015/03/09 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
JavaScript 数组详解
2013/10/10 Javascript
js获得网页背景色和字体色的方法
2014/03/21 Javascript
点击A元素触发B元素的事件在IE8下会识别成A元素
2014/09/04 Javascript
JQuery仿小米手机抢购页面倒计时效果
2014/12/16 Javascript
javascript禁止访客复制网页内容的实现代码
2015/08/05 Javascript
jquery+json实现动态商品内容展示的方法
2016/01/14 Javascript
微信小程序之小豆瓣图书实例
2016/11/30 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
详解基于webpack搭建react运行环境
2017/06/01 Javascript
JavaScript封装的常用工具类库bee.js用法详解【经典类库】
2018/09/03 Javascript
原生JS实现记忆翻牌游戏
2020/07/31 Javascript
Python中list列表的一些进阶使用方法介绍
2015/08/15 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
10分钟教你用Python实现微信自动回复功能
2018/11/28 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
Python2手动安装更新pip过程实例解析
2020/07/16 Python
python线程里哪种模块比较适合
2020/08/02 Python
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
中国跨境电商:Tomtop
2017/03/16 全球购物
Lentiamo荷兰:在线订购隐形眼镜、隐形眼镜液和太阳镜
2019/10/25 全球购物
eBay美国官网:eBay.com
2020/10/24 全球购物
Python如何实现单例模式
2016/06/03 面试题
Unix/Linux开发面试题
2016/08/16 面试题
自我鉴定怎么写
2014/01/12 职场文书
学生会副主席竞聘书
2014/03/31 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
vue实现水波涟漪效果的点击反馈指令
2021/05/31 Vue.js