1. 基本要求:
    用户入口
    1、商品信息存在文件里
    2、已购商品、余额记录,长期保存, 即第一次启动是需要输入预算的,以后就拿剩下的钱买东西
  2.  
  3. 商家入口
    1、可以添加商品,删除商品,修改商品价格
    2、按q可以退出
  4.  
  5. 实现:
    1、用到listdic
    2if判断 whilefor循环
    3、用文件记录商品信息和购物记录
  1. '''
  2. 购物车
  3. 用户入口
  4. 、商品信息存在文件里
  5. 、已购商品、余额记录,长期保存,
  6. 即第一次启动是需要输入预算的,以后就拿剩下的钱买东西
  7.  
  8. 商家入口
  9. 、可以添加商品,修改商品价格
  10.  
  11. 按q可以退出
  12. '''
  13. import os
  14. #定义函数
  15. #客户端
  16. def customer(budgetfile,productfile):
  17. #显示或获取当前预算
  18. budgetfd = open(budgetfile, 'r', encoding="utf-8")
  19. print("目前已购买:")
  20. cartdata=budgetfd.readline()
  21. cartlist=[]
  22. budget=''
  23. while cartdata:
  24. cartlist.append(cartdata.split(" ")[].strip())
  25. print(cartdata.split(" ")[])
  26. budget=cartdata.split(" ")[]
  27. cartdata=budgetfd.readline()
  28.  
  29. flag=True
  30. if budget=='':
  31. while flag:
  32. budget=input("请输入购物预算: ")
  33. if budget.isdigit():
  34. budget=int(budget)
  35. flag=False
  36. else:
  37. print("必须输入数字。")
  38. continue
  39. else:
  40. print("您的余额是:"+budget)
  41. budget = int(budget)
  42. budgetfd.close()
  43.  
  44. shopping=True
  45. while shopping:
  46. # 先显示当前商品列表
  47. productfd = open(productfile, 'r', encoding='utf-8')
  48. print("目前商品列表:")
  49. data = productfd.readline()
  50. datadic = {}
  51. while data:
  52. datadic[data.split(" ")[].strip()] = data.split(" ")[].strip()
  53. print(data)
  54. data = productfd.readline()
  55. productfd.close()
  56.  
  57. choice=input("输入你要买的商品名称,按q退出:")
  58. if choice=='q':
  59. shopping=False;
  60. return True
  61. elif choice in datadic:
  62. if int(datadic[choice])<budget:
  63. fd=open(budgetfile,'a',encoding='utf-8')
  64. budget-=int(datadic[choice])
  65. print("您的余额是:"+str(budget))
  66. cartlist.append(choice)
  67. fd.write(choice+' '+str(budget)+'\n')
  68. fd.close()
  69. print("目前已购买:")
  70. for key in cartlist:
  71. print(key)
  72. else:
  73. print("预算不足,不能购买。")
  74. else:
  75. print("不存在该商品。")
  76.  
  77. #商户端
  78. def boss(productfile):
  79. #打印目前商品列表
  80.  
  81. fd=open(productfile,'r',encoding='utf-8')
  82. fd.close()
  83.  
  84. while True:
  85. #先显示当前商品列表
  86. fd.close()
  87. fd = open(productfile, 'r+', encoding='utf-8')
  88. print("目前商品列表:")
  89. data = fd.readline()
  90. datadic = {}
  91. while data:
  92. datadic[data.split(" ")[].strip()] = data.split(" ")[].strip()
  93. print(data.split(" ")[].strip(), data.split(" ")[].strip())
  94. data = fd.readline()
  95. fd.close()
  96.  
  97. operation = input("请输入您要做的操作:1表示增加商品、2表示删除商品、3表示修改商品价格、q表示退出程序: ")
  98. if operation=='':
  99. fd = open(productfile, 'a', encoding='utf-8')
  100. string=input("请输入要添加的商品及价格,用空格分隔:")
  101. key=string.split(" ")[].strip()
  102. value=string.split(" ")[].strip()
  103. if key not in datadic:
  104. fd.write(string+'\n')
  105. datadic[key]=value
  106. else:
  107. print("已存在该商品,不能添加")
  108. fd.close()
  109. elif operation=='':
  110. string = input("请输入要删除的商品名称: ")
  111. fd=open(productfile,'w',encoding='utf-8')
  112. if string in datadic:
  113. datadic.pop(string)
  114. else:
  115. print("要删除的商品不存在。")
  116. for key in datadic:
  117. fd.write(key + ' ' + datadic[key] + '\n')
  118. fd.close()
  119. elif operation=='':
  120. string=input("请输入要修改的商品名称和价钱,用空格分隔:")
  121. k=string.split(" ")[]
  122. v=string.split(" ")[]
  123. if k in datadic:
  124. datadic[k]=v
  125. else:
  126. print("要修改的商品不存在。")
  127. fd = open(productfile, 'w', encoding='utf-8')
  128. for key in datadic:
  129. fd.write(key+' '+datadic[key]+'\n')
  130. fd.close()
  131. elif operation=='q':
  132. fd.close()
  133. flag=False
  134. return True
  135. else:
  136. print("请输入准确的命令。")
  137. operation = input("请输入您要做的操作:1表示增加商品、2表示删除商品、3表示修改商品价格、q表示退出程序: ")
  138.  
  139. #脚本主程序
  140. exitflag=False
  141.  
  142. Ident=input("您是客户还是商户:")
  143. while not exitflag:
  144. if Ident=="客户":
  145. exitflag=customer("cartlist.txt","productlist.txt")
  146. elif Ident=="商户":
  147. exitflag=boss("productlist.txt")
  148. elif Ident=="q":
  149. exitflag=True
  150. print("退出程序。")
  151. else:
  152. print("请输入准确的字眼。")
  153. Ident = input("您是客户还是商户:")
  1.  
  1.  

