python基础入门升级版 第四课练习及作业

第4课练习与作业

第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,screeen_size,price,brand):
        self.__screeen_size = screeen_size
        self.__price = price
        self.__brand = brand
    def getSize(self,):
        return self.__screeen_size
    def setSize(self,screeen_size):
        self.__screeen_size = screeen_size
    def getPrice(self,):
        return self.__price
    def setPrice(self,price):
        self.__price = price
    def getBrand(self,):
        return self.__brand
    def setBrand(self,brand):
        self.__brand = brand
    def play(self,):
        print("play game")
    def sendMessage(self,):
        print("text message")
    def powerOff(self,):
        print("power off")
    def get_info(self,):
        print("屏幕尺寸:",self.__screeen_size,"价格:",self.__price,"品牌:",self.__brand)
    
phone1 = Phone(5.5,6288,"apple")
phone1.play()
phone1.sendMessage()
phone1.powerOff()
phone1.get_info()
phone2 = Phone(5,1999,"mi")
phone2.play()
phone2.sendMessage()
phone2.powerOff()
phone2.get_info()

结果:

play game

text message

power off

屏幕尺寸: 5.5 价格: 6288 品牌: apple

play game

text message

power off

屏幕尺寸: 5 价格: 1999 品牌: mi

第2题:完成简单类的设计

设计以下公司类,并实例化不同对象进行检查

 类成员

 类下公司的总个数

 类方法

 返回公司类共有多少个公司实例

 实例变量

 公司名,简介,利润,销售额,总成本,雇员姓名,雇员人员。

 实例方法要求有:

 招聘人才(每招一个人会有成本产生,影响雇员列表,人数,总成本)

 解雇人员(每解雇一个人会有成本产生,影响雇员列表,人数 ,总成本)

 公司广告推广 ( 影响总成本 )

 交社保 ( 按公司雇员总人数计算,影响总成本 )

 交税 ( 按公司雇员总人数计算,影响总成本 )

 销售(按销售件数 * 价格计算销售额,利润按销售额 * 利润率进行计算利润。)

 获取公司雇员列表

 获取公司净利润

class Company():
    __total_company = 0
    def __init__(self,name,describe):
        self.__name = name
        self.__describe = describe
        self.__profit = 0
        self.__sales = 0
        self.__costs = 0
        self.__employee_list = []
        self.__employee_num = 0
        Company.__total_company += 1
    def hire(self,employee_name):#招聘 姓名为 employee_name的员工
        self.__employee_list.append(employee_name)
        self.__employee_num += 1
        self.__costs += 10  #每招一个人 成本为10
    def fire(self,employee_name):#解雇 姓名为 employee_name的员工
        self.__employee_list.remove(employee_name)
        self.__employee_num -= 1
        self.__costs += 5   #每解雇一个人 成本为5
    def advertisement(self,):
        self.__costs += 100 #广告1次 成本为100
    def social(self,):
        self.__costs += self.__employee_num * 3 #每人交社保 成本为3
    def taxes(self,):
        self.__costs += self.__employee_num * 1 #每人交税 成本为1
    def sale(self,sale_num,sale_price,sale_rate):
        self.__sales += sale_num * sale_price
        self.__profit += sale_num * sale_price * sale_rate
    def getEmployeeList(self,):
        return self.__employee_list
    def getClearProfit(self,):
        return self.__profit - self.__costs
    @classmethod
    def get_total_company(cls,):
        return Company.__total_company

cp1 = Company("阿里","卖东西的")
cp2 = Company("腾讯","QQ专业户")
cp3 = Company("百度","搜索专业户")
print("总公司数:",Company.get_total_company())
cp1.hire("张三")
cp1.hire("李四")
cp1.hire("王五")
print("雇佣三个人",cp1.getEmployeeList())
cp1.fire("李四")
print("解雇李四",cp1.getEmployeeList())
cp1.advertisement()
cp1.social()
cp1.taxes()
print("未销售前当前利润:",cp1.getClearProfit())
cp1.sale(100,10,0.3)
print("销售后的利润:",cp1.getClearProfit())

结果:

总公司数: 3

雇佣三个人 ['张三', '李四', '王五']

解雇李四 ['张三', '王五']

未销售前当前利润: -143

销售后的利润: 157.0

第3题:设计类及其继承类

设计一个叫cinema 的电影院的类,包含:

 类方法:

 初始化方法,并初始相应的类变量实例变量

 getSales(获取全部电影院实际销售的方法)的电影院

 实例方法:

 saleTickets方法,要求更新实例的销售总额及类的销售总额

 类变量:

 类下所有实例电影院的数量,销售额总和

 实例变量:

 电影院名称,位置,销售额

 创建一个miniCinema 迷你电影院的类,继承自cinema类 类

 重写卖票方法,大于100元的票价加入打9折扣的功能。

 对miniCinema实例进行调用体现多态性

