1. 程式人生 > >python入門第四課練習

python入門第四課練習

建立一個名為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])

輸出結果: