大學(xué)計算機(jī)基礎(chǔ)教學(xué)課件_第1頁
大學(xué)計算機(jī)基礎(chǔ)教學(xué)課件_第2頁
大學(xué)計算機(jī)基礎(chǔ)教學(xué)課件_第3頁
大學(xué)計算機(jī)基礎(chǔ)教學(xué)課件_第4頁
大學(xué)計算機(jī)基礎(chǔ)教學(xué)課件_第5頁
已閱讀5頁,還剩116頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1大學(xué)計算機(jī)基礎(chǔ)北京航空航天大學(xué)教學(xué)課件PythonPython簡介簡單易學(xué)解釋執(zhí)行面向?qū)ο罂梢浦残?注意:Python2.x和python3.x并不兼容好習(xí)慣的養(yǎng)成Python編碼規(guī)則縮進(jìn):Python的語法格式,在一行代碼前輸入若干空格表示行與行間的層次關(guān)系,Python中的縮進(jìn)是4個空格,且不能忽略冒號:Python的語法格式,在if,while等語句后要緊跟冒號空行:不是Python的語法格式,函數(shù)間或類間用空行分隔,表示新代碼的開始Python的命名規(guī)則函數(shù)命名:必須以字母或下劃線開頭,可包含任意字母、數(shù)字或下劃線的組合;區(qū)分大小寫;不能是系統(tǒng)保留字類和對象命名:類名首字母需要大寫,其它字母小寫;類私有屬性和方法以兩個下劃線作前綴;對象命名用小寫字母包和模塊命名:均用小寫字母不要含下劃線Python語句注釋常規(guī)注釋:#開頭3條件語句順序執(zhí)行

根據(jù)指令輸入順序依次執(zhí)行跳轉(zhuǎn)執(zhí)行

根據(jù)邏輯表達(dá)式的值跳轉(zhuǎn)執(zhí)行4條件語句猜字(正確數(shù)字為5)從控制臺輸入一個數(shù)字判斷該數(shù)字是否是5如果是5,則輸出正確否則,則輸出失敗判斷用條件語句5print("Welcome!")#input函數(shù)用于從控制臺輸入內(nèi)容,返回string類型g=input("Guessthenumber:")#將string類型轉(zhuǎn)換為int類型guess=int(g)ifguess==5:#判斷語句print("Youwin!")ifguess>5orguess<5:##else:print("Youloose!")print("Gameover!")直接寫5好嗎?用變量代替好嗎?注意:程序中盡量不要直接使用具體值,最好用變量代替條件語句6條件語句邏輯條件判斷離不開邏輯邏輯表達(dá)式——用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯值連接起來的有意義的式子(x>3)邏輯值——True和False邏輯運(yùn)算符——and、or、not關(guān)系表達(dá)式——用關(guān)系運(yùn)算符將兩個表達(dá)式(算術(shù)表達(dá)式、關(guān)系表達(dá)式、邏輯表達(dá)式、賦值表達(dá)式、字符表達(dá)式)連接起來的式子(x>3andx<10)關(guān)系運(yùn)算符——用來比較關(guān)系運(yùn)算符兩邊的值并且得出一個邏輯值7關(guān)系運(yùn)算符含義優(yōu)先級與結(jié)合方向<<=>>=小于小于等于大于大于等于優(yōu)先級相同(高)結(jié)合方向(從左向右)==!=等于不等于優(yōu)先級相同(低)結(jié)合方向(從左向右)條件語句條件判斷

語句不再順次執(zhí)行,而是根據(jù)判斷條件執(zhí)行8if表達(dá)式

語句體if表達(dá)式:

語句體1else:

語句體2偽代碼Python語法-if語句條件語句if,ifelse和ifelif區(qū)別多個if中各條件語句間是并列關(guān)系,他們相互獨(dú)立ifelse或ifelif中各條件語句是遞進(jìn)關(guān)系,他們相互影響若表達(dá)同一含義,ifelse或ifelif執(zhí)行效率比if高。在ifelse中如果if條件滿足,則else不會執(zhí)行。而如果存在多個if語句,各if語句均要執(zhí)行條件判斷。如:當(dāng)輸入a=1,b=1時,程序1輸出:a=1b=1;程序2輸出:a=19ifa==1:print(('a='),a)ifb==1:print(('b='),b)ifa==1:print(('a='),a)elifb==1:print(('b='),b)程序1程序2條件語句例1擴(kuò)展:猜字并給出正確建議(正確數(shù)字為5)從控制臺輸入一個數(shù)字判斷該數(shù)字是否是5如果是5,則輸出正確否則,判斷輸入數(shù)字大小如果大于5,則輸出太大如果小于5,則輸出過小多個判斷用條件嵌套10print("Welcome!")#input函數(shù)用于從控制臺輸入內(nèi)容,返回string類型g=input("Guessthenumber:")#將string類型轉(zhuǎn)換為int類型guess=int(g)ifguess==5:print("Youwin!")else:ifguess>5:print("Toohigh!")else:print("Toolow!")print("Gameover!")條件語句條件嵌套11if條件1為真:

執(zhí)行語句1elif條件2為真:執(zhí)行語句2else:執(zhí)行語句3Python語法-if嵌套if條件1為真:

執(zhí)行語句1else:if條件2為真:

執(zhí)行語句2else:執(zhí)行語句3Python語法-if嵌套條件語句12課堂練習(xí)1、判斷是否是閏年

能被4整除卻不能被100整除或能被400整除的年份是閏年提示:判斷是否能夠整數(shù)用%2、模擬用戶注冊

用戶名長度在3~20之間;賬號必須是數(shù)字;電話號碼長度必須是11位。提示:判斷數(shù)字用isdigit()函數(shù);計算長度用len()函數(shù)。13循環(huán)語句例1擴(kuò)展:失敗后自動重啟從控制臺輸入一個數(shù)字重復(fù)判斷該數(shù)字是否是5如果是5,則輸出正確,結(jié)束執(zhí)行否則,判斷輸入數(shù)字大小,返回初始位置重復(fù)執(zhí)行用循環(huán)14answer=0#定義循環(huán)條件while(answer==0):#循環(huán)語句

