'''

5:购物车类,包含的功能如下,请自行设计这个类以及类里面的方法:
1)用户输入工资后,打印商品列表(商品列表自行设计展示模式)
2)允许用户根据商品编号去选择商品
3)用户选择商品后,检查余额是否足够,够的话直接扣款,不够的话就对用户做出提醒
4)用户可以随时退出,退出时打印用户的购买商品以及余额
'''
class ShoppingTrolley:

    commodity_list = {'1':{'computer':'8000'},'2':{'phone':'6000'},'3':{'camera':'4000'},'4':{'keyboard':'2000'},'5':{'t-shirt':'500'},'6':{'chocolate':'100'},'7':{'banana':'20'}}
salary = input('请输入您的工资:') # 打印商品列表
def print_commodity(self):
com_list = self.commodity_list
for key1 in com_list.keys():
for key2 in com_list[key1]:
print('''
商品编号:{0}
商品名称:{1}
商品价格:{2}
'''.format(key1,key2,com_list[key1][key2]) ) return com_list # 选择商品
def choose_commodity(self):
while True:
com_id = input('请输入商品编号库;,若退出请输入q:')
if com_id in self.commodity_list.keys() or com_id == 'q':
break
else:
print('您输入的商品编号不存在!')
return com_id # 计算金额
def charge(self):
com_list = self.print_commodity()
money_total = int(self.salary)
com_buy_list = []
while True:
com_id = self.choose_commodity() # 获取要购买商品编号
if com_id == 'q': # 若获取的商品编号为q,退出循环
break
# 根据获取的商品编号,取出对应的商品名称和商品价格
for key,value in com_list[com_id].items():
com_name = key
com_price = int(value) if money_total - com_price >= 0: # 计算当前余额是否足够购买当前商品
money_total -= com_price
print('你购买的商品是{0},花费{1}元,扣除费用后余额{2}元'.format(com_name,com_price,money_total))
com_buy_list.append(com_name) # 每次购买成功后,记录购买的商品
else: # 余额不足时,退出循环
print('你购买的商品是{0},需花费{1}元,余额不足!'.format(com_name,com_price))
break
print('您购买的商品为:{0},余额{1}元'.format('、'.join(com_buy_list),money_total)) s1 = ShoppingTrolley()
s1.charge(


												

python - work5 - 类与对象 - 拓展题的更多相关文章

  1. python - work5 - 类与对象

    # -*- coding:utf-8 -*- '''@project: jiaxy@author: Jimmy@file: work_20181119.py@ide: PyCharm Communit ...

  2. 1.面向过程编程 2.面向对象编程 3.类和对象 4.python 创建类和对象 如何使用对象 5.属性的查找顺序 6.初始化函数 7.绑定方法 与非绑定方法

    1.面向过程编程 面向过程:一种编程思想在编写代码时 要时刻想着过程这个两个字过程指的是什么? 解决问题的步骤 流程,即第一步干什么 第二步干什么,其目的是将一个复杂的问题,拆分为若干的小的问题,按照 ...

  3. python的类和对象2(self参数)

    python的类和对象2(self参数) 1.python里面对象的方法都会有self参数,它就相当于C++里面的this指针:绑定方法,据说有了这个参数,Python 再也不会傻傻分不清是哪个对象在 ...

  4. Python初识类与对象

    Python初识类与对象 类与对象 世界观角度分析类与对象 类是一个抽象的概念,而对象是一个实体的存在,对象由类创造而出,每个对象之间互相独立互不影响,一个对象可以同时拥有多个类的方法,实例化就是通过 ...

  5. python的类和对象

    一.面向对象和面向过程 1.1面向过程的特点 优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可. 缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身. 1.2面 ...

  6. python的类与对象

    类与对象 1.什么是类 类和函数一样是程序编程的一种方式,在处理某些问题的时候类比函数更加适合让编程变得简化,在python里面函数式编程和类编程都是为了简化代码的一种编程方式,具体应用那个则由具体问 ...

  7. python的类和对象——番外篇(类的静态字段)

    什么是静态字段 在开始之前,先上图,解释一下什么是类的静态字段(我有的时候会叫它类的静态变量,总之说的都是它.后面大多数情况可能会简称为类变量.): 我们看上面的例子,这里的money就是静态字段,首 ...

  8. python的类和对象——进阶篇

    写在前面的话 终于,又到了周五.当小伙伴们都不再加班欢欢喜喜过周末的时候,我刚刚写完这一周的游戏作业,从面对晚归的紧皱眉头到现在的从容淡定,好像只有那么几周的时间.突然发现:改变——原来这么简单.很多 ...

  9. Python 定制类与其对象的创建和应用

    1.创建新类Athlete,创建两个唯一的对象实例sarah james,他们会继承Athlete类的特性 >>> class Athlete: def __init__(self, ...

随机推荐

  1. C# 初始学习心情

    当听说需要转做.net的时候.内心是忐忑不安的.因为突然从前端转向后端,几乎完全颠倒了...一个注重界面实现功能.一个注重逻辑的开发,然并卵,服从需求吧. 虽说公司需要你转.但是时间是不允许的,所以只 ...

  2. 大家一起和snailren学java-(序)

    由于最近在面试实习的时候,发现自己的java基础还是不是特别的扎实.因此再重新深入学习一下java.每天学习一点,都能进步一些. 用书<Thinking in java><effec ...

  3. SharePoint Server和Office 365之间的混合模式集成概述

    正如您可能已经知道的那样,云中的Microsoft Office 365和SharePoint Server 2013/2016内部部署可以通过多种方式协同工作.这些通常被称为混合模式,因为它们将功能 ...

  4. web端 repeat和简单控件

    <%@ %> - 这里面写一些声明和引用的<% %> - 编写C#代码的<%= %><%# %> Repeater - 重复器     相当于winfo ...

  5. UVA 10537 Toll! Revisited (逆推,最短路)

    从终点逆推,d[u]表示进入u以后剩下的货物,那么进入u之前的货物数量设为y,d[u] = x,那么y-x=ceil(y/20.0)=(y-1)/20+1=(y+19)/20. (y-x)*20+r= ...

  6. noip模拟赛#14

    #14: T1:f[x]=x-1(x&1)||x/2(x&1=0) 求[n,m]有多少个数可以通过变换得到k.(1e9). =>好像cf上看过类似的题,用二进制的方式来写.不过我 ...

  7. JavaScript 获取对象中第一个属性

    使用 Object.keys(object) 可以取出属性名为数组,但会打乱顺序 严格意义上对象中是只有映射关系而没有顺序的,但是在存储结构里是有顺序的,如果想获取存储结构里的第一个属性可以使用for ...

  8. smooth_L1_loss_layer.cu解读 caffe源码初认识

    .cpp是cpu上运行的代码,.cu是gpu上运行的代码. 这是smooth_L1_loss_layer.cu的前向传播部分 #include "caffe/fast_rcnn_layers ...

  9. shell脚本,awk里面的BEGIN讲解。

    解释: BEGIN{}这个特殊的pattern最常用的就是 变量赋值. BEGIN这个pattern就是文件没开始读的时候 执行 awk 'BEGIN{FS=":";OFS=&qu ...

  10. 01_3Java Application初步

    01_3Java Application初步 l Java源文件以“java”为扩展名.源文件的基本组成部分是类(class),如本例中的HelloWorld类. l 一个源文件中最多只有一个publ ...