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])
輸出結果: