Python实现购物程序思路及代码


Posted in Python onJuly 24, 2017

要求:

启动程序后,让用户输入工资,然后打印出带有序号的商品列表
用户输入商品序号购买相应的商品,或者输入 ' q ' 退出购买界面
选择商品后,检查余额是否足够,够则直接扣款,不够则提示余额不足
用户每购买一件商品后,或者输入 ' q ' 退出购买界面后,提示:是否继续购买?(Y/N),实现多次购买
若用户购买了商品,打印出购买的商品列表,总金额,余额;若用户没买任何商品,打印:交易结束,购物失败
Readme:

运行程序,输入薪水,根据商品列表的序号选择购买的商品,可以选择多次购买,或者不购买

流程图:

代码:

# 简单的购物小程序

product_list = [
  ['surface pro 4', 7800],
  ['dell xps 15', 12000],
  ['macbook', 12000],
  ['小米6', 2499],
  ['iphone7', 4600],
  ['坚果Pro', 1499]
]
shopping_list = []


# 判断输入的薪水格式是否正确
while True:
  salary = input('\n请输入您的薪水:')
  if not salary.isdigit():          # 薪水不是数字,结束循环
    print('\n输入格式有误!请重新输入...')
    continue
  break


balance = salary = int(salary)

print('\n-----------欢迎购买------------\n')

# 生成带序号的商品列表
for index, item in enumerate(product_list):
  print(index, item)


# 判断输入的序号是否符合要求
while True:

  while True:
    i = input('\n输入您要购买的商品序号,或输入 q 取消购买:')
    if i == 'q':                 # 输入 q 退出购买界面
      while True:
        a = input('\n是否继续购买?(Y/N):')
        if a != 'n' and a != 'N' and a != 'y' and a != 'Y':
          print('\n输入格式有误,请重试...')
          continue
        elif a == 'y' or a == 'Y':         # 继续购买
          break
        else:                    # 购买完毕
          if balance == salary:       # 没有买任何东西
            print('\n交易结束,购买失败...')
            exit()
          else:               # 结算  
            print('\n您已成功购买以下商品:\n')
            for item in shopping_list:
              print(item)
            print('\n共消费金额 %d 元,余额 %d 元' % (salary - balance, balance))
            exit()
      continue

    if not i.isdigit():             # 序号不是数字,结束循环
      print('\n输入格式有误!请重新输入...')
      continue

    i = int(i)

    if i < 0 or i >= len(product_list):  # 序号范围不正确,结束循环
      print('\n此商品不存在,请重新输入...')
      continue
    break

  product = product_list[i]
  price = int(product[1])

  # 判断余额是否充足,够就直接扣款,不够提醒
  if price <= balance:
    balance -= price
    shopping_list.append(product_list[i])
    print('\n您已成功购买 %s ,当前余额为 %d 元' %(product, balance))
  else:
    print('\n购买失败,您的余额不足...')

  while True:
    a = input('\n是否继续购买?(Y/N):')
    if a != 'n' and a != 'N' and a != 'y' and a != 'Y':
      print('\n输入格式有误,请重试...')
      continue
    break

  if a == 'Y' or a == 'y':
    continue
  else:
    break

if balance == salary:
  print('\n交易结束,购买失败...')
  exit()
else:
  print('\n您已成功购买以下商品:\n')
  for item in shopping_list:
    print(item)
  print('\n共消费金额 %d 元,余额 %d 元' %(salary-balance, balance))
  exit()
Python 相关文章推荐
重命名批处理python脚本
Apr 05 Python
Python 字符串操作方法大全
Mar 11 Python
Python下singleton模式的实现方法
Jul 16 Python
Python XML RPC服务器端和客户端实例
Nov 22 Python
Python and、or以及and-or语法总结
Apr 14 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
Apr 27 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
Jul 02 Python
python 一维二维插值实例
Apr 22 Python
Python3读取和写入excel表格数据的示例代码
Jun 09 Python
python lambda的使用详解
Feb 26 Python
Python3中PyQt5简单实现文件打开及保存
Jun 10 Python
 python中的元类metaclass详情
May 30 Python
python实现上传下载文件功能
Nov 19 #Python
分享几道你可能遇到的python面试题
Jul 24 #Python
python 判断是否为正小数和正整数的实例
Jul 23 #Python
python WindowsError的错误代码详解
Jul 23 #Python
python实现发送邮件功能
Jul 22 #Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
Jul 22 #Python
Python原始字符串与Unicode字符串操作符用法实例分析
Jul 22 #Python
You might like
php设计模式 Mediator (中介者模式)
2011/06/26 PHP
php使用百度ping服务代码实例
2014/06/19 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
PHP经典设计模式之依赖注入定义与用法详解
2019/05/21 PHP
javascript 获取网页参数系统
2008/07/19 Javascript
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
2016/06/20 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
js中获取键盘事件的简单实现方法
2016/10/10 Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
2016/10/21 Javascript
解析jQueryEasyUI的使用
2016/11/22 Javascript
小发现之浅谈location.search与location.hash的问题
2017/06/23 Javascript
jquery点击回车键实现登录效果并默认焦点的方法
2018/03/09 jQuery
json数据传到前台并解析展示成列表的方法
2018/08/06 Javascript
使用canvas实现一个vue弹幕组件功能
2018/11/30 Javascript
小程序实现订单倒计时功能
2019/04/23 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
ElementUI Tree 树形控件的使用并给节点添加图标
2020/02/27 Javascript
Jquery cookie插件实现原理代码解析
2020/08/04 jQuery
Django的HttpRequest和HttpResponse对象详解
2018/01/26 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
CSS3实现瀑布流布局与无限加载图片相册的实例代码
2016/12/22 HTML / CSS
Nisbets爱尔兰:英国最大的厨房和餐饮设备供应商
2019/01/26 全球购物
酒店工作职员求职简历的自我评价
2013/10/23 职场文书
审核会计岗位职责
2013/11/08 职场文书
邮政员工辞职信
2014/01/16 职场文书
生日礼品店创业计划书范文
2014/03/21 职场文书
小学毕业典礼主持词
2014/03/27 职场文书
职务说明书范文
2014/05/07 职场文书
小学竞选班长演讲稿
2014/09/09 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
幼师辞职信范文大全
2015/05/12 职场文书
解决Navicat for Mysql连接报错1251的问题(连接失败)
2021/05/27 MySQL
MYSQL 运算符总结
2021/11/11 MySQL