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 相关文章推荐
简单介绍利用TK在Python下进行GUI编程的教程
Apr 13 Python
python的keyword模块用法实例分析
Jun 30 Python
python实现连续图文识别
Dec 18 Python
详解python多线程之间的同步(一)
Apr 03 Python
python面向对象法实现图书管理系统
Apr 19 Python
如何使用Flask-Migrate拓展数据库表结构
Jul 24 Python
python flask几分钟实现web服务的例子
Jul 26 Python
django将数组传递给前台模板的方法
Aug 06 Python
Python3从零开始搭建一个语音对话机器人的实现
Aug 23 Python
Python倒排索引之查找包含某主题或单词的文件
Nov 13 Python
python利用google翻译方法实例(翻译字幕文件)
Sep 21 Python
Python创建简单的神经网络实例讲解
Jan 04 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
强烈推荐:php.ini中文版(2)
2006/10/09 PHP
php二维数组排序方法(array_multisort usort)
2013/12/25 PHP
php的sso单点登录实现方法
2015/01/08 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
2015/12/28 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
PHP邮箱验证示例教程
2016/06/01 PHP
javascript 的Document属性和方法集合
2010/01/25 Javascript
IE下双击checkbox反应延迟问题的解决方法
2014/03/27 Javascript
js单词形式的运算符
2014/05/06 Javascript
nodejs 的 session 简单使用
2016/06/06 NodeJs
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
ionic实现底部分享功能
2017/05/11 Javascript
Angularjs上传图片实例详解
2017/08/06 Javascript
vue2.0模拟锚点的实例
2018/03/14 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
2019/07/06 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
原生js实现分页效果
2020/09/23 Javascript
Pyramid添加Middleware的方法实例
2013/11/27 Python
Pycharm 设置自定义背景颜色的图文教程
2018/05/23 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
学python安装的软件总结
2019/10/12 Python
PyQT5速成教程之Qt Designer介绍与入门
2020/11/02 Python
节省高达65%的城市景点费用:Go City
2019/07/06 全球购物
营业员演讲稿
2013/12/30 职场文书
师范毕业生自我鉴定
2014/01/15 职场文书
先进工作者获奖感言
2014/02/08 职场文书
2014年父亲节活动方案
2014/03/06 职场文书
金融管理专业毕业生求职信
2014/03/12 职场文书
法人代表授权委托书
2014/04/08 职场文书
继承权公证书
2014/04/09 职场文书
政法干警核心价值观心得体会
2014/09/11 职场文书
学校领导班子四风对照检查材料
2014/09/27 职场文书
财务工作个人总结
2015/02/27 职场文书
《画家和牧童》教学反思
2016/02/17 职场文书
创业计划书之川味火锅店
2019/09/02 职场文书
MySQL中varchar和char类型的区别
2021/11/17 MySQL