拿到要求真不知道怎么写,不能还要写个商城页面吧;

最后还是用了input()模拟用户操作吧- -!不就操作个字典吗(字典模拟商品数据)。

python版本:

  1. >>>import sys
  2. >>>print (sys.version)
  3. 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:43:06) [MSC v.1600 32 bit (Intel)]
  1. #这里用字典的话就没有定义商品编号所以此程序不支持同个商品同时买俩件- -!用户可以从购物车添加商品和删除商品和结算,查看购物车和余额。
  2.  
  3. goods_list = {'g1':128,'g2':39,'g3':2.5} #创建一个三个商品的字典模拟商品数据
  4.  
  5. class user(object): #定义一个用户的类及用户具有的操作方法
  6. def __init__(self,ngoods,shop_cart={},balance=300): #这里用户属性中默认300块钱,用户购物车也用字典来模拟数据
  7. self.balance=balance
  8. self.shop_cart={}
  9. self.ngoods=ngoods
  10. def addgoods(self,ngoods_num):#定义用户添加商品到购物车方法当作用户对象的属性
  11.  
  12. if ngoods_num:
  13. self.shop_cart[ngoods_num]=goods_list[ngoods_num]#用户选择的商品添加到购物车字典
  14. #print (self.shop_cart)#调试
  15. self.show_shop_cart()#调用了下面的展示购物车方法
  16. else:
  17. print ("you don't chose!")
  18.  
  19. def delgoods(self,dgoods_num):#定义用户从购物车删除商品方法
  20. if dgoods_num:
  21.  
  22. self.shop_cart.pop(dgoods_num)#将用户所选商品从购物车删除
  23. self.show_shop_cart()
  24.  
  25. else:
  26. print("you don't chose!")
  27.  
  28. def settlement(self):#定义结算方法
  29. sum_price=sum(self.shop_cart.values())#计算购物车商品的价格和
  30. #print (sum_price)#调试
  31. #print (self.balance)#调试
  32.  
  33. if sum_price > self.balance:#如果用户余额balance小于购物车商品总价
  34. print ('Sorry, your credit is running low!')#提示余额不足
  35. else:
  36. self.balance=self.balance - sum_price#结账
  37. self.shop_cart.clear() #清空用户购物车
  38. print ('settlement success! your balance:%d' %(self.balance)) #果断改掉了之前用“+”的习惯
  39.  
  40. def show_shop_cart(self):#定义一个展示用户购物车方法
  41. #print (self.shop_cart)
  42. for k,v in self.shop_cart.items():
  43. shop_infor = '''
  44. %s:¥%s
  45. '''%(k, v)
  46. print(shop_infor)
  47.  
  48. def index():#定义一个商品展示方法
  49. for k,v in goods_list.items():
  50. goods_infor='''
  51. %s:¥%s
  52. '''%(k,v)
  53. print(goods_infor)
  54. index()
  55.  
  56. ngoods = 1#先初始化ngoods一个值 使之进入循环
  57.  
  58. while ngoods != 'q':
  59. ngoods=input('chose your goods(s:结算,i:商品展示,c:购物车,q:关闭商城):')
  60. if 'p1' in dir():#如果对象p1存在将不在重新创建,否则每次循环创建一个- -!
  61. pass
  62. else:
  63. p1= user(ngoods) #创建用户对象p1
  64. if ngoods in goods_list.keys():
  65.  
  66. p1.addgoods(ngoods)
  67. elif ngoods =="i":
  68. index()
  69. elif ngoods[0]=='-' and ngoods[1:] in goods_list.keys():#这里用“-”模拟用户想要删除的商品操作,
  70. # so,此时的ngoods[1:]即为商品
  71. p1.delgoods(ngoods[1:])
  72. elif ngoods=='c':
  73. p1.show_shop_cart()
  74. elif ngoods=='s':
  75. p1.settlement()
  76. index()
  77. else:
  78. if ngoods !='q':
  79. print ("input Error!")