print("Welcome!")g=input("Guessthenumber:")guess=int(g)ifguess==5:answer=1print("Youwin!")else:ifguess>5:print("Toohigh!")else:print("Toolow!")print("Gameover!")循環(huán)語句循環(huán)語句

Python有兩類循環(huán)語句:while和for15While條件判斷:

循環(huán)體else:執(zhí)行語句for控制變量in可遍歷的表達(dá)式:

循環(huán)體else:執(zhí)行語句注意:當(dāng)循環(huán)次數(shù)不確定時用whilewhile:需要手動改變條件控制變量for:系統(tǒng)自動改變條件控制變量循環(huán)語句循環(huán)中的跳轉(zhuǎn)語句

Python有兩類循環(huán)跳轉(zhuǎn)語句:break和continuebreak:“跳出,結(jié)束”使流程從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)體下面的語句。Continue:“跳過,回頂”結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定。

16continue和break語句區(qū)別:continue語句只結(jié)束本次循環(huán),而不終止整個循環(huán)執(zhí)行。break語句是結(jié)束整個循環(huán)過程,不再判斷執(zhí)行循環(huán)的條件是否成立。循環(huán)語句提高效率提高效率就是少執(zhí)行代碼17answer=0#定義循環(huán)條件while(answer==0):#循環(huán)語句

print("Welcome!")g=input("Guessthenumber:")guess=int(g)ifguess==5:answer=1print("Youwin!")

