Python程序設(shè)計任務(wù)驅(qū)動式教程(微課版)教案 單元6-8 類定義與使用;文件操作與異常處理;數(shù)據(jù)庫訪問與使用_第1頁
Python程序設(shè)計任務(wù)驅(qū)動式教程(微課版)教案 單元6-8 類定義與使用;文件操作與異常處理;數(shù)據(jù)庫訪問與使用_第2頁
Python程序設(shè)計任務(wù)驅(qū)動式教程(微課版)教案 單元6-8 類定義與使用;文件操作與異常處理;數(shù)據(jù)庫訪問與使用_第3頁
Python程序設(shè)計任務(wù)驅(qū)動式教程(微課版)教案 單元6-8 類定義與使用;文件操作與異常處理;數(shù)據(jù)庫訪問與使用_第4頁
Python程序設(shè)計任務(wù)驅(qū)動式教程(微課版)教案 單元6-8 類定義與使用;文件操作與異常處理;數(shù)據(jù)庫訪問與使用_第5頁
已閱讀5頁,還剩56頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

單元6類定義與使用【任務(wù)6-1】定義商品類及其成員【任務(wù)描述】(1)在PyCharm集成開發(fā)環(huán)境中創(chuàng)建項目Unit06。(2)在項目Unit06創(chuàng)建Python程序文件6-1.py。(3)定義商品類Commodity。(4)定義類的多個公有屬性和私有屬性。(5)定義定義的多個實例方法。(6)分別通過類名稱、實例名稱訪問類的屬性。(7)分別通過類的實例方法輸出類的公有屬性和私有屬性值?!救蝿?wù)實施】1.創(chuàng)建PyCharm項目Unit06成功啟動PyCharm后,在指定位置“D:\PycharmProject\”,創(chuàng)建PyCharm項目Unit06。2.創(chuàng)建Python程序文件6-1.py在PyCharm項目“Unit06”中,新建Python程序文件“6-1.py”,同時PyCharm主窗口顯示程序文件“6-1.py”的代碼編輯窗口,在該程序文件的代碼編輯窗口也自動添加了模板內(nèi)容。3.編寫Python程序代碼在新建文件“6-1.py”的代碼編輯窗口已有模板注釋內(nèi)容下面輸入程序代碼。classCommodity:'''商品類'''#定義類的公有屬性,公共屬性在類外部可以直接進行訪問commodityCode="100009177374"#定義公有類屬性:商品編號commodityName="華為Mate30Pro5G"#定義公有類屬性:商品名稱commodityPrice=6899.00#定義公有類屬性:價格produceDate="2020/1/18"#定義公有類屬性:生產(chǎn)日期#定義類的私有屬性,私有屬性在類外部無法直接進行訪問__code="65559628242"__name="海信(Hisense)100L7"__price=79999.00__date="2020/1/6"defprintLine(self):print("")defprintCommodityPublic(self):print("商品編號:"+modityCode)print("商品名稱:"+modityName)print("價格:"+"{:.2f}".format(CmodityPrice))print("生產(chǎn)日期:"+CduceDate)defprintCommodityPrivate(self):print("商品編號:"+self.__code)print("商品名稱:"+self.__name)print("價格:"+"{:.2f}".format(Commodity.__price))print("生產(chǎn)日期:"+Commodity.__date)針對創(chuàng)建的類Commodity實施以下各項操作。1.直接使用類名稱訪問類的公有屬性直接使用類名稱訪問類的公有屬性的代碼如下:print("商品編號:"+CmodityCode)print("商品名稱:"+CmodityName)print("價格:"+"{:.2f}".format(CmodityPrice))print("生產(chǎn)日期:"+CduceDate)其運行結(jié)果如下所示。圖6-3運行結(jié)果之一2.使用類的實例名稱訪問類的公有屬性使用類的實例名稱訪問類的公有屬性的代碼如下:goods=Commodity()print("商品編號:"+modityCode)print("商品名稱:"+modityName)print("價格:"+"{:.2f}".format(modityPrice))print("生產(chǎn)日期:"+duceDate)其運行結(jié)果如下所示。3.調(diào)用類的實例方法輸出類的公有屬性調(diào)用類的實例方法輸出類的公有屬性的代碼如下:goods.printCommodityPublic()其運行結(jié)果如下所示。4.通過類名稱或類實例名稱訪問類的私有屬性類外部通過類名稱或類實例名稱不能直接訪問類的私有屬性,以下代碼訪問類的私有屬性會出現(xiàn)異常信息,代碼以及對應(yīng)的異常信息見以下注釋。#AttributeError:typeobject'Commodity'hasnoattribute'__code'#print("商品編號:"+Commodity.__code)#AttributeError:typeobject'Commodity'hasnoattribute'__name'#print("商品名稱:"+Commodity.__name)#AttributeError:'Commodity'objecthasnoattribute'__price'#print("價格:"+"{:.2f}".format(goods.__price))#print("生產(chǎn)日期:"+goods.__date)#AttributeError:'Commodity'objecthasnoattribute'__date'5.調(diào)用類的實例方法輸出類的私有屬性調(diào)用類的實例方法輸出類的私有屬性的代碼如下:goods.printLine()goods.printCommodityPrivate()Commodity.printLine(goods)其運行結(jié)果如下所示:商品編號:65559628242商品名稱:海信(Hisense)100L7價格:79999.00生產(chǎn)日期:2020/1/6【任務(wù)6-2】修改與訪問類屬性、建立實例屬性【任務(wù)描述】(1)在項目Unit06創(chuàng)建Python程序文件6-2.py。(2)創(chuàng)建類Commodity及定義其屬性和方法。(3)創(chuàng)建類對象goods1和goods2。(4)通過類名稱Commodity調(diào)用類的實例方法輸出類初始定義的公有屬性。(5)使用類名稱Commodity修改類的公有屬性,代碼如下所示。CmodityCode="12563157"CmodityName="給Python點顏色青少年學(xué)編程"CmodityPrice=59.80CduceDate="2019/9/1"(6)直接使用類名稱Commodity輸出類修改之后的公有屬性。(7)使用類實例名稱goods1輸出類修改之后的公有屬性。(8)使用第2個實例名稱goods2輸出類修改之后的公有屬性。(9)通過類名稱Commodity調(diào)用類的實例方法輸出類修改之后的公有屬性。(10)通過實例名稱goods1調(diào)用類的實例方法輸出類修改之后的公有屬性。(11)第2次修改類的公有屬性,代碼如下所示。對應(yīng)代碼如下:modityCode="4939815"modityName="格力KFR-72LW/NhIbB1W"modityPrice=9149.00duceDate="2019/8/8"(12)直接使用類名稱Commodity輸出類第2次修改之后的公有屬性。(13)使用第1個實例名稱goods1輸出類第2次修改之后的公有屬性。(14)使用第2個實例名稱goods2輸出類第2次修改之后的公有屬性。(15)通過類名稱Commodity調(diào)用類的實例方法輸出類第2次修改之后的公有屬性。(16)分別通過實例名稱goods1、goods2調(diào)用類的實例方法輸出類第2次修改之后的公有屬性?!救蝿?wù)實施】在PyCharm項目“Unit06”中,新建Python程序文件“6-2.py”,在文件“6-2.py”的代碼編輯窗口創(chuàng)建類Commodity及定義其屬性和方法。classCommodity:#定義類的公有屬性,公共屬性在類外部可以直接進行訪問commodityCode="100009177374"#定義公有類屬性:商品編號commodityName="華為Mate30Pro5G"#定義公有類屬性:商品名稱commodityPrice=6899.00#定義公有類屬性:價格produceDate="2020/1/18"#定義公有類屬性:生產(chǎn)日期#定義類的私有屬性,私有屬性在類外部無法直接進行訪問__code="65559628242"__name="海信(Hisense)100L7"__price=79999.00__date="2020/1/6"defprintLine(self):print("")defprintCommodityPublic(self):print("商品編號:"+modityCode)print("商品名稱:"+modityName)print("價格:"+"{:.2f}".format(modityPrice))print("生產(chǎn)日期:"+duceDate)defprintCommodityPrivate(self):print("商品編號:"+self.__code)print("商品名稱:"+self.__name)print("價格:"+"{:.2f}".format(self.__price))print("生產(chǎn)日期:"+self.__date)針對創(chuàng)建的類Commodity實施對類屬性、實例屬性的修改與訪問。1.創(chuàng)建類對象創(chuàng)建兩個類對象goods1和goods2的代碼如下:goods1=Commodity()goods2=Commodity()2.通過類名稱Commodity調(diào)用類的實例方法輸出類初始定義的公有屬性對應(yīng)代碼如下:Commodity.printCommodityPublic(goods1)其運行結(jié)果如下所示。3.使用類名稱Commodity修改類的公有屬性對應(yīng)代碼如下:CmodityCode="12563157"CmodityName="給Python點顏色青少年學(xué)編程"CmodityPrice=59.80CduceDate="2019/9/1"4.直接使用類名稱Commodity輸出類修改之后的公有屬性對應(yīng)代碼如下:print("商品編號:"+CmodityCode)print("商品名稱:"+CmodityName)print("價格:"+"{:.2f}".format(CmodityPrice))print("生產(chǎn)日期:"+CduceDate)其運行結(jié)果如下所示。圖6-4運行結(jié)果之二5.使用類實例名稱goods1輸出類修改之后的公有屬性對應(yīng)代碼如下:print("商品編號:"+modityCode)print("商品名稱:"+modityName)print("價格:"+"{:.2f}".format(modityPrice))print("生產(chǎn)日期:"+duceDate)其運行結(jié)果如下所示。6.使用第2個實例名稱goods2輸出類修改之后的公有屬性對應(yīng)代碼如下:print("商品編號:"+modityCode)print("商品名稱:"+modityName)print("價格:"+"{:.2f}".format(modityPrice))print("生產(chǎn)日期:"+duceDate)其運行結(jié)果如下所示。7.通過類名稱Commodity調(diào)用類的實例方法輸出類修改之后的公有屬性對應(yīng)代碼如下:Commodity.printCommodityPublic(goods1)其運行結(jié)果如下。8.通過實例名稱goods1調(diào)用類的實例方法輸出類修改之后的公有屬性對應(yīng)代碼如下:goods1.printCommodityPublic()其運行結(jié)果如下所示。9.第2次修改類的公有屬性對應(yīng)代碼如下:modityCode="4939815"modityName="格力KFR-72LW/NhIbB1W"modityPrice=9149.00duceDate="2019/8/8"10.直接使用類名稱Commodity輸出類第2次修改之后的公有屬性對應(yīng)代碼如下:print("商品編號:"+CmodityCode)print("商品名稱:"+CmodityName)print("價格:"+"{:.2f}".format(CmodityPrice))print("生產(chǎn)日期:"+CduceDate)其運行結(jié)果如下所示。11.使用第1個類實例名稱goods1輸出類第2次修改之后的公有屬性對應(yīng)代碼如下:print("商品編號:"+modityCode)print("商品名稱:"+modityName)print("價格:"+"{:.2f}".format(modityPrice))print("生產(chǎn)日期:"+duceDate)其運行結(jié)果如下所示。圖6-5運行結(jié)果之三12.使用第2個實例名稱goods2輸出類第2次修改之后的公有屬性對應(yīng)代碼如下:print("商品編號:"+modityCode)print("商品名稱:"+modityName)print("價格:"+"{:.2f}".format(modityPrice))print("生產(chǎn)日期:"+duceDate)其運行結(jié)果如下所示。13.通過類名稱Commodity調(diào)用類的實例方法輸出類第2次修改之后的公有屬性對應(yīng)代碼如下:Commodity.printCommodityPublic(goods1)其運行結(jié)果如下所示。Commodity.printCommodityPublic(goods2)其運行結(jié)果如下所示。14.分別通過類實例名稱goods1、goods2調(diào)用類的實例方法輸出類第2次修改之后的公有屬性對應(yīng)代碼如下:goods1.printCommodityPublic()其運行結(jié)果如下所示。goods2.printCommodityPublic()其運行結(jié)果如下所示?!救蝿?wù)6-3】定義與訪問類的實例方法【任務(wù)描述】(1)在項目Unit06創(chuàng)建Python程序文件6-3.py。(2)在程序文件6-3.py中創(chuàng)建類對象goods。(3)在程序文件6-3.py中調(diào)用多個類的實例方法,輸出所需數(shù)據(jù)【任務(wù)實施】在PyCharm項目Unit06中創(chuàng)建Python程序文件6-3.py。在程序文件6-3.py中編寫程序代碼,實現(xiàn)所需功能。編寫創(chuàng)建類Commodity及其定義私有屬性、實例方法的代碼。classCommodity:#定義類的私有屬性,私有屬性在類外部無法直接進行訪問__code="100009177374"__name="華為Mate30Pro5G"__price=6899.00__date="2020/1/18"#定義實例方法defgetCode(self):returnself.__codedefgetName(self):returnself.__namedefgetPrice(self):returnself.__pricedefgetDate(self):returnself.__datedefprintLine(self):print("")#輸出字段名defprintField(self):print("{:^9s}".format("商品編號"),end="")print("{:^20s}".format("商品名稱"),end="")print("{:^8s}".format("價格"),end="")print("{:^9s}".format("生產(chǎn)日期"))針對創(chuàng)建的類Commodity實施以下各項操作。1.創(chuàng)建類對象goods創(chuàng)建一個類對象goods,代碼如下:goods=Commodity()2.調(diào)用多個類的實例方法,輸出所需數(shù)據(jù)調(diào)用多個類的實例方法,輸出所需數(shù)據(jù)的代碼如下:goods.printLine()#使用類的實例方法輸出商品數(shù)據(jù)goods.printField()print("{:^10s}".format(goods.getCode()),"{:^21s}".format(goods.getName()),end="")print("{:^10.2f}".format(goods.getPrice()),"{:^7s}".format(goods.getDate()))goods.printLine()程序6-3.py的運行結(jié)果如下所示。圖6-6程序6-3.py的運行結(jié)果【任務(wù)6-4】定義與訪問類方法、實例方法和靜態(tài)方法【任務(wù)描述】(1)在項目Unit06創(chuàng)建Python程序文件6-4.py。(2)在程序文件6-4.py中創(chuàng)建類對象goods。(3)在程序文件6-4.py中使用類的實例名稱goods調(diào)用類的實例方法和類方法。(4)在程序文件6-4.py中使用類名稱Commodity直接調(diào)用類的實例方法和類方法。(5)在程序文件6-4.py中使用類的靜態(tài)方法輸出商品數(shù)據(jù)?!救蝿?wù)實施】電子活頁6-4程序6-4電子活頁6-4程序6-4.py代碼classCommodity:#定義類的私有屬性,私有屬性在類外部無法直接進行訪問__code="100009177374"__name="華為Mate30Pro5G"__price=6899.00__date="2020/1/18"defprintLine(self):print("")#輸出字段名defprintField(self):print("{:^9s}".format("商品編號"),end="")print("{:^18s}".format("商品名稱"),end="")print("{:^8s}".format("價格"),end="")print("{:^9s}".format("生產(chǎn)日期"))@classmethoddefprintData(cls):print("{:^10s}".format(cls.__code),end="")print("{:^20s}".format(cls.__name),end="")print("{:^11.2f}".format(cls.__price),end="")print("{:^7s}".format(cls.__date))@staticmethoddefprintDataStatic():print("{:^10s}".format(Commodity.__code),end="")print("{:^20s}".format(Commodity.__name),end="")print("{:^11.2f}".format(Commodity.__price),end="")print("{:^7s}".format(Commodity.__date))針對創(chuàng)建的類Commodity實施以下各項操作。1.創(chuàng)建類對象goods創(chuàng)建一個類對象goods,代碼如下:goods=Commodity()2.使用類的實例名稱goods調(diào)用類的實例方法和類方法對應(yīng)代碼如下:goods.printLine()goods.printField()goods.printData()goods.printLine()其運行結(jié)果如下所示。圖6-7程序6-4.py的部分運行結(jié)果3.使用類名稱Commodity直接調(diào)用類的實例方法和類方法對應(yīng)代碼如下:Commodity.printLine(goods)Commodity.printField(goods)Commodity.printData()Commodity.printLine(goods)其運行結(jié)果如下所示。4.使用類的靜態(tài)方法輸出商品數(shù)據(jù)對應(yīng)代碼如下:goods.printLine()goods.printField()Commodity.printDataStatic()goods.printLine()其運行結(jié)果如下所示?!救蝿?wù)6-5】定義與調(diào)用類的構(gòu)造方法【任務(wù)描述】(1)在項目Unit06創(chuàng)建Python程序文件6-5.py。(2)在程序文件6-5.py定義與調(diào)用類的構(gòu)造方法?!救蝿?wù)實施】在PyCharm項目Unit06中創(chuàng)建Python程序文件6-5.py。在程序文件6-5.py中編寫程序代碼,實現(xiàn)所需功能。classCommodity:#定義類的公有屬性,基本屬性在類外部可以直接進行訪問#commodityCode=""#commodityName=""#commodityPrice=0.0#produceDate=""#定義類的構(gòu)造方法def__init__(self,code="",name="",price=0.0,date=""):#定義實例方法modityCode=code#定義實例屬性:商品編號modityName=name#定義實例屬性:商品名稱modityPrice=price#定義實例屬性:價格duceDate=date#定義實例屬性:生產(chǎn)日期defprintLine(self):print("")#輸出字段名defprintField(self):print("{:^9s}".format("商品編號"),end="")print("{:^18s}".format("商品名稱"),end="")print("{:^12s}".format("價格"),end="")print("{:^4s}".format("生產(chǎn)日期"))defprintData(self):print("{:^10s}".format(modityCode),end="")print("{:^20s}".format(modityName),end="")print("{:^8.2f}".format(modityPrice),end="")print("{:^4s}".format(duceDate[0:4])+"-",end="")print("{:^2s}".format(duceDate[5:7])+"-",end="")print("{:^2s}".format(duceDate[8:]))針對創(chuàng)建的類Commodity實施以下各項操作。1.創(chuàng)建第1個類實例goods1,全部參數(shù)初始化代碼如下:goods1=Commodity("12550531","Python編程錦囊(全彩版)",79.80,"2019/06/01")2.通過第1個類實例goods1調(diào)用類實例方法輸出商品數(shù)據(jù)代碼如下:goods1.printLine()goods1.printField()goods1.printData()goods1.printLine()運行結(jié)果如下所示。圖6-8程序6-5.py運行結(jié)果的第1部分3.創(chuàng)建第2個類實例goods2,部分參數(shù)初始化代碼如下:goods2=Commodity("100009177374","華為Mate30Pro5G")4.通過第2個類實例goods2調(diào)用類實例方法輸出商品數(shù)據(jù)代碼如下:goods2.printLine()goods2.printField()goods2.printData()goods2.printLine()運行結(jié)果如下所示。圖6-9程序6-5.py運行結(jié)果的第2部分5.創(chuàng)建第3個類實例goods3,所有參數(shù)都未初始化代碼如下:goods3=Commodity()6.對第3個類實例goods3的屬性賦值代碼如下:modityCode="4939815"modityName="格力KFR-72LW/NhIbB1W"modityPrice=9149.00duceDate="2019/08/08"7.輸出3個類實例goods1、goods2、goods3的商品名稱代碼如下:print("商品名稱1:"+modityName)print("商品名稱2:"+modityName)print("商品名稱3:"+modityName)運行結(jié)果為:商品名稱1:Python編程錦囊(全彩版)商品名稱2:華為Mate30Pro5G商品名稱3:格力KFR-72LW/NhIbB1W8.通過第3個類實例goods3調(diào)用類實例方法輸出商品數(shù)據(jù)代碼如下:goods3.printLine()goods3.printField()goods3.printData()goods3.printLine()運行結(jié)果如下所示。圖6-10程序6-5.py運行結(jié)果的第3部分【任務(wù)6-6】定義類Commodity和子類Book及其數(shù)據(jù)成員【任務(wù)描述】(1)在項目Unit06創(chuàng)建Python程序文件6-6.py。(2)在程序文件6-6.py中定義類Commodity和子類Book及其屬性、方法。(3)應(yīng)用類的屬性與方法實現(xiàn)所需功能。【任務(wù)實施】電子活頁6-6程序6-6.py代碼在PyCharm項目Unit0電子活頁6-6程序6-6.py代碼classCommodity:#定義類的構(gòu)造方法def__init__(self,code="",name="",price=0.0):modityCode=codemodityName=namemodityPrice=pricedefprintLine(self):print("")defprintInfo(self,strInfo):print("{:^50s}".format(strInfo))#輸出字段名defprintField(self,endMark="\n"):print("{:^9s}".format("商品編號"),end="")print("{:^20s}".format("商品名稱"),end="")print("{:^12s}".format("價格"),end=endMark)defprintData(self,endMark="\n"):print("{:^10s}".format(modityCode),end="")print("{:^21s}".format(modityName),end="")print("{:^8.2f}".format(modityPrice),end=endMark)#定義子類classBook(Commodity):def__init__(self,code="",name="",price=0.0,publisher="",editionOrder=1):Commodity.__init__(self,code,name,price)self.bookPublisher=publisherself.bookEdition=editionOrderdefprintField(self):Commodity.printField(self,"")print("{:^7s}".format("出版社名稱"),end="")print("{:^6s}".format("版次"))defprintData(self):Commodity.printData(self,"")print("{:^10s}".format(self.bookPublisher),end="")print("{:^6d}".format(self.bookEdition))#定義子類的實例方法defsetCode(self,code):modityCode=codedefsetName(self,name):modityName=namedefsetPrice(self,price):modityPrice=pricedefsetPublisher(self,publisher):self.bookPublisher=publisherdefsetEdition(self,edition):self.bookEdition=edition針對創(chuàng)建的類Commodity和子類Book實施以下各項操作。1.創(chuàng)建第1個類實例goods1,全部參數(shù)初始化創(chuàng)建第1個類實例goods1,全部參數(shù)初始化,其代碼如下:goods1=Book("12528944","PPT設(shè)計從入門到精通",79.00,"人民郵電出版社",1)2.通過第1個類實例goods1調(diào)用類實例方法輸出圖書數(shù)據(jù)代碼如下:goods1.printLine()goods1.printField()goods1.printData()goods1.printLine()運行結(jié)果如下所示。圖6-11程序6-6.py運行結(jié)果的第1部分3.創(chuàng)建第2個類實例goods2,部分參數(shù)初始化代碼如下:goods2=Book("12563157","給Python點顏色青少年學(xué)編程")4.通過第2個類實例goods2調(diào)用類的實例方法給類的部分屬性賦值代碼如下:goods2.setPrice(59.80)goods2.setPublisher("人民郵電出版社")goods2.setEdition(1)5.通過第2個類實例goods2調(diào)用類實例方法輸出圖書數(shù)據(jù)代碼如下:goods2.printLine()goods2.printField()goods2.printData()goods2.printLine()運行結(jié)果如下所示。圖6-12程序6-6.py運行結(jié)果的第2部分6.創(chuàng)建第3個類實例goods3,所有參數(shù)都未初始化代碼如下:goods3=Book()7.通過第3個類實例goods3調(diào)用類的實例方法給類的全部屬性賦值代碼如下:goods3.setCode("12550531")goods3.setName("Python編程錦囊(全彩版)")goods3.setPrice(79.80)goods3.setPublisher("吉林大學(xué)出版社")goods3.setEdition(1)8.通過第3個類實例goods3調(diào)用類實例方法輸出圖書數(shù)據(jù)代碼如下:goods3.printLine()goods3.printField()goods3.printData()goods3.printLine()運行結(jié)果如下所示。圖6-13程序6-6.py運行結(jié)果的第3部分【任務(wù)6-7】完整定義與使用1個父類Commodity和2個子類(Book、Handset)【任務(wù)描述】(1)在項目Unit06創(chuàng)建Python程序文件6-7.py。(2)在程序文件6-7.py中完整定義與使用1個父類Commodity和2個子類(Book、Handset)。(3)綜合應(yīng)用類的屬性與方法計算與輸出應(yīng)付金額、返現(xiàn)金額、優(yōu)惠金額、運費和實付金額?!救蝿?wù)實施】在PyCharm項目Unit06中創(chuàng)建Python程序文件6-7.py。在程序文件6-7.py中編寫程序代碼,實現(xiàn)所需功能。編寫定義父類Commodity及其多個屬性、方法的代碼。classCommodity:#定義父類的構(gòu)造方法def__init__(self,code="",name="",price=0.0,quantity=0):modityCode=codemodityName=namemodityPrice=pricemodityQuantity=quantity#定義父類的實例屬性@propertydefcode(self):returnself._code@code.setterdefcode(self,value):self._code=value@propertydefname(self):returnself._name@name.setterdefname(self,value):self._name=value@propertydefprice(self):returnself._price@price.setterdefprice(self,value):self._price=value@propertydefquantity(self):returnself._quantity@quantity.setterdefquantity(self,value):ifnotisinstance(value,int):raiseValueError('購買數(shù)量應(yīng)為正整數(shù)!')self._quantity=value@propertydefcalculateAmount(self):amount=modityPrice*modityNumberreturnamount@propertydefamount(self):amount=self.price*self.numberreturnamountdefprintInfo(self,strInfo):print("{:^50s}".format(strInfo))defprintField(self,endMark="\n"):print("{:^9s}".format("商品編號"),end="")print("{:^20s}".format("商品名稱"),end="")print("{:^12s}".format("價格"),end=endMark)defprintData(self,endMark="\n"):print("{:^10s}".format(self.code),end="")print("{:^21s}".format(),end="")print("{:^8.2f}".format(self.price),end=endMark)編寫定義子類Book及其多個屬性、方法的代碼。#定義第1個子類BookclassBook(Commodity):def__init__(self,code="",name="",price=0.0,publisher="",editionOrder=1):Commodity.__init__(self,code,name,price)self.bookPublisher=publisherself.bookEdition=editionOrder#定義子類Book的屬性@propertydefpublisher(self):returnself._publisher@publisher.setterdefpublisher(self,value):self._publisher=value@propertydefedition(self):returnself._edition@edition.setterdefedition(self,value):self._edition=valuedefprintField(self):Commodity.printField(self,"")print("{:^7s}".format("出版社名稱"),end="")print("{:^16s}".format("版次"))defprintData(self):Commodity.printData(self,"")print("{:^10s}".format(self.publisher),end="")print("{:^6d}".format(self.edition))@classmethoddefgetDiscountPrice(cls,rank,price):ifrank=="PLUS":discountPrice=price*0.88else:ifrank=="FAN":discountPrice=price*0.90else:discountPrice=price*0.92returndiscountPrice@classmethoddefgetDiscount(cls,number,price):originalTotal=number*pricediscount=0iforiginalTotal>=299:discount=15.00returndiscount@classmethoddefgetCashback(cls,number,price):originalTotal=number*pricereduction=int(originalTotal/100)ifreduction>0:cashback=reduction*50returncashback@classmethoddefgetCarriage(cls,payable):#訂單金額<49,收取基礎(chǔ)運費6元;訂單金額≥49,收取基礎(chǔ)運費0元ifpayable<49:carriage=6.00else:carriage=0.00returncarriage#輸出結(jié)算數(shù)據(jù)@classmethoddefprintSettlementData(cls,*data):print("應(yīng)付金額:¥"+"{:.2f}".format(data[0]))print("運費:¥"+"{:.2f}".format(data[1]))print("返現(xiàn)金額:-¥"+"{:.2f}".format(data[2]))print("優(yōu)惠金額:-¥"+"{:.2f}".format(data[3]))print("實付金額:¥"+"{:.2f}".format(data[4]))編寫子類Handset及其多個屬性、方法的代碼。#定義第2個子類HandsetclassHandset(Commodity):def__init__(self,code="",name="",price=0.0,resolution="",screenSize=""):super().__init__(self,code,name,price)#在子類中使用supper()函數(shù)調(diào)用父類的__init__()方法self.handsetResolution=resolutionself.handsetScreenSize=screenSize#定義子類Handset的屬性@propertydefresolution(self):returnself._resolution@resolution.setterdefresolution(self,value):self._resolution=value@propertydefscreenSize(self):returnself._screenSize@screenSize.setterdefscreenSize(self,value):self._screenSize=valuedefprintField(self):Commodity.printField(self,"")print("{:^6s}".format("屏幕尺寸"),end="")print("{:^16s}".format("物理分辨率"))defprintData(self):Commodity.printData(self,"")print("{:^20s}".format(self.screenSize),end="")print("{:^12s}".format(self.resolution))針對創(chuàng)建的類Commodity和兩個子類Book、Handset實施以下各項操作。1.創(chuàng)建子類Book的實例對象book代碼如下:book=Book()2.通過類的實例對象book給類的屬性賦值代碼如下:book.code="12563157"="給Python點顏色青少年學(xué)編程"book.price=59.80book.quantity=1book.publisher="人民郵電出版社"book.edition=13.通過類的實例對象book以模擬表格方式輸出圖書數(shù)據(jù)代碼如下:book.printField()book.printData()運行結(jié)果為:商品編號商品名稱價格出版社名稱版次12563157給Python點顏色青少年學(xué)編程59.80人民郵電出版社14.通過類的實例對象book分別設(shè)置父類實例屬性的值和用戶等級代碼如下:book.quantity=5rank="Ordinaryusers"5.調(diào)用類的多個方法分別計算應(yīng)付金額、返現(xiàn)金額、優(yōu)惠金額、運費和實付金額代碼如下:discountPrice=book.getDiscountPrice(rank,book.price)discountAmount=book.quantity*discountPricediscount=book.getDiscount(book.quantity,book.price)cashback=book.getCashback(book.quantity,book.price)discountTotal=discount+cashbackpayable=discountAmount-discountTotalcarriage=book.getCarriage(payable)payable+=carriage6.調(diào)用子類book的方法printSettlementData()輸出購物結(jié)算數(shù)據(jù)代碼如下:book.printSettlementData(discountAmount,carriage,cashback,discount,payable)運行結(jié)果為:應(yīng)付金額:¥275.08運費:¥0.00返現(xiàn)金額:-¥100.00優(yōu)惠金額:-¥15.00實付金額:¥160.087.創(chuàng)建子類Handset的實例對象handset代碼如下:handset=Handset()8.通過子類的實例名稱handset為類實例屬性賦值代碼如下:handset.code="100010262414"="華為MateBookXPro"handset.price=13699.00handset.quantity=1handset.screenSize="13.9英寸"handset.resolution="3000x2000像素"9.通過子類的實例名稱handset調(diào)用子類Handset的重構(gòu)方法輸出手機數(shù)據(jù)代碼如下:handset.printField()handset.printData()運行結(jié)果為:商品編號商品名稱價格屏幕尺寸物理分辨率100010262414華為MateBookXPro13699.0013.9英寸3000x2000像素單元7文件操作與異常處理【任務(wù)7-1】打開并讀取文件的全部行【任務(wù)描述】(1)在PyCharm集成開發(fā)環(huán)境中創(chuàng)建項目Unit07。(2)在項目Unit07創(chuàng)建Python程序文件7-1.py。(3)以“只讀”方式打開當(dāng)前工作文件夾中的文本文件“如何注冊京東賬號.txt”,然后讀取并輸出該文件的全部行?!救蝿?wù)實施】1.創(chuàng)建PyCharm項目Unit07成功啟動PyCharm后,在指定位置“D:\PycharmProject\”,創(chuàng)建PyCharm項目Unit07。2.創(chuàng)建Python程序文件7-1.py在PyCharm項目“Unit07”中,新建Python程序文件“7-1.py”,同時PyCharm主窗口顯示程序文件“7-1.py”的代碼編輯窗口,在該程序文件的代碼編輯窗口也自動添加了模板內(nèi)容。3.編寫Python程序代碼在新建文件“7-1.py”的代碼編輯窗口已有模板注釋內(nèi)容下面輸入程序代碼。defreadFile():objFile=open("D:\\PycharmProject\\Unit07\\如何注冊京東賬號.txt","r")fortxtLineinobjFile.readlines():print(txtLine,end="")objFile.close()try:readFile()exceptExceptionaserror:print(error)單擊工具欄中【保存】按鈕,保存程序文件“7-1.py”。4.運行Python程序在PyCharm主窗口選擇【Run】菜單,在彈出的下拉菜單中選擇【Run】菜單項。在彈出的【Run】對話框中選擇“7-1”選項,程序“7-1.py”開始運行。程序7-1.py的運行結(jié)果如下所示。如何注冊京東賬號?若您還沒有京東賬號,請單擊注冊,詳細操作步驟如下:(1)打開京東首頁,在右上方單擊【免費注冊】按鈕;(2)進入到注冊頁面,請?zhí)顚懩泥]箱、手機等信息完成注冊;(3)注冊成功后,請完成賬戶安全驗證,來提高您的賬戶安全等級?!救蝿?wù)7-2】實現(xiàn)文件內(nèi)容的寫入與讀取【任務(wù)描述】(1)在項目Unit07創(chuàng)建Python程序文件7-2.py。(2)使用兩種方法將圖書數(shù)據(jù)寫入當(dāng)前工作文件夾的“myBook.txt”文件中。(3)使用兩種方法從“myBook.txt”文件中讀取全部行,并輸出?!救蝿?wù)實施】1.創(chuàng)建Python程序文件7-2.py在PyCharm項目“Unit07”中,新建Python程序文件“7-2.py”,同時PyCharm主窗口顯示程序文件“7-2.py”的代碼編輯窗口,在該程序文件的代碼編輯窗口也自動添加了模板內(nèi)容。2.編寫Python程序代碼在新建文件“7-2.py”的代碼編輯窗口已有模板注釋內(nèi)容下面輸入程序代碼。fieldName=["商品編碼","圖書名稱","價格"]book=["book1","book2","book3"]book1=["12528944","PPT設(shè)計從入門到精通",79.00]book2=["12563157","給Python點顏色青少年學(xué)編程",59.80]book3=["12451724","Python從入門到項目實踐(全彩版)",99.80]book4=["12550531","Python編程錦囊(全彩版)",79.80]defgetSize(text):iftype(text)!=str:text=str(text)lenText=len(text)#調(diào)用len函數(shù)計算字符串的字符數(shù)量lenTextUtf8=len(text.encode('UTF-8'))#計算字符串UTF-8編碼的長度iflenText!=lenTextUtf8:size=int(lenText-(lenTextUtf8-lenText)/2)#計算字符中半角字符的數(shù)量returnsizeelse:return0defwriteFile1():objFile=open(r"D:\PycharmProject\Unit07\myBook.txt","w")objFile.write("{0:{1}^6s}".format(fieldName[0],chr(12288)))objFile.write("{0:{1}^18s}".format(fieldName[1],chr(12288)))objFile.write("{0:{1}^10s}".format(fieldName[2],chr(12288)))objFile.write("\n")#使用eval方法將字符串轉(zhuǎn)換為變量名foritemBookinbook:objFile.write("{0:{1}^10}".format(eval(itemBook)[0],chr(12288)))objFile.write("{0:{1}<20s}".format(eval(itemBook)[1],chr(12288)))objFile.write("{0:<{1}s}".format(chr(32),str(getSize(eval(itemBook)[1]))))objFile.write("{0:{1}>6.2f}".format(eval(itemBook)[2],chr(12288)))objFile.write("\n")objFile.close()defwriteFile2():objFile=open(r"D:\PycharmProject\Unit07\myBook.txt","a")objFile.write("{0:{1}^10}".format(book4[0],chr(12288)))#使用eval方法將字符串轉(zhuǎn)換為變量名objFile.write("{0:{1}<20s}".format(book4[1],chr(12288)))objFile.write("{0:<{1}s}".format(chr(32),str(getSize(book4[1]))))objFile.write("{0:{1}>6.2f}".format(book4[2],chr(12288)))objFile.write("\n")defreadFile1():objFile=open(r"D:\PycharmProject\Unit07\myBook.txt","r")strText=""whileTrue:str=objFile.readline()ifstr!="":strText=strText+strelse:breakprint(strText)objFile.close()defreadFile2():withopen(r"D:\PycharmProject\Unit07\myBook.txt","r")asobjFile:fortxtLineinobjFile.readlines():print(txtLine,end="")objFile.close()try:writeFile1()writeFile2()readFile1()readFile2()exceptExceptionaserror:print(error)單擊工具欄中【保存】按鈕,保存程序文件“7-2.py”。3.運行Python程序在PyCharm主窗口選擇【Run】菜單,在彈出的下拉菜單中選擇【Run】菜單項。在彈出的【Run】對話框中選擇“7-2”選項,程序“7-2.py”開始運行。程序7-2.py的運行結(jié)果如下所示。圖7-1程序7-2.py的運行結(jié)果【任務(wù)7-3】以二進制形式打開文件并讀取其內(nèi)容【任務(wù)描述】(1)在項目Unit07創(chuàng)建Python程序文件7-3.py。(2)自定義函數(shù)readFile(),該函數(shù)以二進制只讀模式“rb”打開文本文件“expectation.txt”,然后讀取該文件的內(nèi)容,并使用函數(shù)decode()將bytes對象轉(zhuǎn)換為文字字符串。(3)調(diào)用自定義函數(shù)readFile(),并以文字形式輸出文件“expectation.txt”的內(nèi)容?!救蝿?wù)實施】在PyCharm項目Unit07中創(chuàng)建Python程序文件7-3.py。在程序文件7-3.py中編寫程序代碼,實現(xiàn)所需功能。fileName=r"D:\PycharmProject\Unit07\expectation.txt"defreadFile(fileName):objFile=open(fileName,"rb")text=objFile.read()strText=text.decode(encoding="utf-8",errors="strict")objFile.close()returnstrTexttry:print(readFile(fileName))exceptExceptionaserror:print(error)程序7-3.py的運行結(jié)果如下所示。Brightsunshine,fullofvitalityandallthingsrenewed【任務(wù)7-4】通過移動文件指針的方法讀取指定字符【任務(wù)描述】(1)在項目Unit07創(chuàng)建Python程序文件7-4.py。(2)以二進制形式打開文本文件“expectation.txt”。電子活頁7-4程序7-4.py代碼(3)結(jié)合移動文件指針的方法seek()從文本文件“電子活頁7-4程序7-4.py代碼【任務(wù)實施】在PyCharm項目Unit07中創(chuàng)建Python程序文件7-4.py。在程序文件7-4.py中編寫程序代碼,實現(xiàn)所需功能。defreadFile():withopen(r"D:\PycharmProject\Unit07\expectation.txt","rb")asobjFile:print("當(dāng)前文件指針的位置1:",objFile.tell())str=objFile.read(6)print("第1次讀取的6個字符:",str.decode(encoding="utf-8",errors="strict"))objFile.seek(7,0)print("當(dāng)前文件指針的位置2:",objFile.tell())str=objFile.read(8)print("第2次讀取的8個字符:",str.decode(encoding="utf-8",errors="strict"))print("指針移動后文件指針的位置3:",objFile.tell())objFile.seek(2,1)str=objFile.read()print("第3次讀取的字符:",str.decode(encoding="utf-8",errors="strict"))print("指針移動后文件指針的位置4:",objFile.tell())objFile.close()try:readFile()exceptExceptionaserror:print(error)程序7-4.py中調(diào)用open()函數(shù)時,使用了“rb”模式,這表明采用二進制模式讀取文本文件,此時文件對象的read()方法返回的是bytes對象,調(diào)用bytes對象的decode()方法將它恢復(fù)成字符串。程序7-4.py的代碼如下所示。當(dāng)前文件指針的位置1:0第1次讀取的6個字符:Bright當(dāng)前文件指針的位置2:7第2次讀取的8個字符:sunshine指針移動后文件指針的位置3:15第2次讀取的8個字符:fullofvitalityandallthingsrenewed指針移動后文件指針的位置4:56單元8數(shù)據(jù)庫訪問與使用【任務(wù)8-1】創(chuàng)建、新增、查詢、刪除SQLite數(shù)據(jù)表【任務(wù)描述】(1)在PyCharm集成開發(fā)環(huán)境中創(chuàng)建項目Unit08。(2)在項目Unit08創(chuàng)建Python程序文件8-1.py。(3)自定義getInsertSql()函數(shù)用于返回SQL插入語句,自定義execInsert()函數(shù)用于向數(shù)據(jù)表中插入多條記錄。(4)創(chuàng)建SQLite數(shù)據(jù)庫文件“電子商務(wù).db”(5)在SQLite數(shù)據(jù)庫“電子商務(wù).db”中如果“用戶表”已存在,先刪除該數(shù)據(jù)表,然后再重新創(chuàng)建數(shù)據(jù)表“用戶表”,該數(shù)據(jù)表包括用戶ID、用戶編號、用戶名稱、密碼4個字段,各字段的數(shù)據(jù)類型及長度見程序文件“8-1.py”中的代碼。(6)向數(shù)據(jù)表“用戶表”中插入5條記錄。(7)查詢用戶名為“admin”,密碼為“666”的記錄?!救蝿?wù)實施】1.創(chuàng)建PyCharm項目Unit08成功啟動PyCharm后,在指定位置“D:\PycharmProject\”,創(chuàng)建PyCharm項目Unit08。2.創(chuàng)建Python程序文件8-1.py電子活頁8-2程序8-1電子活頁8-2程序8-1.py代碼同時PyCharm主窗口顯示程序文件“8-1.py”的代碼編輯窗口,在該程序文件的代碼編輯窗口也自動添加了模板內(nèi)容。3.編寫Python程序代碼在新建文件“8-1.py”的代碼編輯窗口已有模板注釋內(nèi)容下面輸入程序代碼。importsqlite3fieldName=["用戶ID","用戶編號","用戶名稱","密碼"]userData=[(1,"2020011","admin","666"),(2,"2020012","better","888"),(3,"2020013","向前","123456"),(4,"2020014","尋找","123"),(5,"2020015","向好漢","1456")]#SQL創(chuàng)建數(shù)據(jù)表語句,使用三個雙引號,多行字符串定義可以讓程序更加清晰,規(guī)整,可讀性更好sqlCreateTable="""CreateTableifnotexists用戶表(用戶IDint(10)primarykey,用戶編號varchar(10),用戶名稱varchar(30),密碼varchar(20))"""defgetInsertSql():#SQL插入語句strInsert="""insertinto用戶表(用戶ID,用戶編號,用戶名稱,密碼)values(?,?,?,?)"""returnstrInsertdefexecInsert():i=0foriteminuserData:i+=1print("插入第",i,"條記錄,數(shù)據(jù)為:",item[0],item[1],item[2],item[3])cursor.execute(getInsertSql(),(item[0],item[1],item[2],item[3]))try:#連接到SQLite數(shù)據(jù)庫#數(shù)據(jù)庫文件是電子商務(wù).db,如果文件不存在,會自動在當(dāng)前目錄創(chuàng)建conn=sqlite3.connect("電子商務(wù).db")#創(chuàng)建一個游標(biāo)對象Cursorcursor=conn.cursor()cursor.execute("droptableifexists用戶表")#執(zhí)行一條SQL語句,創(chuàng)建userData表cursor.execute(sqlCreateTable)execInsert()mit()strSelect="select*from用戶表where用戶名稱=?and密碼=?"cursor.execute(strSelect,("admin","666"))cursor.execute("select*from用戶表")rows=cursor.fetchall()print("數(shù)據(jù)表userData.db的記錄數(shù)量:",len(ro

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論