python--购物车优化的更多相关文章

  1. python购物车优化

    一.需求分析 拥有用户接口和商家接口 用户能够进行消费记录查询,充值,购物等功能,消费记录存储于数据库 商家可以进行商品的增删改等操作 二.程序流程图 程序大致流程图如下: 三.代码实现 本程序分成两 ...

  2. 简单的python购物车

                 这几天,一直在学python,跟着视频老师做了一个比较简单的python购物车,感觉不错,分享一下 products = [['Iphone8',6888],['MacPro ...

  3. python性能优化

      注意:本文除非特殊指明,”python“都是代表CPython,即C语言实现的标准python,且本文所讨论的是版本为2.7的CPython. python为什么性能差: 当我们提到一门编程语言的 ...

  4. Python内存优化

    实际项目中,pythoner更加关注的是Python的性能问题,之前也写过一篇文章<Python性能优化>介绍Python性能优化的一些方法.而本文,关注的是Python的内存优化,一般说 ...

  5. python 购物车小程序

    python 购物车小程序 功能要求:1.启动程序后,输入用户名密码后,让用户输入工资,然后打印商品列表2.允许用户根据商品编号购买商品3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒4. ...

  6. Python内存优化:Profile,slots,compact dict

    实际项目中,pythoner更加关注的是Python的性能问题,之前也写过一篇文章<Python性能优化>介绍Python性能优化的一些方法.而本文,关注的是Python的内存优化,一般说 ...

  7. Python性能优化(转)

    分成两部分:代码优化和工具优化 原文:http://my.oschina.net/xianggao/blog/102600 阅读 Zen of Python,在Python解析器中输入 import ...

  8. python的优化机制与垃圾回收与gc模块

    python属于动态语言,我们可以随意的创建和销毁变量,如果频繁的创建和销毁则会浪费cpu,那么python内部是如何优化的呢? python和其他很多高级语言一样,都自带垃圾回收机制,不用我们去维护 ...

  9. python购物车小案例

    python购物车小案例# 案列描述:有一个小型水果店里面有水果(苹果:¥8/kg,香蕉:¥5/kg,芒果:¥15/kg,葡萄:¥12/kg),客户带了100元钱进店选购水果.# 1.客户输入相应序号 ...

  10. Python性能优化方案

    Python性能优化方案 从编码方面入手,代码算法优化,如多重条件判断有限判断先决条件(可看 <改进python的91个建议>) 使用Cython (核心算法, 对性能要求较大的建议使用C ...

随机推荐

  1. Solr(五)Solr实现简单的类似百度搜索高亮功能-2代码

    Solr高亮 一 在配置文件中,配置支持Ik分词器的Field 修改文件: cd /usr/local/tomcat/apache-tomcat-8.5.13/solr_home/Test/conf/ ...

  2. vue指令v-once示例解析

    只渲染元素和组件一次.随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过.这可以用于优化更新性能. <!-- 单个元素 --> <span v-once>This ...

  3. public static void main(string[] args)解释

    这个问题困扰我好久了,今天就一查究竟,毕竟我好奇心比较重 1. why “public” 因为Java程序是通过jvm虚拟机调用的,所以main()函数要是想被调用,必须是public 2.why “ ...

  4. 函数&闭包

    作用域链 闭包的理解 所谓"闭包",指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分. 下面来看一个例子: function ...

  5. 前端到后台ThinkPHP开发整站(3)

    继续我的这个项目的第三晚的开发了,时间比较少,今晚写的代码不多,今晚仍然是造轮子写一个公共的控制器和一个公共的JS.直接上代码吧! 以下是一个公共的控制器,后台控制器都继承于它,构造函数中进行验证当前 ...

  6. HBase集群安装部署

    0x01 软件环境 OS: CentOS6.5 x64 java: jdk1.8.0_111 hadoop: hadoop-2.5.2 hbase: hbase-0.98.24 0x02 集群概况 I ...

  7. ECC椭圆曲线详解(有具体实例)

    前言 ECC英文全称"Ellipse Curve Cryptography" 与传统的基于大质数因子分解困难性的加密方法不同,ECC通过椭圆曲线方程式的性质产生密钥 ECC164位 ...

  8. 如何输入EOF

    很多线上笔试的编程题要求能循环处理多个case,需使用while(scanf("%s",tmp)!=EOF)语句.EOF表示文件结束符,但是在本机的编译环境中,如何在控制台输入EO ...

  9. CSS 中的rem,em,vh,vw一次说清楚

    关于css中的长度单位,我们用的最多就是px,因为他简单直接.但是当一套方案匹配不同终端时,px就会显得过于生硬,不容易变通. 然而rem,em,vh,vw就可以有效的解决这一问题.让我们来看看这些东 ...

  10. iOS程序员的React Native开发工具集

    本文整理了React Native iOS开发过程中有用的工具.服务.测试.库以及网站等. 工具 你可以选择不同的开发环境:DECO.EXPO或者你可以使用Nuclide+Atom,目前我使用EXPO ...