breakelse:ifguess>5:print("Toohigh!")else:print("Toolow!")print("Gameover!")循環(huán)中常用三種關(guān)鍵字break:打斷,直接跳出循環(huán)continue:繼續(xù),不再執(zhí)行其后語句但繼續(xù)執(zhí)行下一條循環(huán)pass:過,執(zhí)行循環(huán)操作,但不執(zhí)行任何實際語句循環(huán)語句循環(huán)中的迭代器實現(xiàn)循環(huán)最重要的是確定迭代器。迭代器就是能夠?qū)崿F(xiàn)從左到右、從上到下掃描的函數(shù)。迭代器內(nèi)部通過循環(huán)調(diào)用next方法和捕捉StopIterartion異常來實現(xiàn)對象的遍歷。18可迭代對象迭代器迭代功能文件realine逐行讀取文件內(nèi)容列表,元組,字典,字符串foritemin被遍歷對象:process(item)逐個讀取被遍歷對象中各元素值,不返回索引,只能對元素值順次處理,不靈活forindexinrange(len(被遍歷對象)):process((被遍歷對象[index])逐個讀取被遍歷對象中各元素值,返回索引,用獲得索引讀取值,靈活但繁瑣forindex,keyinenumerate(被遍歷對象):process(index,key)enumerate函數(shù)同時獲得索引和值,靈活快速課堂練習(xí)1、九九乘法表2、查找并替換Namelist=[‘Kate’,’Lily’,’John’,’Guy’],將John替換為Jake3、關(guān)鍵字搜索searchlist=[‘長春花’,‘珍珠花’,‘向日葵’,‘風(fēng)鈴草’,‘金盞菊’,‘夾竹桃’,‘大麗花’],用戶輸入關(guān)鍵字查詢是否存在19注意何時換行?print(end=“”)#強(qiáng)制輸入完畢不換行print(‘\n’)#強(qiáng)制輸入完畢換行Print默認(rèn)自動換行導(dǎo)入包例1擴(kuò)展:正確數(shù)字隨機(jī)生成正確數(shù)字由計算機(jī)隨機(jī)生成而非人為設(shè)定內(nèi)置函數(shù)Python自帶很多內(nèi)置函數(shù),這些函數(shù)各具功能,可省去自編之苦import:函數(shù)在使用前必須導(dǎo)入所屬包module:函數(shù)在Python中以模塊形式存在20總結(jié)程序程序是一組指令的集合普通指令執(zhí)行事情條件指令決定事情循環(huán)指令重復(fù)事情21數(shù)據(jù)結(jié)構(gòu)-列表例:超市貨品快速查找系統(tǒng)超市貨品種類很多,且每天需要不斷增加新貨或下架舊貨,故提供一個快速便捷的物品位置查詢系統(tǒng)非常必要。貨品是按首字的漢語拼音排序擺放的。添加新貨品查詢貨品刪除舊貨品22開始查詢是否存在該貨品?輸入新貨品添加到貨架不添加到貨架查詢貨品位置刪除舊貨品查詢是否存在該貨品?存在則刪除不存在則提示結(jié)束是否是否數(shù)據(jù)結(jié)構(gòu)-列表數(shù)據(jù)結(jié)構(gòu)1:列表

列表是用一對方括號處理一組有序項目的數(shù)據(jù)結(jié)構(gòu),各項目間用逗號區(qū)分,且長度不固定。格式:listname=[element1,element2,…]添加:listname.append(value)或listname.insert(index,value)刪除:listname.remove(value)或dellistname(index)查找:valuein

list,存在返回True,不存在返回False注意:list中index始于0,止于len(index)-123數(shù)據(jù)結(jié)構(gòu)擴(kuò)展:文件操作

為了在程序執(zhí)行完后仍保存結(jié)果,可用文件實現(xiàn)。打開:fileobject=open(‘/路徑/文件名.后綴名’)關(guān)閉:fileobject.close()讀?。篺ileobject.read()或fileobject.readline()或fileobject.readlines()寫入:fileobject=open(‘/路徑/文件名.后綴名’,‘a(chǎn)’)

fileobject=write(‘寫內(nèi)容’)fileobject=writeline(‘寫內(nèi)容’)注意:(1)文件在打開時默認(rèn)是只讀模式,如果想寫入必須修改為可寫模式,修改模式在open函數(shù)中實現(xiàn)。

(2)文件讀取時有三種方法:read(),readline()和readlines()

(3)文件寫入時兩種方法24數(shù)據(jù)結(jié)構(gòu)25read()每次讀取整個文件,它通常用于將文件內(nèi)容放到一個字符串變量中readline()每次讀取一行文件,返回一行字符串readlines()每次讀取整個文件,返回包含文件所有內(nèi)容的字符串列表,每個元素是一行的字符串write()寫入內(nèi)容后光標(biāo)在行末不會換行,下次寫會接著這行寫writeline()寫入內(nèi)容后光標(biāo)跳到下一行起始位置,下次寫會在新行數(shù)據(jù)結(jié)構(gòu)-元組例:水果查詢系統(tǒng),不同季節(jié)盛產(chǎn)什么水果一查便知。數(shù)據(jù)結(jié)構(gòu)2:元組元組適合存儲一組固定數(shù)據(jù),元組和列表的唯一區(qū)別是建立后長度和值均不能修改格式:tuplename=(element1,element2,…)訪問:tuplename[index]二元組:tupletuple=(tuple1,tuple2,…)訪問二元組:tupletuple[indexi][indexj]單個元素的元組:onetuple=(elements1,)逗號不能省略26數(shù)據(jù)結(jié)構(gòu)-字典例:用戶賬號管理系統(tǒng),包括注冊賬戶,登錄已有賬戶、驗證是否登錄成功等。

注冊有用戶名和密碼,且一一對應(yīng),如何便捷存儲他們?數(shù)據(jù)結(jié)構(gòu)3:字典

字典由一系列“key-value”對組成,各字典元素對間無序,通過映射方式存儲。格式:dicname={key1:value1,key2:value2,…}添加:dicname.setdefault(key,[,defaultvalue])刪除:del(dicname[key])訪問:dicname.get(key)27異常擴(kuò)展:捕捉和處理異常

通過編程可以捕捉和處理各種異常,使得程序不因異常而終止。Python捕捉異常有兩種方式:raise和tryexcept。方法1:raise強(qiáng)行產(chǎn)生內(nèi)置異常格式:raise.Exceptionname('errormessage')28x=int(input('enterthedividend'))y=int(input('enterthedivisor'))printx/y#如果y=0,則報錯ZeroDivisionErrorx=int(input('enterthedividend'))y=int(input('enterthedivisor'))ify==0:raiseZeroDivisionError('Thezeroisnotallow')print(x/y)家丑不可外揚(yáng)數(shù)據(jù)結(jié)構(gòu)方法2:tryexcept

自定義各種異常格式:打?。鹤⒁猓?1)一般很難事先知道異常類型或分析出所有異常,所以常用Exception代替各具體異常。(2)一般常用tryexcept而不用raise。29try:x=int(input('enterthedividend'))y=int(input('enterthedivisor'))printx/yexceptZeroDivisionError:print(‘thedivisorshouldnotbezero!')try:

執(zhí)行原語句except(異常名稱1,異常名稱2,…)

執(zhí)行報錯語句try:

執(zhí)行原語句except(異常名稱1,異常名稱2,…)aseprint(e)#打印異常,程序正常執(zhí)行程序組成-指令單條指令

默認(rèn)狀態(tài)下,程序由一條條指令組成,按從上到下順序執(zhí)行。例:繪制一個心形30print('****')print('****')print('***')print('**')print('**')print('*')挑戰(zhàn)下!程序組成-函數(shù)例:兩個山洞中住著善、惡兩只恐龍。游戲規(guī)則:一次只能進(jìn)入一個山洞,善良恐龍會贈予你寶藏;邪惡恐龍會將你吃掉。試試運(yùn)氣吧!31重復(fù)執(zhí)行的代碼一遍遍編寫很麻煩,有什么精簡辦法嗎?程序組成-函數(shù)自定義函數(shù)可以將使用率高、解決特定功能的若干條指令聚集在一起,自定義為一個函數(shù),不僅方便使用,且減少代碼重復(fù)輸入。保留字:def函數(shù)名:見名知意,避免與關(guān)鍵字或內(nèi)置函數(shù)重名函數(shù)調(diào)用:函數(shù)名(實參),參數(shù)可以有0個、1個或多個函數(shù)返回值:return

返回值函數(shù)書寫規(guī)范:函數(shù)體縮排4個空格,勿忘冒號函數(shù)工作流程:在函數(shù)名位置被調(diào)用->傳遞所需參數(shù)->返回執(zhí)行結(jié)果(返回結(jié)果可為空)函數(shù)特點(diǎn)函數(shù)可以被重復(fù)使用一個函數(shù)中可以調(diào)用其他函數(shù)可以用import將其他函數(shù)文件導(dǎo)入當(dāng)前函數(shù)文件,

from函數(shù)文件名import*32程序組成-函數(shù)33deffunction_name(arg1,arg2[,…]):statement[returnvalue]注意:(1)函數(shù)定義必須放在函數(shù)調(diào)用前,否則編譯器會由于找不到該函數(shù)而報錯。(2)帶有函數(shù)的程序在執(zhí)行時要從函數(shù)外的第一條指令處順序執(zhí)行,遇函數(shù)調(diào)用時,轉(zhuǎn)向被調(diào)用函數(shù)名處執(zhí)行,執(zhí)行完畢后返回被調(diào)用處繼續(xù)順序執(zhí)行defchooseCave():#函數(shù)調(diào)用

cave=''whilecave!='1'andcave!='2':print('Whichcavewillyougointo?(1or2)')cave=input()

returncave#函數(shù)返回值程序組成-類和對象現(xiàn)實世界中的類和對象類:是具有相同屬性和行為的一組對象的集合,為屬于該類的全部對象提供了抽象的描述。任何對象都是某個類的實例。對象:是對現(xiàn)實世界中實物的描述,它表示將實物的靜態(tài)屬性和動態(tài)行為封裝在一起的實體。34屬性行為表針其他機(jī)械結(jié)構(gòu)調(diào)節(jié)旋鈕程序組成-類和對象類和對象的關(guān)系

猶如模具與鑄件之間的關(guān)系,一個屬于某類的對象稱為該類的一個實例。35類的一個具體實現(xiàn),稱為實例手表

一塊手表類

對象描述這類對象共有的、本質(zhì)的屬性和行為手表共有的屬性(表針、旋鈕、內(nèi)部結(jié)構(gòu))和行為(調(diào)節(jié)旋鈕)具體到一只圓形的或方形的手表抽象定義具體實例程序組成-類和對象程序設(shè)計中的類和對象類:對象的集合。對象:類的實例。Python中的類和對象如何表示一個坐標(biāo)點(diǎn)(x,y)?

在Python提供的用于表示一組數(shù)據(jù)的已有類中,如list,tuple和dictionary都不能很好的表示坐標(biāo)點(diǎn)特性——x和y是一個整體。自定義一個類:方法1:創(chuàng)建時確定類中變量和函數(shù)方法2:創(chuàng)建時只確定類名36class類名:

def方法名1(self[,arg2,…])

函數(shù)體方法:類中定義的函數(shù)屬性:類中定義的變量class類名:pass#占位符無實際含義類名后無括號有冒號程序組成-類和對象例:坐標(biāo)點(diǎn)和距離37importmathclassmyPoint:passdefmyDis(self,x,y):#處于類外print(math.sqrt(x*x+y*y))point=myPoint()

#類實例化對象myPoint.myDis=myDis#myPoint.myDis中的函數(shù)名可另起名point.x=10point.y=20point.myDis(point.x,point.y)importmathclassmyPoint:

defmyDis(self):print(math.sqrt(self.x*self.x+self.y*self.y))point=myPoint()point.x=10point.y=20point.myDis()方法1方法2注意:類其實是由變量和方法兩部分組成的程序組成-類和對象類中各種變量類變量:在類中函數(shù)外創(chuàng)建的變量,整個類有效,各實例共享self.變量名實例變量:在函數(shù)中創(chuàng)建的變量,僅該函數(shù)內(nèi)有效,各實例獨(dú)有實例公有變量:self.變量名,實例直接訪問實例私有變量:self.__變量名,實例間接訪問,格式為“實例._類名__變量名”

局部變量:變量名,只能在函數(shù)內(nèi)部訪問注意:私有變量名前面的是雙下滑線,類名前面的是單下劃線38實例1實例變量1類變量實例變量2實例2對類變量的修改會影響各實例私有變量是否是畫蛇添足呢?程序組成-類和對象例:圓心計算半徑,周長和面積print(self.radius)#正確print(self.area)#報錯:'myPoint'objecthasnoattribute'area'print(self.__cir)#報錯:'myPoint'objecthasnoattribute'__cir'print(self._myPoint__cir)#正確39importmathclassmyPoint():x0=1#類變量y0=2defmyDis(self):

#公有實例變量

self.radius=math.sqrt((self.x-self.x0)*(self.x-self.x0)+(self.y-self.y0)*(self.y-self.y0))area=math.pi*math.pow(self.radius,2)#局部變量

self.__cir=2*math.pi*self.radius#私有實例變量,注意是長下劃線

_____________#填寫print函數(shù)

point=myPoint()point.x=3point.y=4point.myDis()程序組成-類和對象類中各種方法靜態(tài)方法:用@staticmethod定義且方法中不帶參數(shù),類和實例均可使用但不常用,類.靜態(tài)方法()或?qū)嵗?靜態(tài)方法()類方法:用@classmethod定義且最少帶一個self參數(shù),類和實例均可使用,類.靜態(tài)方法([arg])或?qū)嵗?靜態(tài)方法([arg])實例方法:無需特殊定義且最少帶一個self參數(shù),僅由實例使用,實例.實例方法([arg])私有方法:內(nèi)置方法:Python自帶的特殊方法__init__方法:用于對象初始化,在類的對象被建立時,立刻自動運(yùn)行。__del__方法:用于釋放被占用空間,但需要顯示調(diào)用40注意:(1)類方法中不能使用類中各種變量,只能使用函數(shù)中的形參(2)類方法不需要通過實例即可直接調(diào)用,使用快捷、方便;但占內(nèi)存空間,不易大量創(chuàng)建程序組成-類和對象41importmathclassmyPoint():def__init__(self):#構(gòu)造函數(shù),實例被創(chuàng)建時自動被調(diào)用self.x0=1self.y0=1

