Python 基础入门 第四节课 作业 xiao


创建一个名为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 getScreenSize():
        return self.__screen_size
    
    def getPrice():
        return self.__price
    
    def getBrand():
        return self.__brand
    
    def play(self,):
        print('play game')
        
    def sendMessage(self,):
        print('send message')
        
    def powerOff(self,):
        print('power off')
        
    def get_info(self,):
        print('screen size is', self.__screen_size)
        print('price is', self.__price)
        print('brand is', 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()


设计以下公司类,并实例化不同对象进行检查  类成员
 类下公司的总个数  类方法
 返回公司类共有多少个公司实例  实例变量
 公司名,简介,利润,销售额,总成本,雇员姓名,雇员人员。  实例方法要求有:
 招聘人才(每招一个人会有成本产生,影响雇员列表,人数,总成本)
 解雇人员(每解雇一个人会有成本产生,影响雇员列表,人数 ,总成本)
 公司广告推广(影响总成本)
 交社保(按公司雇员总人数计算,影响总成本)
 交税(按公司雇员总人数计算,影响总成本)
 销售(按销售件数*价格计算销售额,利润按销售额*利润率进行计算利润。)
 获取公司雇员列表
 获取公司净利润
class Company():
    total_company_num = 0
    all_companies = []
    
    def __init__(self, name, desc, interest_rate, profit, revenue, cost):
        self.__name = name
        self.__desc = desc
        self.__interest_rate = interest_rate
        self.__profit = profit
        self.__revenue = revenue
        self.__cost = cost
        self.__employee = []
        self.__employee_count = 0
        
    def hire(self, employee_name, cost):
        self.__employee.append(employee_name)
        self.__employee_count += 1
        self.__cost += cost
        
    def fire(self, employee_name, cost):
        self.__employee.remove(employee_name)
        self.__employee_count -= 1
        self.__cost += cost
        
    def adPromotion(self, cost):
        self.__cost += cost
        
    def paySocialInsurance(self, cost):
        self.__cost += cost * self.__employee_count
        
    def payTax(self, tax):
        self.__cost += tax * self.__employee_count
        
    def sellProducts(self, product_count, product_price):
        totalSale = product_count * product_price
        self.__revenue += totalSale
        self.__profit += totalSale * self.__interest_rate
    
    def getEmployeeList(self,):
        return self.__employee
    
    def getProfit(self,):
        return self.__profit - self.__cost
    
c = Company('julyedu', 'ai education online course', 0.2, 0, 0, 0)
c.hire('Teacher 1', 100000)
c.hire('Teacher 2', 100000)
c.hire('Teacher 3', 100000)
c.hire('Teacher 4', 100000)
c.hire('Teacher 5', 100000)
c.hire('Teacher 6', 100000)
c.hire('Teacher 7', 100000)
c.fire('Teacher 3', 1000)

c.adPromotion(50000)

c.paySocialInsurance(100)
c.payTax(10000)
c.sellProducts(10000, 2000)
print('company employee list', c.getEmployeeList())
print('company profit', c.getProfit())


 设计一个叫cinema的电影院的类,包含:  类方法:
 初始化方法,并初始相应的类变量实例变量
 getSales(获取全部电影院实际销售的方法)的电影院  实例方法:
 saleTickets方法,要求更新实例的销售总额及类的销售总额  类变量:
 类下所有实例电影院的数量,销售额总和  实例变量:
 电影院名称,位置,销售额
 创建一个miniCinema迷你电影院的类,继承自cinema类
 重写卖票方法,大于100元的票价加入打9折扣的功能。
 对miniCinema实例进行调用体现多态性
class Cinema():
    total_sales = 0
    total_cinema_count = 0
    
    def __init__(self, name, address, star):
        self.__name = name
        self.__address = address
        self.__star = star
        self._totalSales = 0
        Cinema.total_cinema_count += 1
        
    def saleTickets(self, price):
        self._totalSales += price
        Cinema.total_sales += price
        
    @classmethod
    def getTotalSales(cls,):
        return Cinema.total_sales
    
class MiniCinema(Cinema):
    def saleTickets(self, price):
        actualPrice = (0.9 if price > 100 else 1) * price
        self._totalSales += actualPrice
        Cinema.total_sales += actualPrice
        print('actualprice', actualPrice)

c1 = Cinema('Event', 'Georgie st', 4)
c2 = MiniCinema('Mini Event', 'Rhodes shopping centre', 4)

c1.saleTickets(50)
c1.saleTickets(60)
c1.saleTickets(80)
c1.saleTickets(100)
c1.saleTickets(200)

c2.saleTickets(50)
c2.saleTickets(60)
c2.saleTickets(80)
c2.saleTickets(100)
c2.saleTickets(200)

print('total sales', Cinema.getTotalSales())


 导入os包
 创建递归循环完成一个目录的遍历
 如果下还有一个目录,依次进行遍历
from os import listdir
from os.path import isfile, isdir, join
def iterDir(path):
    l1 = []
    for f in listdir(path):
        print(join(path, f))
        if isfile(join(path, f)):
            l1.append(join(path, f))
        elif isdir(join(path, f)):
            l1.extend(iterDir(join(path, f)))
        else:
            pass
    
    return l1

print(iterDir('/'))


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

infile = sys.argv[1]
height,width = int(sys.argv[2]), int(sys.argv[3])
outfile = os.path.splitext(infile)[0] + str(height) + 'x' + str(width) + '.' + os.path.splitext(infile)[1]
print('save to', outfile)
try:
    im = Image.open(infile)
    image = im.resize((width, height))
    for x in range(image.width):
        for y in range(image.height):
            r,g,b,a = image.getpixel((x,y))
            a = int(a*0.5)
            newColor = (r,g,b,a)
            image.putpixel((x,y), newColor)
    image.save(outfile, 'PNG')
except (RuntimeError, TypeError, NameError):
    print('error occured')
    traceback.print_exc()
    pass


作业1 :新建类并修改其实例的切片访问
 Python中对序列的切片访问,是左闭右开。  现请您
 创建一个可被迭代的类
 改变默认的切片访问方式为左闭右闭
 举例:c1=youclassname([0,1,2,3,4,5,6,7,8,9]  c1[2:7] 返回2,3,4,5,6,7
class CustomisedList(list):
    def __init__(self, l):
        self.list = l
        
    def __getitem__(self, position):
        if isinstance(position, slice):
            return self.list[position.start: position.stop + 1: position.step]
        else:
            return self.list[position]
        
    def __iter__(self):
        return (x for x in self.list)
        
l = CustomisedList([1,2,34,5,6,7,8])
l[0:2]
for i in l:
    print(i)
已邀请:

ClownFish

赞同来自:


第一题中的,

def getScreenSize():
return self.__screen_size


def getPrice():
return self.__price


def getBrand():
return self.__brand

这些方法,你定义为了普通方法。如果稳妥一些,这些方法应该是和某个具体实例关联的,应该是设置为类法更为妥当。

下面的公司类,电影院类。设计得就很好。
os库玩得很6

PIL库一旦会玩,就不怕新库了。

最后一题重写魔术函数getitme,也加了对slice对象的判断,对对象的掌握很6

要回复问题请先登录注册

返回顶部