python基础升级 第四课 练习与作业 瞌睡龙龙


1.创建一个名为phone的类
 1)类实例成员变量有screeen_size、price、brand
 2)给成员变量创建访问及设置方法
 3)定义play方法,功能为打印:play game
 4)定义sendMessage方法,功能为打印:text message
 5)定义powerOff方法,功能为打印:power off
 6)创建get_info方法,打印对象的相关信息
 7)实例化类phone(),对象名为phone1, 屏幕尺寸为5.5,价格为6288,
品牌为apple
 8)调用3,4,5,6方法,查看结果
 9)实例化类phone(),对象名为phone2, 屏幕尺寸为5,价格为1999,品
牌为mi.
 10)调用3,4,5,6方法,查看结果
class phone():
    def __init__(self,screen_size,price,brand):
        self.screen_size=screen_size
        self.price=price
        self.brand=brand
  
    def play(self,):
        print('play game')
        
    def sendMessage(self,):
        print('text message')
        
    def powerOff(self,):
        print('powerOff')
        
    def get_info(self,):
        print('screen_size:',self.screen_size)
        print('price:',self.price)
        print('brand:',self.brand)
    
phone1=phone(5.5,6288,'apple')
phone1.play()
phone1.sendMessage()
phone1.powerOff()
phone1.get_info()
phone2=phone(5,1999,'MI')
phone1.play()
phone1.sendMessage()
phone1.powerOff()
phone2.get_info()


2.设计以下公司类,并实例化不同对象进行检查
 类成员
 类下公司的总个数
 类方法
 返回公司类共有多少个公司实例
 实例变量
 公司名,简介,利润,销售额,总成本,雇员姓名,雇员人员。
 实例方法要求有:
 招聘人才(每招一个人会有成本产生,影响雇员列表,人数,总成本)
 解雇人员(每解雇一个人会有成本产生,影响雇员列表,人数,总成本)
 公司广告推广(影响总成本)
 交社保(按公司雇员总人数计算,影响总成本)
 交税(按公司雇员总人数计算,影响总成本)
 销售(按销售件数*价格计算销售额,利润按销售额*利润率进行计算利润。)
 获取公司雇员列表
 获取公司净利润
class comp():
    comp_namelist=[]
    comp_total=0
    
    def __init__(self,comp_name,intro,profit_margin,salenum,price,cost,employee_num,employee_name):
        self.comp_name=comp_name
        self.intro=intro
        self.profit_margin=profit_margin
        self.salenum=salenum
        self.price=price
        self.cost=cost
        self.employee_num=employee_num
        self.employee_name=employee_name        
        self.employee_list=[]        
        self.sale=0
        comp.comp_total+=1
        comp.comp_namelist.append(comp_name)
        
        
        
    def recruit(self,):
        self.cost+=0.1
        self.employee_list.append(self.employee_name)
        self.employee_num=len(self.employee_list)
        return self.employee_num
        
        
    def fire(self,):
        self.cost+=1
        self.employee_list.remove(employee_name)
        self.employee_num-=1
        return self.employee_num
        
    def adver(self,):
        self.cost+=1000
        return self.cost
        
    def social_security(self,):
        self.cost=self.cost-employee_num*10
        return self.cost
        
    def tax(self,):
        self.cost+=100
        return self.cost
        
    def sale(self,):
        self.sale=self.salenum*self.price
        return self.sale
    
    def toal_employee_list(self,):
        self.employee_list.append(self.employee_name)
        return self.employee_list  
    
    def profit(self,):
        self.sale=self.salenum*self.price
        self.profit=self.sale*self.profit_margin
        return self.profit
        
 
        
    @classmethod
    def get_comp_total(cls,):
        print('目前共',comp.comp_total,'家企业,分别是:')
        for x in range(comp.comp_total):        
            print(comp.comp_namelist[x])
        

AI1company=comp('AI1company','basicAI  factory',0.15,2000,18,1111,3,'tom')
AI2company=comp('AI2company','primaryAI  factory',0.25,1000,20,555,2,'david')
AI3company=comp('AI3company','seniorAI  factory',0.3,500,40,222,2,'jack')