@classmethoddefmyArea(self,r):#類函數(shù),類直接調(diào)用無需實例化area=math.pi*math.pow(r,2)print(area)defmyDis(self):self.radius=math.sqrt((self.x-self.x0)*(self.x-self.x0)+(self.y-self.y0)*(self.y-self.y0))print(self.radius)returnself.radius

point=myPoint()point.x=3point.y=4point.myDis()#實例方法需用實例調(diào)用myPoint.myArea(point.myDis())#直接用類調(diào)用,直接傳參數(shù)程序組成-類和對象例:新生報到42classPerson:population=0def__init__(self,name):#構(gòu)造函數(shù)=nameprint()Person.population+=1def__del__(self):#析構(gòu)函數(shù)print(self,name)Person.population-=1ifPerson.population==0:print('Iamthelastone')else:print('Therearestill%dstudentsleft',Person.population)defsayHi(self):print('Hi,mynameis%s'%())defhowMany(self):ifPerson.population==1:print('Iamtheonlyonestudenthere')else:print('Wehave%dstudentshere'%(Person.population))lily=Person('lily')lily.sayHi()lily.howMany()kate=Person('kate')kate.sayHi()kate.howMany()lily.__del__()lily.sayHi()#報錯程序組成-類和對象

表類的內(nèi)置方法43程序組成-類和對象繼承

類可以創(chuàng)建其子類,則該類稱之為父類。共享:子類繼承父類所有的屬性和方法,子類

父類區(qū)別:子類可重新定義父類的某些屬性和方法或創(chuàng)建自己的屬性和方法,子類≠父類層次:子類仍可定義自己的子類,即其父類的孫類優(yōu)點(diǎn):繼承的主要優(yōu)點(diǎn)是代碼重用格式:classclass_sonname(class_fathername)繼承:父類.方法([arg])44∪汽車客車貨車小轎車大客車載貨載人小,速度快大,速度慢程序組成-類和對象例:師生如父子45classSchoolMember:def__init__(self,name,age):=nameself.age=agedeftell(self):print('Name:%s,Age:%s'%(,self.age))classTeacher(SchoolMember):#SchoolMember的子類Teacherdef__init__(self,name,age,salary):#子類重構(gòu)了父類的__init__方法

