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 相关文章推荐
使用FastCGI部署Python的Django应用的教程
Jul 22 Python
Python实现嵌套列表去重方法示例
Dec 28 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
Jan 09 Python
python实现转盘效果 python实现轮盘抽奖游戏
Jan 22 Python
Python中三元表达式的几种写法介绍
Mar 04 Python
django中使用POST方法获取POST数据
Aug 20 Python
用python中的matplotlib绘制方程图像代码
Nov 21 Python
python实现12306登录并保存cookie的方法示例
Dec 17 Python
Python urllib2运行过程原理解析
Jun 04 Python
Python3如何使用range函数替代xrange函数
Oct 05 Python
python如何进行基准测试
Apr 26 Python
python执行js代码的方法
May 13 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中smarty变量修饰用法实例分析
2015/06/11 PHP
PHP高效获取远程图片尺寸和大小的实现方法
2017/10/20 PHP
PHP实现的XXTEA加密解密算法示例
2018/08/28 PHP
php curl优化下载微信头像的方法总结
2018/09/07 PHP
JQuery里选择超链接的实现代码
2011/05/22 Javascript
事件绑定之小测试  onclick &amp;&amp; addEventListener
2011/07/31 Javascript
JavaScript操作XML 使用百度RSS作为新闻源示例
2012/02/17 Javascript
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
关于javascript模块加载技术的一些思考
2014/11/28 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
Web开发必知Javascript技巧大全
2016/02/23 Javascript
喜大普奔!jQuery发布 3.0 最终版
2016/06/12 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
2016/09/23 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
jQuery使用Layer弹出层插件闪退问题
2016/12/22 Javascript
JS获取多维数组中相同键的值实现方法示例
2017/01/06 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
2017/03/30 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
vue的for循环使用方法
2019/02/12 Javascript
微信小程序上线发布流程图文详解
2019/05/06 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
JS实现提示效果弹出及延迟隐藏的功能
2019/08/26 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
python中循环语句while用法实例
2015/05/16 Python
Python小白垃圾回收机制入门
2020/06/09 Python
如何向scrapy中的spider传递参数的几种方法
2020/11/18 Python
北京捷通华声语音技术有限公司Java软件工程师笔试题
2012/04/10 面试题
大学生会计职业生涯规划范文
2014/02/28 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
英文诗歌翻译方法(赏析)
2019/08/16 职场文书
php png失真的原因及解决办法
2021/11/17 PHP
5道关于python基础 while循环练习题
2021/11/27 Python
httpclient调用远程接口的方法
2022/08/14 Java/Android