class Cinema():
    __total_cinema = 0
    __total_sales = 0
    def __init__(self,name,addr):
        self.__name = name
        self.__addr = addr
        self.__sales = 0
        Cinema.__total_cinema += 1
    def saleTickets(self,num,price):#票数 票价
        self.__sales += num * price
        Cinema.__total_sales += num * price
    @classmethod
    def getSales(cls,):
        return Cinema.__total_sales

class miniCinema(Cinema):
    def saleTickets(self,num,price):
        if price>=100:price *= 0.9
        super().saleTickets(num,price)
        
c1 = Cinema("光明电影院","长江路20号")
c1.saleTickets(10,90)   #期望收入 900
print("总收入(+900):",Cinema.getSales())
c2 = miniCinema("地下影城","北京路10号")
c2.saleTickets(10,100)  #打9折,所以期望收入也是  900
print("总收入(+900):",Cinema.getSales())

结果:

总收入(+900): 900

总收入(+900): 1800.0

第4题:导入包完成遍历目录

导入 os 包

 创建递归循环完成一个目录的遍历

 如果下还有一个目录,依次进行遍历

import os
class Showdir():
    def __init__(self,path):
        self.__path = path
        self.__path_list = []
    def getPaths(self,):
        for dirpath,dirnames,filenames in os.walk(self.__path):
            for file in filenames:
                fullpath = os.path.join(dirpath,file)
                self.__path_list.append(fullpath)
        return self.__path_list
    def printPaths(self,):
        for file in self.__path_list:
            print(file)

dir1 = Showdir("D:\python-ppc")
dir1.getPaths()
dir1.printPaths()

结果:

D:\python-ppc\Anaconda3-5.0.1-Windows-x86_64.exe

D:\python-ppc\1\Lesson1.ipynb

D:\python-ppc\1\Python-1.pptx

D:\python-ppc\2\class2.ipynb

D:\python-ppc\2\Lesson2.ipynb

D:\python-ppc\2\Python-2.pdf

D:\python-ppc\3\3.py

D:\python-ppc\3\Lesson3.ipynb

D:\python-ppc\3\python3.pdf

D:\python-ppc\3.ipynb_checkpoints\Lesson3-checkpoint.ipynb

D:\python-ppc\4\4.py

D:\python-ppc\4\Lesson4 (1).ipynb

D:\python-ppc\4\Lesson4.ipynb

D:\python-ppc\4\python4.pdf

D:\python-ppc\4\Untitled.ipynb

D:\python-ppc\4.ipynb_checkpoints\Lesson4 (1)-checkpoint.ipynb

D:\python-ppc\4.ipynb_checkpoints\Lesson4-checkpoint.ipynb

D:\python-ppc\4.ipynb_checkpoints\Untitled-checkpoint.ipynb

第5题:练习使用PIL包

 导入 PIL 包

 如果没有该包,请自行安装后导入

 将一张图片进行尺寸缩放 , 颜色调整后保存。

 ( dir,help 函数查看库)

import PIL
image1 = PIL.Image.open("D:\\python-ppc\\4\\44.jpg")
width,height = image1.size
print(width,height)
image1.thumbnail((width*.1,height*.1))
print(image1.size)
image1.show()
image2 = PIL.Image.eval(image1,lambda x:x*1.5)  #亮度*1.5
image2.show()
image2.save("D:\\python-ppc\\4\\442.jpg","jpeg")    #保存

作业1:新建类并修改其实例的切片访问

Python中对序列的切片访问,是左闭右开。

 现请您

 创建一个可被迭代的类

 改变默认的切片访问方式为左闭右闭

 举例:c1=youclassname([0,1,2,3,4,5,6,7,8,9]

 c1[2:7] 返回2,3,4,5,6,7

class Mylist(list):
    def __getitem__(self,index):
        if(type(index)==slice):
            if(index.stop<super().__len__()):    #加越界限制
                new_index = slice(index.start,index.stop+1,index.step)
            else:
                new_index = index
            return super().__getitem__(new_index)
        else:
            return super().__getitem__(index)

cc = Mylist([0,1,2,3,4,5,6,7,8,9])
cc[2:7]

结果:[2, 3, 4, 5, 6, 7]


2 个评论

棒棒棒~~~~
既听课,又做练习的宝宝最 可爱了~
得记录下,这是同学晚上10点下课后,写到2点完成的作业~感动

要回复文章请先登录注册

返回顶部