SchoolMember.__init__(self,name,age)#繼承父類方法

self.salary=salaryprint('InitializedTeacher:%s'%())deftell(self):#子類重構(gòu)了父類的tell方法

SchoolMember.tell(self)#繼承父類方法

print('Salary:%d'%(self.salary))classStudent(SchoolMember):#SchoolMember的子類Studentdef__init__(self,name,age,marks):#子類重構(gòu)了父類的__init__方法

SchoolMember.__init__(self,name,age)self.marks=marksprint('InitializedStudent:%s'%())deftell(self):#子類重構(gòu)了父類的tell方法

SchoolMember.tell(self)print('Marks:%d'%(self.marks))能否修改為私有變量self._age?報錯。私有變量是父類私有且子類不能繼承的。由此可見,私有變量對數(shù)據(jù)起到保護(hù)作用t=Teacher(lily',40,30000)t.tell()程序組成-類和對象多重繼承子類可以同時繼承多個父類格式:classclass_sonname(class_fathername1,

class_fathername2,…)例:家族遺傳46classmyFather:def__init__(self):self.eyes='爸爸的眼睛是雙眼皮'print(self.eyes)classmyMother:def__init__(self):self.forehead='媽媽的額頭有點(diǎn)寬'classmySelf(myFather,myMother):#同時繼承父親類和母親類def__init__(self,face):print('我繼承了')myFather.__init__(self)print('我繼承了')myMother.__init__(self)self.face=faceprint('可是我的臉型是%s'%(self.face))mylook=mySelf('圓臉')程序組成-模塊模塊(module)

模塊即*.py文件,它是把一組相關(guān)函數(shù)、類或代碼保存在一個文件中形成的。其中,類和函數(shù)可以有0到多個。模塊定義:模塊即為*.py文件文件名不能以中文命名,否則導(dǎo)入時報錯模塊使用:調(diào)用模塊用import命令文件名.函數(shù)名,文件名.類名補(bǔ)充:import路徑import導(dǎo)入文件的默認(rèn)路徑是sys.path47其實你已經(jīng)創(chuàng)建很多屬于自己的模塊了注意:導(dǎo)入的模塊要么放置在與輸入它的程序的同一個目錄中;要么用sys.path.append命令將所要導(dǎo)入文件的絕對路徑添加到默認(rèn)路徑中,如sys.path.append(‘c:/test’)。如何讓Python識別自定義導(dǎo)入的文件?在import中指定文件的絕對路徑是否有效?程序組成-包(有問題????)包(packege)

包就是由很多模塊即*.py組成的目錄,即文件夾包的創(chuàng)建:新建文件夾,在文件夾中添加__init__.py文件、其他模塊或子文件夾__init__.py:

控制著包的導(dǎo)入行為為空,則僅導(dǎo)入包,其他什么都不做。添加內(nèi)容:__all__=[文件夾中文件或子文件夾名稱]包的使用:用import或fromimport命令方法一:將包放置到Python34\Lib中,使用時直接引用方法二:將包所在路徑添加到sys.path中,再引用48嘗試多次失???不知原因列表網(wǎng)絡(luò)編程基礎(chǔ)知識IP地址:互聯(lián)網(wǎng)上計算機(jī)必須有唯一的編號才能上網(wǎng)端口:用于區(qū)分同一IP上的不同應(yīng)用服務(wù),0~1023為系統(tǒng)保留1024~65535為用戶自定義TCP/IP協(xié)議:傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議,是面向連接的可靠協(xié)議UDP協(xié)議:用戶數(shù)據(jù)報協(xié)議,是無連接的不可靠協(xié)議Socket套接字:兩個程序之間的信息通道,用于描述IP地址和端口,是一個通信鏈的句柄。49端口1—socket1(響應(yīng)服務(wù)1)端口2—socket2(響應(yīng)服務(wù)2)端口3—socket3(響應(yīng)服務(wù)3)IP地址服務(wù)器客戶端端口1—socket1(請求服務(wù)1)端口2—socket2(請求服務(wù)2)端口3—socket3(請求服務(wù)3)兩個應(yīng)用程序通過套接字通信網(wǎng)絡(luò)編程Socket網(wǎng)絡(luò)編程服務(wù)器端:監(jiān)聽服務(wù)器端請求客戶端:主動連接服務(wù)器端50網(wǎng)絡(luò)編程具體實現(xiàn)格式:socket(socket_family,socket_type,protocol=0)socket_family值為AF_UNIX或AF_INETsocket_type值為SOCK_STREAM或SOCK_DGRAMprotocol一般不賦值,即為0例:服務(wù)器發(fā)送消息,客戶端接收消息服務(wù)器:1)創(chuàng)建:創(chuàng)建服務(wù)器端socket對象s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)2)綁定:將socket綁定到指定地址,該地址必須是一個雙元素元組s.bind((host,port))3)監(jiān)聽:listen方法接收連接請求,可自定義允許連接的客戶端數(shù)目s.listen(connectnum)51host表示服務(wù)器主機(jī)名或IP地址網(wǎng)絡(luò)編程4)連接:服務(wù)器通過socket的accept方法等待客戶請求一個連接connection,address=s.accept()5)處理:服務(wù)器和客戶端通過send和recv方法通信s.send(data.encode())s.recv(recvnum)6)關(guān)閉:服務(wù)器調(diào)用socket的close()方法關(guān)閉連接s.close()客戶端:1)創(chuàng)建:創(chuàng)建客戶端socket對象s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)2)連接:客戶端使用socket的connect方法連接服務(wù)器s.connect((host,port))3)處理:服務(wù)器和客戶端通過send和recv方法通信4)關(guān)閉:客戶端調(diào)用socket的close()方法關(guān)閉連接52客戶端和服務(wù)器端協(xié)議和類型必須一致Python3需要對發(fā)送字節(jié)字符手動編碼和解碼recvnum必須是正整數(shù),表示可接收的最大數(shù)據(jù)量注意是返回是元組客戶端連接的是服務(wù)器主機(jī)名和端口,客戶端端口隨機(jī)分配網(wǎng)絡(luò)編程53importsockets=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#創(chuàng)建服務(wù)器端套接字host=socket.gethostname()#獲取服務(wù)器主機(jī)名或主機(jī)地址port=1234#指定端口號s.bind((host,port))#服務(wù)器將socket綁定到主機(jī)地址和端口s.listen(5)#設(shè)置允許連接的客戶端個數(shù),形成隊列whileTrue:#返回元組,c為連接建立后新的socket對象,服務(wù)器必須用該socket和客戶端通信;address是客戶端的ip地址c,addr=s.accept()

