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():
    phone_list = []

    def __init__(self,name,screeen_size,price,brand):
        self.name = name
        self.screeen_size = screeen_size
        self.price = price
        self.brand = brand

        phone.phone_list.append(name)


    def play(self):
        print('play game !')


    def sendMessage(self):
        print('text message !')


    def powerOff(self):
        print('power off !')

    def get_info(self,):
        print('型号是:', self.name)
        print('屏幕大小是:', self.screeen_size)
        print('价格是:', self.price)
        print('品牌是:', self.brand)



phone1 = phone('phone1',5.5,6288,'apple')
phone1.play()
phone1.sendMessage()
phone1.powerOff()
phone1.get_info()

phone2 = phone('phone2',5,1999,'mi')
phone2.play()
phone2.sendMessage()
phone2.powerOff()
phone2.get_info()
print(phone.phone_list)


练习2 :完成简单类的设计
 设计以下公司类,并实例化不同对象进行检查
 类成员
 类下公司的总个数
 类方法
 返回公司类共有多少个公司实例
 实例变量
 公司名,简介,利润,销售额,总成本,雇员姓名,雇员人员。
 实例方法要求有:
 招聘人才(每招一个人会有成本产生,影响雇员列表,人数,总成本)
 解雇人员(每解雇一个人会有成本产生,影响雇员列表,人数 ,总成本)
 公司广告推广(影响总成本)
 交社保(按公司雇员总人数计算,影响总成本)
 交税(按公司雇员总人数计算,影响总成本)
 销售(按销售件数*价格计算销售额,利润按销售额*利润率进行计算利润。)
 获取公司雇员列表
 获取公司净利润
class company():
    company_list = []

    def __init__(self, company_name, company_intro, profit, sales, total_cost, employees_name, employees_nums):
        self.company_name = company_name  # 公司名
        self.company_intro = company_intro  # 公司简介
        self.__sales = sales  # 销售额
        self.__profit = profit  # 利润
        self.__total_cost = total_cost  # 总成本
        self.__employees_name = employees_name  # 雇员名字
        self.__employees_nums = employees_nums  # 雇员人数
        company.company_list.append(company_name)

    @classmethod
    def companylist(cls):
        return company.company_list

    def social_sec(self, ):  # 社保
        social_sec_cost = self.employees_nums * 200
        # self.total_cost += social_sec_cost
        return social_sec_cost

    def pay_taxes(self, ):  # 交税
        pay_taxes_cost = self.employees_nums * 100
        # self.total_cost += pay_taxes_cost
        return pay_taxes_cost

    def employ(self, name):  # 招聘人才
        self.__employees_name.append(name)
        self.__total_cost += 3000
        self.__employees_nums += 1
        self.__total_cost += 100  # 税费
        self.__total_cost += 200  # 社保
        return

    def fire(self, name):  # 解雇人员
        if name not in self.__employees_name:
            print ('sorry, ' + str(name) + 'is not in ' + str(self.company_name))
            return
        else:
            self.__employees_name.remove(name)
            self.__total_cost -= 3000
            self.__employees_nums -= 1
            self.__total_cost -= 100  # 社保
            self.__total_cost -= 200  # 税费
            print('已更新信息!')
            return

    def adv_pro(self, cost):  # 广告推广
        self.__total_cost += cost
        return

    def sell(self, per_price, sell_nums):  # 按销售件数*价格计算销售额,利润按销售额*利润率进行计算利润。
        self.__sales = per_price * sell_nums
        self.__profit = self.__sales * 0.5 - self.__total_cost
        return self.__sales

    def employees_list(self, ):
        return self.__employees_name

    def com_profit(self):
        return self.__profit

    def com_total_cost(self):
        return self.__total_cost

com1_intro = 'com1 是一家电子公司。'
com1 = company('com1',com1_intro,0,0,0,[],0)
com1.employ('张三')
com1.employ('李四')
com1.employ('王五')
com1.adv_pro(10000)
print('公司总成本为: ', com1.com_total_cost())
com1.employ('lidia')
print('公司总成本为: ', com1.com_total_cost())
sales = com1.sell(200,3000)
print('公司销售额为:  ',sales)
print('公司净利润为:  ',com1.com_profit())
print('公司雇员有:  ',com1.employees_list())
com1.fire('Tom')
com1.fire('lidia')
print('公司总成本为: ', com1.com_total_cost())
print('公司雇员有:  ',com1.employees_list())
print(com1.company_intro)

com2_intro = 'com2 是一家互联网公司。'
com2 = company('com2',com2_intro,0,0,0,[],0)

com3_intro = 'com3 是一家咨询公司。'
com3 = company('com3',com3_intro,0,0,0,[],0)

print(company.company_list)


