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实现微信公众平台自定义菜单实例
Mar 20 Python
python删除列表中重复记录的方法
Apr 28 Python
python实现带错误处理功能的远程文件读取方法
Apr 29 Python
Django与JS交互的示例代码
Aug 23 Python
简单的python协同过滤程序实例代码
Jan 31 Python
pyqt5 实现在别的窗口弹出进度条
Jun 18 Python
Django对数据库进行添加与更新的例子
Jul 12 Python
Python学习笔记之Django创建第一个数据库模型的方法
Aug 07 Python
Python实现括号匹配方法详解
Feb 10 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
Mar 08 Python
Python爬虫自动化爬取b站实时弹幕实例方法
Jan 26 Python
http通过StreamingHttpResponse完成连续的数据传输长链接方式
Feb 12 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
截获网站title标签之家内容的例子
2006/10/09 PHP
PHP 类型转换函数intval
2009/06/20 PHP
yii框架中的Url生产问题小结
2012/01/16 PHP
PHP Curl多线程原理实例详解
2013/11/06 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
2015/10/20 PHP
javascript Array对象基础知识小结
2010/11/16 Javascript
JavaScript日期类型的一些用法介绍
2015/03/02 Javascript
javascript结合CSS实现苹果开关按钮特效
2015/04/07 Javascript
JS中多种方式创建对象详解
2016/03/22 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
三种带箭头提示框总结实例
2016/06/14 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
js 图片转base64的方式(两种)
2018/04/24 Javascript
详解vue的diff算法原理
2018/05/20 Javascript
详解JavaScript中操作符和表达式
2018/09/12 Javascript
Vue高版本中一些新特性的使用详解
2018/09/25 Javascript
微信小程序HTTP接口请求封装的实现
2019/02/21 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
使用grappelli为django admin后台添加模板
2014/11/18 Python
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
node.js获取参数的常用方法(总结)
2017/05/29 Python
windows下python之mysqldb模块安装方法
2017/09/07 Python
浅谈Series和DataFrame中的sort_index方法
2018/06/07 Python
Python实现注册、登录小程序功能
2018/09/21 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
使用python matplotlib 画图导入到word中如何保证分辨率
2020/04/16 Python
Html5 实现微信分享及自定义内容的流程
2019/08/20 HTML / CSS
基于Modernizr 让网站进行优雅降级的分析
2013/04/21 HTML / CSS
新加坡第一大健康与美容零售商:屈臣氏新加坡(Watsons Singapore)
2020/12/11 全球购物
毕业生自荐书
2014/02/03 职场文书
小学生读书感言
2014/02/12 职场文书
私人房屋买卖协议书
2014/10/04 职场文书
前台接待岗位职责范本
2015/04/03 职场文书
Nginx本地目录映射实现代码实例
2021/03/31 Servers
Java 数组的使用
2022/05/11 Java/Android