1. 功能要求:
    1.要求用户输入自己拥有的总资产,例如:30000
    2.显示商品列表的序号,商品名称,商品价格,让用户根据序号选择商品,然后加入购物车
    例如:
    1 Macbook 12000
    2 Logines 8730
    3 Villa 650000
    3.用户可以多次购买商品
    4.用户输入q退出|输入n结算
    5.结算的时候如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
  1. trades = [
    {"trade_name": "Macbook", "value": 12000},
    {"trade_name": "Gucci-glasses", "value": 6388},
    {"trade_name": "Logines", "value": 8730},
    {"trade_name": "Girlfriend", "value":23000},
    {"trade_name": "Tesla", "value": 476000},
    {"trade_name": "Diamond-ring", "value": 18800},
    {"trade_name": "Villa", "value": 6500000},
    ]
  1. trades = [
  2. {"trade_name": "Macbook", "value": 12000},
  3. {"trade_name": "Gucci-glasses", "value": 6388},
  4. {"trade_name": "Logines", "value": 8730},
  5. {"trade_name": "Girlfriend", "value":23000},
  6. {"trade_name": "Tesla", "value": 476000},
  7. {"trade_name": "Diamond-ring", "value": 18800},
  8. {"trade_name": "Villa", "value": 6500000},
  9. ]
  10. flag = 1
  11. shopping_cart = {}
  12. usr_fund = 0
  13. while flag:
  14. fund = input('尊敬的客户,请输出您的资产: ').strip()
  15. if fund.isdigit():
  16. usr_fund += int(fund) # 得到用户的总资产
  17. break
  18. else:
  19. print('您输入的金额有误,请重新输入')
  20.  
  21. while flag:
  22. for i in trades:
  23. print(range(len(trades)),i['trade_name'],i['value'])
  24. # 取得商品序号,商品和价钱
  25. res = input('请您输入商品序号或者N/Q结算或者退出: ').strip()
  26. if res.upper() =='Q': # 执行退出操作
  27. exit('有需要再来光顾哦!')
  28. elif res.upper() =='N': #执行结算操作
  29. while flag:
  30. if usr_fund < sum(shopping_cart.values()):
  31. # 如果用户金额小于结算金额
  32. cmd = input(f"您还差{(sum(shopping_cart.values()) - usr_fund)}元才能付款,输入1/0可以选择充值或取消购买").strip()
  33. if cmd == '':
  34. while 1:
  35. cmd_1 = input('充值金额: ').strip()
  36. if cmd_1.isdigit():
  37. usr_fund += int(cmd_1)
  38. break
  39. else:
  40. print('您输入的有误,请重新输入')
  41. elif cmd == '':
  42. exit('有需要再来光顾哦!')
  43. else:
  44. print('您输入的有误,请重新输入')
  45. else:
  46. print('您的购物车现在有: ')
  47. for i in shopping_cart:
  48. print(i,shopping_cart[i])
  49. print(f"您的余额还有{usr_fund - sum(shopping_cart.values())}元")
  50. break
  51. break
  52.  
  53. elif res.isdigit(): #如果用户输入的是序号,那就加入购物车
  54. res_1 = int(res)
  55. if res_1 - 1 in [range(len(trades)) for i in trades]: #如果用户输入的序号在商品列表中
  56. if trades[res_1]['trade_name'] not in shopping_cart:
  57. shopping_cart.setdefault(trades[res_1 -1]['trade_name'],trades[res_1 -1]['value'])
  58. else:
  59. shopping_cart[trades[res_1 -1]['trade_name']] += trades[res_1 -1]['value']
  60. print('\n'f"{trades[res_1 -1]['trade_name']}已添加到购物车,价值{trades[res_1 -1]['value']}元"'\n')
  61. else:
  62. print('您输入的有误,请重新输入')
  63. else:
  64. print('您输入的有误,请重新输入')