print(addr)data='welcome'#python3需要對字節(jié)字符串手動編碼,也可以用c.send(b'welcome')c.send(data.encode())c.close#關(guān)閉連接importsockets=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#客戶端創(chuàng)建socket對象host=socket.gethostname()port=1234s.connect((host,port))#客戶端連接服務(wù)器print(s.recv(1024).decode())#客戶端接收從服務(wù)器端發(fā)送的數(shù)據(jù)并手動解碼s.close()服務(wù)器客戶端注意:運(yùn)行順序——先啟動服務(wù)器,再啟動客戶端網(wǎng)絡(luò)編程例:服務(wù)器收發(fā)消息,客戶端首發(fā)消息服務(wù)器監(jiān)聽客戶端,當(dāng)收到客戶端消息后判斷執(zhí)行何種動作客戶端向服務(wù)器發(fā)送消息54importsockets=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#創(chuàng)建服務(wù)器端套接字host=socket.gethostname()#獲取服務(wù)器主機(jī)名或主機(jī)地址port=8001#指定端口號s.bind((host,port))#服務(wù)器將socket綁定到主機(jī)地址和端口s.listen(5)#設(shè)置允許連接的客戶端個數(shù),形成隊列whileTrue:c,addr=s.accept()#返回元組,c為連接建立后新的socket對象,服務(wù)器必須用該socket和客戶端通信;address是客戶端的ip地址

try:

c.settimeout(5)#設(shè)置時間延遲

buf=c.recv(1024).decode()#接收客戶端消息ifbuf=='s':data='welcometoserver'c.send(data.encode())else:data='pleasegoout'c.send(data.encode())exceptsocket.timeout:print('timeout')c.close#關(guān)閉連接服務(wù)器網(wǎng)絡(luò)編程55importsocketimporttimes=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#客戶端創(chuàng)建socket對象host=socket.gethostname()port=8001s.connect((host,port))time.sleep(2)data='s's.send(data.encode())print(s.recv(1024).decode())#客戶端接收從服務(wù)器端發(fā)送的數(shù)據(jù)并手動解碼s.close()客戶端網(wǎng)絡(luò)編程例:聊天室客戶端手動連接客戶端和服務(wù)器端互相通信有結(jié)束標(biāo)識56importsocketimporttimes=socket.socket(socket.AF_INET,socket.SOCK_STREAM)host=input("請輸入您想連接的主機(jī)名\n")port=int(input("請輸入服務(wù)器端口號(1025-9999)\n"))s.connect((host,port))whileTrue:data=input("學(xué)生說:\n")s.sendall(data.encode())recvcon=s.recv(1024).decode()ifrecvcon=='q':print("聊天結(jié)束")breakprint(recvcon)time.sleep(2)s.close()客戶端網(wǎng)絡(luò)編程57importsocketimporttimes=socket.socket(socket.AF_INET,socket.SOCK_STREAM)host=socket.gethostname()print("服務(wù)器名為:",host)port=int(input("請輸入服務(wù)器端口號(1025-9999)\n"))s.bind((host,port))s.listen(10)c,addr=s.accept()print('接收到來自消息',addr)whileTrue:recvcon=c.recv(1024).decode()ifrecvcon=='q':data='q'c.sendall(data.encode())print("聊天結(jié)束")breakprint(recvcon)data=input("老師說:\n")c.sendall(data.encode())s.close()服務(wù)器網(wǎng)絡(luò)編程例:服務(wù)器將文件傳輸給客戶端客戶58網(wǎng)絡(luò)編程異步通信和同步通信同步通信:如果客戶端有多個請求,服務(wù)器必須一個一個處理異步通信:如果客戶端有多個請求,服務(wù)器可以同時處理SocketServer分叉處理

當(dāng)多個連接同時到達(dá)服務(wù)器時,主進(jìn)程會為每個連接生成一個子進(jìn)程,而主進(jìn)程繼續(xù)監(jiān)聽。主進(jìn)程和子進(jìn)程同時運(yùn)行,新的連接不會被阻塞。但生成進(jìn)程會消耗資源,因此SocketServer會存在性能問題59GUI實參和形參

實參的個數(shù),類型應(yīng)與形參一一對應(yīng)。形參:在定義函數(shù)時使用的參數(shù),用來接收調(diào)用該函數(shù)時傳入的參數(shù)。在調(diào)用函數(shù)時,形參被創(chuàng)建并被賦實參值。實參:在調(diào)用函數(shù)時使用的參數(shù),必須具有確定的值。實參可以是常量、變量、表達(dá)式、函數(shù)等。全局變量和局部變量創(chuàng)建位置不同全局變量:建立在函數(shù)外的變量局部變量:建立在函數(shù)中的變量兩者生命周期不同全局變量:程序執(zhí)行完畢,生命周期結(jié)束局部變量:函數(shù)執(zhí)行完畢,生命周期結(jié)束60GUI各函數(shù)中局部變量互不可見,如何溝通?參數(shù)傳遞全局變量61defquestion(name):print('Mynameis'+name)print('Whatisyourname?')my_name=input()question(my_name)defquestion():print('Mynameis'+my_name)print('Whatisyourname?')my_name=input()question(my_name)defshowname(name):print('thestringis'+name)print('pleaseinputastring')name=input()print('thestringis'+name)print('pleaseinputastring')name=input()showname(name)print('thestringis'+name)注意:Python中全局變量和局部變量即便重名,其在內(nèi)存中也是存儲兩個變量,它們相互獨(dú)立總結(jié)1、逐條輸出,而非一次輸出