老男孩python自动化运维作业2的更多相关文章

  1. 老男孩python自动化运维作业1

    #!/usr/bin/env pthon #字典操作三级菜单 “b”返回上一级菜单,“q”退出. menu={"BJ":{"cp":{1:1,2:2,3:3}, ...

  2. Day1 老男孩python自动化运维课程学习笔记

    2017年1月7日老男孩python自动化运维课程正式开课 第一天学习内容: 上午 1.python语言的基本介绍 python语言是一门解释型的语言,与1989年的圣诞节期间,吉多·范罗苏姆为了在阿 ...

  3. 老男孩Python自动化运维视频

    链接:https://pan.baidu.com/s/1VLXJ0RZr39kpSGthkLkgmA 密码私聊我

  4. python自动化运维学习第一天--day1

    学习python自动化运维第一天自己总结的作业 所使用到知识:json模块,用于数据转化sys.exit 用于中断循环退出程序字符串格式化.format字典.文件打开读写with open(file, ...

  5. Python自动化运维:技术与最佳实践 PDF高清完整版|网盘下载内附地址提取码|

    内容简介: <Python自动化运维:技术与最佳实践>一书在中国运维领域将有“划时代”的重要意义:一方面,这是国内第一本从纵.深和实践角度探讨Python在运维领域应用的著作:一方面本书的 ...

  6. 【目录】Python自动化运维

    目录:Python自动化运维笔记 Python自动化运维 - day2 - 数据类型 Python自动化运维 - day3 - 函数part1 Python自动化运维 - day4 - 函数Part2 ...

  7. python自动化运维篇

    1-1 Python运维-课程简介及基础 1-2 Python运维-自动化运维脚本编写 2-1 Python自动化运维-Ansible教程-Ansible介绍 2-2 Python自动化运维-Ansi ...

  8. Python自动化运维的职业发展道路(暂定)

    Python职业发展之路 Python自动化运维工程 Python基础 Linux Shell Fabric Ansible Playbook Zabbix Saltstack Puppet Dock ...

  9. Python自动化运维 技术与最佳实践PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:7bl4 一.内容简介 <python自动化运维:技术与最佳实践>一书在中国运维领域将有"划时代"的重要意义:一方面,这是国内第一本从纵.深和实践角度探 ...

随机推荐

  1. 2016-11-02: boost::enable_shared_from_this

    使用场景 当类对象被shared_ptr管理时,需要在类自己定义的函数中把当前对象作为参数传递给其他函数时,必须传递一个shared_ptr,否则就不能保持shared_ptr管理这个类对象的语义.因 ...

  2. SequoiaDB 笔记

    SequoiaDB 笔记 这几天翻了翻SequoiaDB的代码,记了点笔记.不保证下面内容的正确性(肯定有错的地方) 个人观感 优点 代码还不错,设计也算简洁. EDU和CB的使用让整个系统变得简单很 ...

  3. css3 text-overflow属性

    页面: <ul> <li>· 测试测试测试测试测试测试</li> <li>· 测试测试测试测试测试测试</li> <li>· 测 ...

  4. java类型占用字节数&类型转换

    1.整型类型              存储需求     bit数    取值范围      备注int                 4字节           4*8 short         ...

  5. 传说中的requestAnimFrame

    //让浏览器以10ms绘制 兼容写法                window.requestAnimFrame = (function() {                    return ...

  6. select 一直返回0

    select设置超时时间后一直返回零,是因为每次select后监听的fd_set都被重置,解决方法就是每次重新设置

  7. SpringBoot-Learning

    SpringBoot-Learning 本项目内容为Spring Boot教程程序样例. 作者博客:http://blog.didispace.com Spring Boot系列博文:http://b ...

  8. 并发编程中.net与java的一些对比

    Java在并发编程中进行使用java.util.concurrent.atomic来处理一些轻量级变量 如AtomicInteger AtomicBoolean等 .Net中则使用Interlocke ...

  9. Jquery--JS的函数包

    Jquery-----JS的函数包,直接来调用方法. 一.基本知识 用法:把jquery-1.7.2.js直接复制到要做的网站项目中,拖拽引用和JS用法一样. 二.选择器 [1]基本: 1.取ID:v ...

  10. 重走java--Step 2

    java基础语法(一) 1.java基本数据类型 byte:1个字节,8bit有符号数据类型boolean:2个字节,16bit布尔数值char:2个字节,16bit的Unicode字符类型int:4 ...