练习3 :设计类及其继承类
1、 设计一个叫cinema的电影院的类,包含:
 类方法:
 初始化方法,并初始相应的类变量实例变量
 getSales(获取全部电影院实际销售的方法)的电影院
 实例方法:
 saleTickets方法,要求更新实例的销售总额及类的销售总额
 类变量:
 类下所有实例电影院的数量,销售额总和
 实例变量:
 电影院名称,位置,销售额

2、 创建一个miniCinema迷你电影院的类,继承自cinema类
 重写卖票方法,大于100元的票价加入打9折扣的功能。
 对miniCinema实例进行调用体现多态性
class Cinema():
    '''
    sales_sum: 所有电影院销售总额
    cinema_nums:电影院数量
    cinema_name:(实例)电影院名称
    cinema_location:(实例)电影院位置
    cinema_sales:(实例)电影院销售额
    '''
    sales_sum = 0  # 销售额
    cinema_nums = 0  # 电影院数量

    def __init__(self, cinema_name, cinema_location, cinema_sales):
        self.cinema_name = cinema_name
        self.cinema_location = cinema_location
        self.cinema_sales = cinema_sales

        #         cinema.sales_sum  += self.cinema_sales
        Cinema.cinema_nums += 1

    @classmethod
    def getSales(cls, ticketprice, ticketnums):
        sales = ticketprice * ticketnums
        return sales

    def saleTickets(self, ticketprice, ticketnums):
        self.cinema_sales = Cinema.getSales(ticketprice, ticketnums)
        Cinema.sales_sum += self.cinema_sales
        return


class Minicinema(Cinema):
    def saleTickets(self, ticketprice, ticketnums):
        super().__init__(self, ticketprice, ticketnums)
        Cinema.cinema_nums -= 1
        #         写卖票方法,大于100元的票价加入打9折扣的功能。
        if ticketprice > 100:
            ticketprice = ticketprice * 0.9
            print('票价大于100元,自动打九折!')
        self.cinema_sales = Cinema.getSales(ticketprice, ticketnums)
        Cinema.sales_sum += self.cinema_sales
        return


A = Cinema('A', '天河', 0)
A.saleTickets(30, 10000)
print('电影院 A 的票房是: ', A.cinema_sales)
print('所有电影院销售总额---->', Cinema.sales_sum)

B = Cinema('B', '番禺', 0)
B.saleTickets(120, 20000)
print('电影院 B 的票房是: ', B.cinema_sales)
print('所有电影院销售总额---->', Cinema.sales_sum)
C = Minicinema('C', '白云', 0)
C.saleTickets(120, 26000)
print('电影院 C 的票房是: ', C.cinema_sales)
print('共有电影院 %d 家!' % Cinema.cinema_nums)
print('所有电影院销售总额---->', Cinema.sales_sum)


练习4 :导入包完成遍历目录
 导入os包
 创建递归循环完成一个目录的遍历
 如果下还有一个目录,依次进行遍历
import os

def openCalal(path):
    for root,dirs,files in os.walk(path):
        # os.walk()直接就遍历的目录!
        if len(dirs) == 0:
            print('Root =  ', root)
            print('文件有: ', files)
            print('本文件夹中已没有其他目录!')
        else:
            print('路径等于  ', root)
            print('文件夹有: ', dirs)
            print('文件有:  ', files)
            print('---------->')
    return


import os
def openCalal(path):
    listDir = os.listdir(path)
    for List in listDir:
        pathname = os.path.join(path,List)
        if os.path.isfile(pathname):
            print('文件名为:',List)
            print('文件路径为:',pathname)
        else: openCalal(pathname)



path = 'G:\\test'
openCalal(path)


练习5 :练习使用PIL包
导入PIL包

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

im=Image.open('test.jpg')
im.show()  #彩色的图片
form = im.format
print('Size = ',im.size)  # (500,362)
out = im.resize((128,128))
print('Size1 = ',out.size) #(128,128)
new_im = im.convert('L')
new_im.show() # 灰度图片
new_im.save('./new_test.jpg')
dir(Image)
help(Image.open)


作业1 :新建类并修改其实例的切片访问
 Python中对序列的切片访问,是左闭右开。
 现请您
 创建一个可被迭代的类
 改变默认的切片访问方式为左闭右闭
 举例:c1=youclassname([0,1,2,3,4,5,6,7,8,9]
 c1[2:7] 返回2,3,4,5,6,7
#不会,参考的别人的作业
class Newcut():
    def __init__(self, value=None):
        if value == None:
            self.value = []
        else:
            self.value = value

    def __getitem__(self, key):
        if type(key) == slice:
            start = key.start
            stop = key.stop + 1
            if key.start == None:
                start = 0
            if key.stop == None:
                stop = -1
            return self.value[start:stop]
        else:
            return str(self.value[key])

    def __iter__(self):
        return iter(self.value)


c1 = Newcut([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
print(c1[2:7])
已邀请:

要回复问题请先登录注册