time函數(shù)應(yīng)用:time.sleep(2)2、同類型才可比較,需做類型轉(zhuǎn)換

int(字符)str(數(shù)字)

提示:(1)input輸入是字符類型(2)Python定義變量無需先確定類型3、程序入口

Python中沒有顯示的main函數(shù),其函數(shù)入口即除去def后的第一條語句4、區(qū)分大小寫

Python區(qū)分大小寫,執(zhí)行案例,輸入”YES”和”yes”結(jié)果不同。62GUI練習(xí):1、成績判斷:優(yōu)、良、可、差。規(guī)則:成績>=90為優(yōu)秀;80<=成績<90為良;

70<=成績<80為可;

成績<7為差;提示:注意邏輯表達(dá)式的書寫2、判斷輸入的一個字符是字母還是數(shù)字?提示:①isalpha()和isdigit()函數(shù)的使用②注意if和ifelse的區(qū)別63GUIGUI(GraphicUserInterface)

沒有一件事情能夠離開代碼實現(xiàn)!但還是比C簡單多了!確定界面內(nèi)容——繪制草圖確定界面功能——聯(lián)想、仿真和模擬將界面內(nèi)容和界面功能綁定——觸發(fā)行為對應(yīng)響應(yīng)事件隨時等待用戶輸入——確定的一行代碼術(shù)語Widget:界面上的各種部件,button,label,menuContainer:裝部件的容器Event:界面上各部件能夠響應(yīng)的事件,mouseclicksorpressesofakeyonthekeyboardBind:將界面內(nèi)容和事件綁定,bindasingle-clickoftheleftmousebuttononEventloop:事件循環(huán),等待輸入觸發(fā)事件執(zhí)行64GUIPython繪制GUI

必須導(dǎo)入GUI工具包。Tkinter是python3.2以上自帶版本測試Tkinter

65importTkinterTraceback(mostrecentcalllast):File"<pyshell#2>",line1,in<module>fromTkinterimport*ImportError:Nomodulenamed'Tkinter'輸出該結(jié)果說明系統(tǒng)沒有安裝Tkinter包GUI例1:窗體首先:要導(dǎo)入tkinter包,兩種導(dǎo)入方式:import包from包import特定成員(函數(shù)或變量)或全部(*)其次:要創(chuàng)建窗體對象tkinter.Tk()最后:調(diào)用窗體對象的mainloop方法

66importtkinter#導(dǎo)入包root=tkinter.Tk()#窗體對象root.mainloop()#事件循環(huán)fromtkinterimport*#導(dǎo)入包root=Tk()#窗體對象root.mainloop()#事件循環(huán)注意:①fromimport中特定成員被直接導(dǎo)入到局部名字空間,所以它可以直接使用,而不需要加上模塊名的限定。②盡量少用frommoduleimport,因為判定一個特殊的函數(shù)或?qū)傩允菑哪膩淼挠行├щy,并且會造成調(diào)試和重構(gòu)都更困難。GUI例2:顯示一個按鈕首先,創(chuàng)建窗體:創(chuàng)建窗體對象tkinter.Tk()其次,創(chuàng)建組件:創(chuàng)建Button對象:

Button(parent,[屬性列表]),parent是組件所在父組件設(shè)置Button屬性:名稱、大小、背景顏色等最后,顯示組件:必須用布局管理器將組件顯示在其所在父組件上三種方法:(1)組件.pack(option=value)(2)組件.gird(option=value)(3)組件.place(option=value)67窗體組件組件組件importtkinter#導(dǎo)入包root=tkinter.Tk()#窗體對象myButton=tkinter.Button(root)#按鈕對象myButton["text"]="Hello,World!"#按鈕名稱屬性myButton["background"]="green“#按鈕背景屬性myButton.pack()#顯示組件root.mainloop()#事件循環(huán)GUI例2擴(kuò)展:顯示兩個按鈕通過放置次序可有限制的控制組件位置通過布局管理器可以隨心所欲的擺放組件位置68importtkinter#導(dǎo)入包root=tkinter.Tk()#窗體對象myButton1=tkinter.Button(root)#按鈕對象myButton1["text"]="Hello,World!"#按鈕名稱屬性myButton1["background"]="green"#按鈕背景屬性myButton1.pack(tkinter.RIGHT)#顯示組件myButton2=tkinter.Button(root)#按鈕對象myButton2["text"]="Python!"#按鈕名稱屬性myButton2["background"]="red"#按鈕背景屬性myButton2.pack(tkinter.LEFT)#顯示組件root.mainloop()#事件循環(huán)GUI例2擴(kuò)展:1、幾種設(shè)置組件屬性方法:2、幾種布局組件方法:69myButton["text"]="Hello,World!"myButton["background"]="green"#方法(1)myButton.configure(text="Hello,World!")myButton.configure(background=“green")#方法(2)myButton.configure(text="Hello,World!",background=“green")#方法(3)myButton=Button(root,text="Hello,World!",background=“green")#方法(4)myButton.pack(side=tkinter.RIGHT)#place按父組件位置布局myButton.grid(row=0,column=0,sticky=tkinter.N)#grid按行列位置布局myButton.place(x=0,y=0,anchor=tkinter.NW)#place按坐標(biāo)系位置布局#常用pack和grid方法GUI3、tkinter中15個核心組件:70序號組件名稱組件描述1Button按鈕,響應(yīng)各類事件2Canvas圖形容器,繪制圖表和圖,創(chuàng)建圖形編輯器,實現(xiàn)定制窗口部件3Checkbutton多選按鈕,代表一個變量,有兩個不同值。點(diǎn)擊該按鈕將會在兩個值間切換4Entry文本輸入域5Frame窗體容器,用來布局內(nèi)部組件,可以有邊框和背景6Label顯示一個文本或圖象7Listbox列表,能夠被配置來得到radiobutton或checklist的行為8Menu菜單條。用來實現(xiàn)下拉和彈出式菜單9Menubutton菜單按鈕,實現(xiàn)下拉式菜單10Message顯示文本,類似label,但能夠自動地調(diào)整文本到給定的寬度或比率11Radiobutton單選按鈕,代表一個變量,可以有多個值中的一個。點(diǎn)擊它將為這個變量設(shè)置值,并且清除與這同一變量相關(guān)的其它radiobuttonGUI71序號組件名稱組件描述12Scale滑塊,允許通過滑塊來設(shè)置一數(shù)字值13Scrollbar滾動條,為配合使用canvas,entry,listbox,andtext窗口部件的標(biāo)準(zhǔn)滾動條14Text格式化文本顯示。允許用不同樣式和屬性來顯示和編輯文本。同時支持內(nèi)嵌圖象和窗口15Toplevel容器,作為一個單獨(dú)的、最上面的窗口顯示注意:Tkinter只提供界面繪制功能,但是什么都不會發(fā)生!GUI例3:響應(yīng)鼠標(biāo)事件通過組件的bind方法關(guān)聯(lián)事件處理函數(shù)創(chuàng)建事件處理函數(shù):組件被觸發(fā)后需要完成的功能綁定組件、事件類型和事件處理函數(shù):