我心目中的Dream-购物车的更多相关文章

  1. 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

    原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http:/ ...

  2. 追逐心目中的那个Ta

    申明:全篇皆为作者臆想,浪漫主义代表派作品,若有雷同,纯属巧合 人生最难过的不就是在一无所有的年纪里遇到了最想呵护一生的人,而在拥有一切的时候却失去了不顾一切的心. 长夜漫漫,本是相思人,偏听多情曲, ...

  3. “造轮运动”之 ORM框架系列(二)~ 说说我心目中的ORM框架

    ORM概念解析 首先梳理一下ORM的概念,ORM的全拼是Object Relation Mapping (对象关系映射),其中Object就是面向对象语言中的对象,本文使用的是c#语言,所以就是.ne ...

  4. PHP中封装Redis购物车功能

    <?php // 服务层 namespace Common\Service; use Vendor\Func\Red; class CartService extends CommonServi ...

  5. 在vue中如何实现购物车checkbox的三级联动

    最近用vue写一个电商项目,自然就少不了要写一个购物车的相关页面,功能完整的购物车的checkbox应该是三级联动的,1级checkbox是选中购物车中所有的商品,2级checkbox是选中某个店铺下 ...

  6. 教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

    本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http://www.xiaohuar.com/,让你体验爬取校花的成就感. Scr ...

  7. 我心目中的Asp.net核心对象

    转:http://www.cnblogs.com/fish-li/archive/2011/08/21/2148640.html 阅读目录 开始 HttpRuntime HttpServerUtili ...

  8. 小白心目中的Java抽象类(abstract class)

    在java开发中,我们有时会定义了一个父类,这个父类只有对方法的描述,但却没有在父类中写出对方法的实现,这种被定义的方法称为抽象方法.那么理所当然,含有抽象方法的类就称为抽象类.用关键字abstrac ...

  9. Linux专家心目中的最佳Linux发行版有哪些?

    坦率地说,我对Linux桌面的关注程度多于对Linux发行版的关注.在我看来,桌面环境是创新不断的领域.我认为,如果某个发行版呼吁关注自己,可能哪里出了岔子.不过,有一些Linux发行版还是我青睐的. ...

随机推荐

  1. 树莓派3中编译Opencv3.4.10

    一.命令 -dev libv4l-dev libavcodec-dev libavformat-dev libswscale-dev cd wget http://sourceforge.net/pr ...

  2. 一道笔试题:给定编码规则,实现decode()方法

    public class CodeDecode {     /*变换函数encode()顺序考察已知字符串的字符,按以下规则逐组生成新字符串:       (1)若已知字符串的当前字符不是大于0的数字 ...

  3. Redis集群搭建(转自一菲聪天的“Windows下搭建Redis集群”)

    配置Redis参考:http://blog.csdn.net/zsg88/article/details/73715947 使用Ruby配置集群参考:https://www.cnblogs.com/t ...

  4. Swift ARC 自动引用计数

    1.ARC 引用类型在堆上的内存分配过程中有 8 字节的地址长度用来保存对象的引用计数,堆上的内存并不像栈上那样立即进行回收,系统会定时对堆上的内存进行检查,当某个实例不再被使用时,引用计数会变为 0 ...

  5. 基于Tcp协议的简单Socket通信实例(JAVA)

    好久没写博客了,前段时间忙于做项目,耽误了些时间,今天开始继续写起~ 今天来讲下关于Socket通信的简单应用,关于什么是Socket以及一些网络编程的基础,这里就不提了,只记录最简单易懂实用的东西. ...

  6. struts2 + urlrewrite 整合注意事项

    这几天业余时间在玩百度云,百度的云还是不错的,但是对于我这样的.NET程序员,有点不公平,没有.net虚机,不过也不是百度一家没有,基本都没有,有的都是那种开放云,自已在云端来部署安装软件的. 所以也 ...

  7. 【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-10底层驱动之I2C

    视频简介:该视频介绍iCore3应用开发平台中I2C通信的实现方法. 源视频包下载地址:链接:http://pan.baidu.com/s/1dF5Ssbn 密码:czw8 银杏科技优酷视频发布区:h ...

  8. Java编程的逻辑 (86) - 动态代理

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  9. precision scale

    precision意为“精密度.精确”(精度),表示该字段的有效数字位数了. scale意为“刻度.数值范围”(),表示该字段的小数位数. 举个简单的例子 123.45:precision = 5 , ...

  10. 超酷!纯CSS3烧烤动画实现教程

    今天在老外的网站上看到一款很有创意的纯CSS3动画,是模拟烧烤活动的.款动画模拟了一个烧烤架,烧烤架上的食物也都是用纯CSS3绘制而成,没有用一张图片,效果相当逼真.另外一个有意思的是,这个CSS3烧 ...