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 subprocess模块学习总结
Mar 13 Python
为python设置socket代理的方法
Jan 14 Python
python中的编码知识整理汇总
Jan 26 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
Mar 12 Python
python django使用haystack:全文检索的框架(实例讲解)
Sep 27 Python
Flask框架WTForm表单用法示例
Jul 20 Python
python装饰器练习题及答案
Nov 01 Python
使用pandas的box_plot去除异常值
Dec 10 Python
Python列表解析操作实例总结
Feb 26 Python
500行python代码实现飞机大战
Apr 24 Python
python3爬虫GIL修改多线程实例讲解
Nov 24 Python
Python代码风格与编程习惯重要吗?
Jun 03 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
改变Apache端口等配置修改方法
2008/06/05 PHP
利用PHP制作简单的内容采集器的原理分析
2008/10/01 PHP
php线性表的入栈与出栈实例分析
2015/06/12 PHP
PHP新特性详解之命名空间、性状与生成器
2017/07/18 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
PHP实现简单日历类编写
2020/08/28 PHP
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
jquery delay()介绍及使用指南
2014/09/02 Javascript
重写document.write实现无阻塞加载js广告(补充)
2014/12/12 Javascript
微信小程序 picker-view 组件详解及简单实例
2017/01/10 Javascript
NodeJS基础API搭建服务器详细过程记录
2017/04/01 NodeJs
简单谈谈原生js的math对象
2017/06/27 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
vue中使用iview自定义验证关键词输入框问题及解决方法
2018/03/26 Javascript
vue 组件使用中的一些细节点
2018/04/25 Javascript
echarts设置图例颜色和地图底色的方法实例
2018/08/01 Javascript
React SSR样式及SEO的实践
2018/10/22 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
vue中datepicker的使用教程实例代码详解
2019/07/08 Javascript
js get和post请求实现代码解析
2020/02/06 Javascript
JS实现简易计算器
2020/02/14 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
[01:01:01]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第一场 10.29
2020/10/29 DOTA
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
Python3读取Excel数据存入MySQL的方法
2018/05/04 Python
详解如何为eclipse安装合适版本的python插件pydev
2018/11/04 Python
Python判断一个三位数是否为水仙花数的示例
2018/11/13 Python
详解Pycharm安装及Django安装配置指南
2020/09/15 Python
DAWGS鞋官方网站:鞋,凉鞋,靴子
2016/10/04 全球购物
火车的故事教学反思
2014/02/11 职场文书
支部鉴定材料
2014/06/02 职场文书
2014年为民办实事工作总结
2014/12/20 职场文书
保送生自荐信
2015/03/06 职场文书
中学生运动会广播稿
2015/08/19 职场文书