widget.bind(event_type_name,event_handler_name)三要素:哪個組件需要響應(yīng)事件、響應(yīng)何種類型的事件、事件的處理句柄是誰72GUI例3:響應(yīng)鼠標(biāo)事件方法1:通過組件的bind方法關(guān)聯(lián)事件處理函數(shù)創(chuàng)建組件:獲取組件實例名創(chuàng)建事件處理函數(shù):組件被觸發(fā)后需要完成的功能綁定組件、事件類型和事件處理函數(shù):

widget.bind(event_type_name,event_handler_name)三要素:哪個組件需要響應(yīng)事件、響應(yīng)何種類型的事件、事件的處理句柄是誰方法2:通過組件的command屬性關(guān)聯(lián)事件處理函數(shù)創(chuàng)建事件處理函數(shù)創(chuàng)建組件和綁定事件:同時完成組件實例名=組件類型(父組件,command=

事件處理函數(shù))注:常用第一種方法,第二種方法不易傳遞參數(shù)73GUI注意:bind調(diào)用的事件響應(yīng)函數(shù)需在被調(diào)用位置之前定義74importtkinter#導(dǎo)入包root=tkinter.Tk()#窗體對象defbutton1Click(event):#自定義事件處理函數(shù)ifmyButton1["background"]=="green":myButton1["background"]="yellow"else:myButton1["background"]="green"myButton1=tkinter.Button(root)#按鈕對象myButton1["text"]="Hello,World!"#按鈕名稱屬性myButton1["background"]="green"#按鈕背景屬性myButton1.pack(side=tkinter.RIGHT)#顯示組件myButton1.bind(“<Button-1>”,button1Click)#綁定事件myButton2=tkinter.Button(root)#按鈕對象myButton2["text"]="Python!"#按鈕名稱屬性myButton2["background"]="red"#按鈕背景屬性myButton2.pack(side=tkinter.LEFT)#顯示組件root.mainloop()#消息循環(huán)GUI例3擴(kuò)展:事件類型<[modifier-]type[-detail]>:modifier和detail是可選項type:事件類型,如鼠標(biāo)事件、鍵盤事件、窗體事件等modifier:用于組合操作,如shift,control等detail:具體的key或鼠標(biāo)位置舉例:<Button-1><Double-Button-1><Shift-Up>75GUIType1——鼠標(biāo)事件Type2——鍵盤事件76<Button-1>:鼠標(biāo)左擊事件<Button-2>:鼠標(biāo)中擊事件<Button-3>:鼠標(biāo)右擊事件<Double-Button-1>:雙擊事件<Triple-Button-1>:三擊事件<B1-Motion>:左鍵移動事件<ButtonRelease-1>:左鍵釋放<Key>:所有key事件特殊按鍵事件:<BackSpace><Return><Shift_L><Shift_R>GUIType3——窗體事件77GUI窗體事件78GUImodifierdetail79名稱描述Altalt按鍵Any任意的按鍵Controlcontrol按鍵Double雙擊Lockshiftlock按鍵Shiftshift按鍵Triple三擊類型名稱描述鼠標(biāo)1鼠標(biāo)左鍵2鼠標(biāo)中鍵3鼠標(biāo)右鍵鍵盤key鍵盤對應(yīng)key鍵GUI例4:響應(yīng)鍵盤事件鍵盤事件和鼠標(biāo)事件相同點(diǎn):同樣需要通過bind綁定組件、鍵盤事件和事件處理函數(shù)。widget.bind(event_type_name,event_handler_name)鍵盤事件和鼠標(biāo)事件不同點(diǎn):需要獲取組件焦點(diǎn):組件.focus_force()需要采用鍵盤事件:修改event_type_name80GUI81importtkinter#導(dǎo)入包root=tkinter.Tk()#窗體對象defbutton1Click(event):#自定義事件處理函數(shù)ifmyButton1["background"]=="green":myButton1["background"]="yellow"else:myButton1["background"]="green"myButton1=tkinter.Button(root)#按鈕對象myButton1["text"]="Hello,World!"#按鈕名稱屬性myButton1["background"]="green"#按鈕背景屬性myButton1.pack(side=tkinter.RIGHT)#顯示組件myButton1.focus_force()#獲取組件焦點(diǎn)myButton1.bind(“<Key-1>”,button1Click)#綁定事件myButton2=tkinter.Button(root)#按鈕對象myButton2["text"]="Python!"#按鈕名稱屬性myButton2["background"]="red"#按鈕背景屬性myButton2.pack(side=tkinter.LEFT)#顯示組件root.mainloop()#消息循環(huán)GUI例5:簡易計算器

用四個文本框?qū)崿F(xiàn)“+-*\”四則運(yùn)算文本框繪制:Entry組件文本框事件響應(yīng):響應(yīng)鍵盤釋放事件文本框值的獲?。篍ntry組件輸入值的獲??;Entry組件輸出值的獲取操作類型識別:根據(jù)輸入操作符判斷運(yùn)算類型82GUI83importtkinter#導(dǎo)入包root=tkinter.Tk()#窗體對象defget_add1(event):globaltext_add1text_add1=add1.get()defget_add2(event):globaltext_add2text_add2=add2.

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論