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脚本在Linux下实现部分Bash Shell的教程
Apr 17 Python
python监控进程脚本
Apr 12 Python
python批量替换多文件字符串问题详解
Apr 22 Python
Python面向对象基础入门之设置对象属性
Dec 11 Python
对Python信号处理模块signal详解
Jan 09 Python
在python带权重的列表中随机取值的方法
Jan 23 Python
Python中的支持向量机SVM的使用(附实例代码)
Jun 26 Python
详解Python绘图Turtle库
Oct 12 Python
python和JavaScript哪个容易上手
Jun 23 Python
详解Pytorch显存动态分配规律探索
Nov 17 Python
Django中日期时间型字段进行年月日时分秒分组统计
Nov 27 Python
python实现学员管理系统(面向对象版)
Jun 05 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下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
ThinkPHP实现ajax仿官网搜索功能实例
2014/12/02 PHP
ThinkPHP项目分组配置方法分析
2016/03/23 PHP
PHP模板引擎Smarty内建函数详解
2016/04/11 PHP
javascript单引号和双引号的区别和处理
2014/05/14 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
2015/09/25 Javascript
仅一个form表单 js实现注册信息依次填写提交功能
2016/06/12 Javascript
jQuery模拟下拉框选择对应菜单的内容
2017/03/07 Javascript
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
如何为vuex实现带参数的 getter和state.commit
2019/01/04 Javascript
jquery插件懒加载的示例
2020/10/24 jQuery
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
python调用短信猫控件实现发短信功能实例
2014/07/04 Python
python实现数据库跨服务器迁移
2018/04/12 Python
BP神经网络原理及Python实现代码
2018/12/18 Python
简单了解python关系(比较)运算符
2019/07/08 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
python palywright库基本使用
2021/01/21 Python
美国非常受欢迎的Spa品牌:Bliss必列斯
2018/04/10 全球购物
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
2014/09/09 面试题
新员工培训个人的自我评价
2013/10/09 职场文书
人事专员岗位职责
2013/11/20 职场文书
公司前台接待岗位职责
2013/12/03 职场文书
幼儿园安全责任书范本
2014/07/24 职场文书
2014年机关党委工作总结
2014/12/11 职场文书
中秋晚会致辞
2015/07/31 职场文书
MySQL索引失效的典型案例
2021/06/05 MySQL
浅谈Python魔法方法
2021/06/28 Java/Android
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技
PYTHON InceptionV3模型的复现详解
2022/05/06 Python
Java实现扫雷游戏详细代码讲解
2022/05/25 Java/Android