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中ConfigParse模块的用法
Sep 29 Python
从源码解析Python的Flask框架中request对象的用法
Jun 02 Python
浅析Python中的for 循环
Jun 09 Python
python如何让类支持比较运算
Mar 20 Python
selenium+python设置爬虫代理IP的方法
Nov 29 Python
python单向循环链表原理与实现方法示例
Dec 03 Python
tensorflow 限制显存大小的实现
Feb 03 Python
基于Tensorflow使用CPU而不用GPU问题的解决
Feb 07 Python
Python 随机生成测试数据的模块:faker基本使用方法详解
Apr 09 Python
Python实现文件压缩和解压的示例代码
Aug 12 Python
Python实例方法、类方法、静态方法区别详解
Sep 05 Python
python如何获取网络数据
Apr 11 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 文件缓存函数
2011/10/08 PHP
PHP实现的简单mock json脚本分享
2015/02/10 PHP
THINKPHP支持YAML配置文件的设置方法
2015/03/17 PHP
php如何获取文件的扩展名
2015/10/28 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
2016/10/25 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
JavaScript创建类/对象的几种方式概述及实例
2013/05/06 Javascript
js判断字符是否是汉字的两种方法小结
2014/01/03 Javascript
jQuery ajax调用WCF服务实例
2014/07/16 Javascript
Javascript验证上传图片大小[前台处理]
2014/07/18 Javascript
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
angularjs在ng-repeat中使用ng-model遇到的问题
2016/01/21 Javascript
基于javascript bootstrap实现生日日期联动选择
2016/04/07 Javascript
JavaScript闭包的简单应用
2017/09/01 Javascript
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
实例教学如何写vue插件
2017/11/30 Javascript
NodeJs form-data格式传输文件的方法
2017/12/13 NodeJs
vue实现鼠标移入移出事件代码实例
2019/03/27 Javascript
JS document form表单元素操作完整示例
2020/01/13 Javascript
[04:29]2016国际邀请赛中国区预选赛Ehome战队教练采访
2016/06/27 DOTA
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
Python读写文件方法总结
2015/06/09 Python
Python3中的2to3转换工具使用示例
2015/06/12 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
python+selenium实现163邮箱自动登陆的方法
2017/12/31 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
2018/12/07 Python
python http基本验证方法
2018/12/26 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
tensorflow 环境变量设置方式
2020/02/06 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
2020/03/24 Python
python闭包与引用以及需要注意的陷阱
2020/09/18 Python
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
创建卫生先进单位实施方案
2014/03/10 职场文书
新学期新寄语,献给新生们!
2019/11/15 职场文书
浅谈redis五大数据结构和使用场景
2021/04/12 Redis