AI1company.toal_employee_list()

AI1company.profit()

comp.get_comp_total()




3.设计一个叫cinema的电影院的类,包含:
 类方法:
 初始化方法,并初始相应的类变量实例变量
 getSales(获取全部电影院实际销售的方法)的电影院
 实例方法:
 saleTickets方法,要求更新实例的销售总额及类的销售总额
 类变量:
 类下所有实例电影院的数量,销售额总和
 实例变量:
 电影院名称,位置,销售额
 创建一个miniCinema迷你电影院的类,继承自cinema类
 重写卖票方法,大于100元的票价加入打9折扣的功能。
 对miniCinema实例进行调用体现多态性
class cinema():
    cinema_total= 0
    sale_total=0
    cinema_list=[]
    
    def __init__(self,name,address,sale):
        self.name=name
        self.address=address
        self.sale=sale
        cinema.cinema_total+=1
        cinema.sale_total+=sale
        cinema.cinema_list.append(name)
        
    def saleTickets(self,sale):
        cinema.sale_total=cinema.sale_total-self.sale+sale
        self.sale=sale
        return cinema.sale_total
        
    @classmethod
    def getSales(self,):

sale_total=sum(self.sale)

        return cinema.sale_total
    
    @classmethod
    def get_info(self,):
        return cinema.cinema_list
C1=cinema('C1','No.1',111)
C2=cinema('C2','No.2',222)    
C3=cinema('C3','No.3',333)

class miniCinema(cinema):
    sale=0
    def __init__(self,ticket_price,ticket_num):
        self.ticket_price=ticket_price
        self.ticket_num=ticket_num
        
    def saleTickets(self,):
        if self.ticket_price>100:
            sale=self.ticket_price*0.9*self.ticket_num
            return sale
        else:
            sale=self.ticket_price*self.ticket_num
            return sale
            
    
C4=miniCinema(200,300)

C4.saleTickets()

def func(obj):
    obj.saleTickets()
    
func(C4)


4.导入os包
 创建递归循环完成一个目录的遍历
 如果下还有一个目录,依次进行遍历
import os  
  
def foo(path):  
    filelist = os.listdir(path)  
    allfile = []  
    for filename in filelist:  
        filepath = os.path.join(path,filename)  
        if os.path.isdir(filepath):  
            foo(filepath)  
        print(filepath)
allfile = foo('D:\TDdownload') 


5.导入PIL包
 如果没有该包,请自行安装后导入
 将一张图片进行尺寸缩放,颜色调整后保存。
 (dir,help函数查看库)
import image

IM1=Image.open('a.jpg')
IM1.show()
IM1.resize((100,100))
return IM1

这一题看网上说PIL装起来挺麻烦而且容易搞死机,就没去装库,回头空了再试试,先用空白命令模拟一下(-_-||)




作业:Python中对序列的切片访问,是左闭右开。
 现请您
 创建一个可被迭代的类
 改变默认的切片访问方式为左闭右闭
 举例:c1=youclassname([0,1,2,3,4,5,6,7,8,9]
 c1[2:7] 返回2,3,4,5,6,7
class mycut():
    def __init__(self, values=None):
        if values is None:
            self.values = []
        else:
            self.values = values
    def __getitem__(self, key):
        if type(key)==slice:
            start=key.start
            stop=key.stop+1
            if key.stop==None:
                stop=-1
            if key.start==None:
                start=0
            return self.values[start:stop]
        else:
            return str(self.values[key])
        
    def __iter__(self):
        pass
        return iter(self.values)
        
c1=mycut([1,2,3,4,5,6])
c1[1:3]
已邀请:

qq用户321660

赞同来自: 宋小宝


龙龙作业完成得真棒~
怪我,居然没注意到你早就交了作业,才刚到看到。

类的两题都完成了。包括设计,与电影院的继承

公司类的那题,如果有更多的注释就更好了。

重写类对象的切片,完成得很好。知道是调用__getitem__这个方法。

要回复问题请先登录注册

返回顶部