python入门第四课练习

版权声明:===========版权所有,可随意转载,欢迎互相交流=========== https://blog.csdn.net/weixin_42446330/article/details/81161524

创建一个名为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('power off')

    def get_info(self):
        print("Your phone's screen size is :%s, price is:%s, brand is:%s"%(self.screen_size,self.price,self.brand))

phone1 = Phone(5.5 , 6288, 'apple')
phone1.play()
phone1.sendMessage()
phone1.powerOff()
phone1.get_info()
print
phone2 = Phone(5 , 1999, 'mi')
phone2.play()
phone2.sendMessage()
phone2.powerOff()
phone2.get_info()

输出结果:

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

class Company():
    # Company_count = 0
    # Company_list = []

    def __init__(self,name,summary,profit,sales_volume,total_cost,employee_name,employee_list):
        self.name = name
        self.summary =summary
        self.profit = profit
        self.sales_volume = sales_volume
        self.total_cost = total_cost
        self.employee_name = employee_name
        self.employee_list = employee_list

    @classmethod
    def get_Company_count(cls):
        return Company.Company_count
    @classmethod
    def get_Company_list(cls):
        return Company.Company_list

    def hire_person(self,salary,employee_name):
        self.number = 0
        self.salary = salary
        self.total_cost += salary
        self.employee_list.append(employee_name)
        self.number += 1
        return self.total_cost,self.employee_list

    def fire_person(self,employee_name):
        if employee_name not in self.employee_list:
            print("sorry,%s your are not our company's employee!"%employee_name)
        else:
            self.employee_list.remove(employee_name)
            self.total_cost -= self.salary
            self.number += 1
            return self.total_cost, self.employee_list

    def ad(self,cost):
        self.total_cost += cost
        return self.total_cost

    def pay_insurance(self,one_pay):
        self.total_cost += len(self.employee_list)*one_pay
        return self.total_cost

    def pay_taxs(self,one_tax):
        self.total_cost += len(self.employee_list)*one_tax
        return self.total_cost

    def sales(self,sale_num,price,rate):
        self.sales_volume += sale_num*price
        self.profit += self.sales_volume * rate
        return self.sales_volume
        return self.profit

company1 = Company('无敌公司','无敌是多么寂寞',0,0,0,0,[])
company1.hire_person(10000,'zs')
company1.hire_person(5000,'ls')
company1.hire_person(7000,'ww')
company1.ad(5000)
company1.pay_insurance(500)
company1.pay_taxs(200)
company1.sales(10,6000,0.7)
# print "公司目前共有@s个员工,分别是:@s,"
company1.fire_person('ww')
# print('公司@s开除了一个员工,目前员工为:@s'@(company1.name ,company1.employee_list))
print(company1.name)
print(company1.employee_list)
print(company1.profit)

输出结果;

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

2、 创建一个miniCinema迷你电影院的类,继承自cinema类
 重写卖票方法,大于100元的票价加入打9折扣的功能。
 对miniCinema实例进行调用体现多态性

class Cinema():
    cinema_sum = 0
    sales_amount = 0

    def __init__(self,name,location,sales):
        self.name = name
        self.location = location
        self.sales = sales
        Cinema.cinema_sum +=1
        Cinema.sales_amount += sales

    def saleTickets(self,ticket,price):
        self.sales += ticket*price
        Cinema.sales_amount += self.sales
        return self.sales,Cinema.sales_amount

    @classmethod
    def getSales(cls):
        return Cinema.sales_amount

cinema1 = Cinema('万达','北京',1390000)
# print cinema1

class miniCinema(Cinema):
    def saleTickets(self,ticket,price):
        if price > 100:
            price = price *0.9
        self.sales += ticket * price
        Cinema.sales_amount += self.sales
        return self.sales,'------------->',Cinema.sales_amount
new = miniCinema('友好','上海',200000)
print new.saleTickets(2000,100)

输出结果:

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

import os
def scanfile(path):
    # pathname = []
    listDir = os.listdir(path)
    for filelist in listDir:
        pathname = os.path.join(path,filelist)  #拼接路径
        if os.path.isfile(pathname):
            print('文件名为:',filelist)
            print('文件路径为:',pathname)
        else:
            scanfile(pathname)

scanfile(u'F:\\百度云\七月在线\python入门升级版\lesson4 面向对象基础')

输出结果:

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

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

输出结果:

from PIL import Image
# help(Image)
img = Image.open(u'F:\\我的文件夹\照片\ludashi.jpg')
# img.show()
print(img.size)
new = img.resize((90,60))
new_img = new.convert('L')  #调整为灰色
new_img.show()
new_img.save('C:\\Users\W\desktop/new.jpg')

输出结果:

作业一:新建类并修改其实例的切片访问
 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])

输出结果:

猜你喜欢

转载自blog.csdn.net/weixin_42446330/article/details/81161524