《數(shù)據(jù)結(jié)構(gòu)》課件1第1章基礎(chǔ)_第1頁(yè)
《數(shù)據(jù)結(jié)構(gòu)》課件1第1章基礎(chǔ)_第2頁(yè)
《數(shù)據(jù)結(jié)構(gòu)》課件1第1章基礎(chǔ)_第3頁(yè)
《數(shù)據(jù)結(jié)構(gòu)》課件1第1章基礎(chǔ)_第4頁(yè)
《數(shù)據(jù)結(jié)構(gòu)》課件1第1章基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩88頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

主要學(xué)習(xí)內(nèi)容Python基礎(chǔ)知識(shí)12Python面向?qū)ο缶幊?數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)模塊Python基礎(chǔ)知識(shí)Python誕生于1990年支持面向?qū)ο蟮慕忉屝陀?jì)算機(jī)程序設(shè)計(jì)語言單句代碼交互式執(zhí)行源程序批量運(yùn)行兩個(gè)系列,互不兼容:2.x停止更新3.x持續(xù)發(fā)展查看Python版本python-V概述幾種主流程序設(shè)計(jì)語言對(duì)比

PythonJavaCC++C#JavaScript運(yùn)行效率★★★★★★★★★★★★學(xué)習(xí)曲線★★★★★★★★★★★代碼移植性★★★★★★★★★★★★開發(fā)效率★★★★★★★★★★★★適用領(lǐng)域★★★★★★★★★★★★解釋型語言VS編譯型語言運(yùn)行環(huán)境官網(wǎng)下載解釋器/downloads/首先,選擇合適的版本,例如:3.9.1然后,根據(jù)自己的操作系統(tǒng)選擇對(duì)應(yīng)安裝程序開始菜單選擇Python交互編程界面集成開發(fā)環(huán)境-IDLEPython解釋器自帶PycharmJetBrains開發(fā)的優(yōu)秀Python開發(fā)環(huán)境變量變量需要使用內(nèi)存變量的三個(gè)屬性名值地址Python變量無需定義即可直接賦值Python解釋器會(huì)根據(jù)賦值自動(dòng)推導(dǎo)出變量的類型Python變量的地址在賦值后可能發(fā)生變化數(shù)值類型四種數(shù)值類型:整型(int)浮點(diǎn)型(float)復(fù)數(shù)型(complex)布爾型(bool)整型最簡(jiǎn)單且常用的數(shù)據(jù)類型Python的整型使用時(shí)無須擔(dān)心變量的“溢出”隨著整型變量值的大小而動(dòng)態(tài)改變所用內(nèi)存的大小整型的運(yùn)算加減乘除乘方求余浮點(diǎn)型浮點(diǎn)型會(huì)出現(xiàn)舍入誤差計(jì)算機(jī)表示浮點(diǎn)數(shù)“先天不足”下面兩個(gè)語句結(jié)果不等print(0.1*26) #0.1乘以26print(0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1) #26個(gè)0.1連加判斷兩個(gè)浮點(diǎn)數(shù)相等求二者差的絕對(duì)值,判斷是否小于一個(gè)很小的值復(fù)數(shù)型復(fù)數(shù)由實(shí)部和虛部組成a+bj其中a表示實(shí)部,b表示虛部real屬性可以得到復(fù)數(shù)的實(shí)部imag屬性可以得到復(fù)數(shù)的虛部conjugate方法可以得到當(dāng)前對(duì)象的共軛復(fù)數(shù)復(fù)數(shù)直接支持加、減、乘、除和乘方數(shù)學(xué)操作對(duì)復(fù)數(shù)執(zhí)行復(fù)雜的數(shù)學(xué)運(yùn)算,需要引入cmath模塊布爾型只有兩個(gè)值TrueFalse布爾型和數(shù)字進(jìn)行數(shù)學(xué)運(yùn)算1+True字符串字符串是數(shù)值型之外使用最多的數(shù)據(jù)類型Python的字符串明顯的特色多樣的書寫方式負(fù)索引靈活的切片字符串是不可修改的如果需要對(duì)字符串進(jìn)行修改,實(shí)質(zhì)是得到一個(gè)新的字符串字符串常量四種方式單引號(hào)'hello'雙引號(hào)"I'mastudent."三個(gè)單引號(hào)三個(gè)雙引號(hào)轉(zhuǎn)義符反斜杠'\'是轉(zhuǎn)義符在字符串常量前面寫一個(gè)r抑制轉(zhuǎn)義print("C:\\Users\\Public\\Downloads")print(r"C:\Users\Public\Downloads")轉(zhuǎn)義表示形式描述\\反斜杠符號(hào)\'單引號(hào)\"雙引號(hào)\b退格(Backspace)\n換行\(zhòng)v縱向制表符\t橫向制表符\r回車字符串索引正向索引從0開始負(fù)索引從-1開始字符串切片切片可以非常方便地得到字符串的子串或者子串的變形字符串[起點(diǎn):終點(diǎn):步長(zhǎng)]切片例子str1="Soochow"print(str1[2:4:1]) #對(duì)第2個(gè)和第3個(gè)字符切片print(str1[2:4:]) #對(duì)第2個(gè)和第3個(gè)字符切片print(str1[::2]) #從頭到尾,每隔一個(gè)字符切片print(str1[::-1]) #通過切片得到字符串的逆序串字符串常見操作字符串連接print('Soochow'+"University") #字符串連接字符串重復(fù)print("dog"*3) #字符串重復(fù)3次得到字符內(nèi)碼print(ord('A')) #得到'A'的內(nèi)碼根據(jù)內(nèi)碼得到字符print(chr(97)) #得到97作為內(nèi)碼所對(duì)應(yīng)的字符字符串常用方法方法說明string.count()返回字符串指定子串出現(xiàn)的次數(shù)string.endswith()檢查字符串是否以指定字符串結(jié)束string.find()查找子串,如果存在返回開始的索引值,否則返回-1string.index()和find()方法一樣,但如果子串不存在將會(huì)出現(xiàn)一個(gè)異常string.isalnum()如果string所有字符都是字母或數(shù)字則返回True,則返回Falsestring.isalpha()如果string所有字符都是字母返回True,否則返回Falsestring.isdecimal()如果string只包含十進(jìn)制數(shù)字返回True,否則返回Falsestring.isdigit()如果string只包含數(shù)字則返回True否則返回Falsestring.isnumeric()如果string只包含數(shù)字字符,則返回True,否則返回Falsestring.isspace()如果string只包含空格,則返回True,否則返回Falsestring.join()拼接字符串string.lower()轉(zhuǎn)換string所有大寫字符為小寫string.replace()字符串替換string.rfind()類似于find()方法,但是從右邊開始查找string.rindex()類似于index()方法,但是從右邊開始查找string.split()拆分字符串string.startswith()檢查字符串是否以指定字符串開頭string.title()所有單詞轉(zhuǎn)換為大寫開始,其余字母均為小寫string.upper()轉(zhuǎn)換string的小寫字母為大寫Python內(nèi)置組合類型四種內(nèi)置組合類型列表元組字典集合列表列表相當(dāng)于其他語言中的動(dòng)態(tài)數(shù)組可以通過下標(biāo)便捷地訪問列表的元素可以很容易地修改列表、添加和刪除元素列表自帶了排序、逆序等方法Python中的列表可以是異構(gòu)的一個(gè)列表中每個(gè)元素的類型可以不一樣列表簡(jiǎn)單例子lst1=[] #空列表print(lst1)lst2=[1,2,3] #列表初始化print(lst2)lst3=[1,'abc',[3,4]] #元素類型不同的列表print(lst3)lst4=list("hello") #將字符串轉(zhuǎn)換為列表print(lst4)列表常用操作和字符串的操作可以通過+運(yùn)算符實(shí)現(xiàn)兩個(gè)列表的連接可以用*運(yùn)算符實(shí)現(xiàn)把一個(gè)列表重復(fù)n次列表常用函數(shù)函數(shù)說明len()返回列表元素個(gè)數(shù)list()將其他序列轉(zhuǎn)換為列表max()返回列表元素最大值min()返回列表元素最小值sorted()返回排序的結(jié)果通過切片修改列表可以通過切片修改列表元素如下的代碼把列表中的元素修改成了0和1交替的數(shù)值。lst=[1,2,3,4,5,6,7,8,9]lst[::2]=[0]*len(lst[::2])lst[1::2]=[1]*len(lst[1::2])print(lst)列表常用方法方法說明list.append()在列表末尾添加新的對(duì)象list.clear()清空列表list.copy()復(fù)制列表list.count()統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù)list.extend()在列表末尾擴(kuò)展某個(gè)列表中的所有元素list.index()從列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置list.insert()將對(duì)象插入列表指定的位置list.pop()刪除列表中的一個(gè)元素(默認(rèn)最后一個(gè)元素),且返回該元素值list.remove()基于值刪除列表中的第一個(gè)匹配項(xiàng)list.reverse()逆序列表中元素list.sort()對(duì)列表進(jìn)行排序append和extend辨析append方法lst=[1,3,5]lst.append([2,7])print(lst)結(jié)果是:[1,3,5,[2,7]]extend方法lst=[1,3,5]lst.extend([2,7])print(lst)結(jié)果是:[1,3,5,2,7]sort方法和sorted函數(shù)辨析二者都可以對(duì)列表排序sort方法對(duì)當(dāng)前對(duì)象排序當(dāng)前對(duì)象會(huì)被修改成排序后的結(jié)果該方法的返回結(jié)果是Nonelst=[1,2,5,3]lst.sort() #lst中的數(shù)據(jù)被排序sorted函數(shù)第一個(gè)參數(shù)是待排序的數(shù)據(jù)但是并不會(huì)修改它將排序結(jié)果以列表形式返回lst=[1,2,5,3]res=sorted(lst) #lst中的數(shù)據(jù)保持原序,res中是排序的結(jié)果列表的淺拷貝和深拷貝Python列表之間賦值默認(rèn)是淺拷貝lst1=[1,3,5]lst2=lst1lst2[2]=7print(lst1) #此時(shí)lst1也已經(jīng)變成了[1,3,7]列表的深拷貝lst1=[1,3,5]lst2=lst1.copy() #利用copy方法實(shí)現(xiàn)lst2和lst1分別是獨(dú)立的內(nèi)存lst3=lst1[::] #利用分片實(shí)現(xiàn)lst3和lst1分別是獨(dú)立的內(nèi)存元組元組可以看成不可修改的列表有些數(shù)據(jù)是只讀數(shù)據(jù)選用元組將會(huì)避免誤修改數(shù)據(jù)導(dǎo)致程序邏輯錯(cuò)誤元組定義使用圓括號(hào)空的元組就是一對(duì)空的圓括號(hào)tup1=() #空元組如果元組只包含一個(gè)元素,需要在此元素后面添加逗號(hào)tup2=(3,) #一個(gè)元素的元組從列表得到元組lst=['武漢','孝感','黃岡']tups=tuple(lst) #從列表得到元組元組補(bǔ)充說明元組的元素不可以刪除可以用del刪除整個(gè)元組如果確實(shí)需要從元組刪除元素通常是生成新的元組集合集合是一個(gè)無序的且無重復(fù)元素的序列集合中的數(shù)據(jù)對(duì)于Python程序員而言是無序的集合非常適合用于去除重復(fù)項(xiàng)可以使用大括號(hào){}或者set()函數(shù)創(chuàng)建集合建一個(gè)空集合必須用set()而不是用一對(duì)空的{}和空字典產(chǎn)生二義性在向集合中添加元素時(shí),如果該元素不存在則添加,否則不進(jìn)行任何操作集合常用方法方法說明add()為集合添加元素clear()清除集合的所有元素copy()產(chǎn)生集合的一個(gè)副本difference()返回多個(gè)集合的差集discard()刪除集合指定的元素,如果不存在就放棄intersection()返回集合的交集isdisjoint()判斷兩個(gè)集合是否包含相同的元素issubset()判斷指定集合是否為該方法參數(shù)集合的子集issuperset()判斷指定集合是否為該方法參數(shù)集合的超集remove()刪除指定元素,如果不存在就拋出異常symmetric_difference()返回兩個(gè)集合不重復(fù)的元素集合union()返回兩個(gè)集合的并集update()給集合添加元素字典列表、元組和字符串都是用整數(shù)作為索引從而訪問元素字典用關(guān)鍵字作為索引字典用于表示“鍵:值”對(duì)的數(shù)據(jù),鍵就是關(guān)鍵字,具有唯一性在一個(gè)字典中一個(gè)關(guān)鍵字只能出現(xiàn)一次,不可以重復(fù)值可以重復(fù)字典中的數(shù)據(jù)對(duì)于Python程序員而言是無序的創(chuàng)建字典顯式創(chuàng)建字典的語法如下:字典名={[關(guān)鍵字1:值1[,關(guān)鍵字2:值2,……,關(guān)鍵字n:值n]]}幾個(gè)創(chuàng)建字典的例子dict1={} #空字典dict2=dict() #空字典dict3={'壹':1,'貳':2,'叄':3} #顯式定義字典dict4=dict((['dog','狗'],['cat','貓'])) #基于元組定義字典訪問字典的元素兩種方法獲取指定鍵的值方括號(hào)dict1={'壹':1,'貳':2,'叄':3}print(dict1[‘壹’]) #輸出1print(dict1[‘肆’]) #該語句會(huì)出錯(cuò)get方法dict1={'壹':1,'貳':2,'叄':3}print(dict1.get([‘壹’],None))

#輸出1print(dict1.get([‘肆’],None)) #輸出None字典常用方法方法說明clear()刪除字典內(nèi)所有元素copy()返回一個(gè)字典的拷貝fromkeys()基于現(xiàn)有的序列創(chuàng)建一個(gè)新字典get()返回指定鍵的值,如果值不在字典中返回指定的默認(rèn)值items()以列表返回可遍歷的(鍵,值)keys()返回所有的鍵update()合并指定字典的項(xiàng)到當(dāng)前字典values()返回所有的值pop()刪除字典給指定鍵所在的項(xiàng),并返回該項(xiàng)的值has_key()判斷指定的鍵在字典中是否存在字典例子words={"星期一":"monday",

"星期二":"tuesday","星期三":"wendsday","星期四":"thursday","星期五":"friday","星期六":"saturday","星期天":"sunday"}word=input("請(qǐng)輸入中文")print(words.get(word,"查無此詞"))Python運(yùn)算符運(yùn)算符可以對(duì)一個(gè)或者多個(gè)操作數(shù)進(jìn)行計(jì)算并返回結(jié)果單目運(yùn)算符(一元運(yùn)算符)not雙目運(yùn)算符(二元運(yùn)算符)and常用運(yùn)算符設(shè)num1=3,num2=5運(yùn)算符類型運(yùn)算符說明算術(shù)運(yùn)算符+加法,num1+num2的結(jié)果是5-減法,num1-num2的結(jié)果是-2*乘法,num1*num2的結(jié)果是15/除法,num1*num2的結(jié)果是0.6%求余,num1%num2的結(jié)果是3**乘方,num1**num2的結(jié)果是243//整數(shù)除,num1//num2的結(jié)果是0關(guān)系運(yùn)算符>

大于,num1>num2的結(jié)果是False<

小于,num1<num2的結(jié)果是True>=大于等于,num1>=nuum2的結(jié)果是False<=小于等于,num1<=num2的結(jié)果是True==等于,num1==num2的結(jié)果是False!=不等于,num1!=num2的結(jié)果是True邏輯運(yùn)算符and邏輯與,num1>1andnum2<6的結(jié)果為Trueor邏輯或,num1>=4ornum2<=5的結(jié)果為Truenot邏輯非,notnum1的結(jié)果為False常用運(yùn)算符(續(xù))設(shè)num1=3,num2=5運(yùn)算符類型運(yùn)算符說明簡(jiǎn)單賦值運(yùn)算符=賦值運(yùn)算符,num1=num2的結(jié)果是使得num1等于5位運(yùn)算符&按位與,num1&num2的結(jié)果是1|按位或,num|num2的結(jié)果是7~按位取反,~num1的結(jié)果是-4^按位異或,num1^num2的結(jié)果是6<<

左移,num1<<1的結(jié)果是6>>

右移,num1>>1的結(jié)果是1成員資格運(yùn)算符in是否存在,num1in[1,3,5]的結(jié)果為Truenotin是否不存在,num2notin[2,4,6]的結(jié)果為True身份運(yùn)算符is是否引用同一對(duì)象,num1isnum2的結(jié)果是Falseisnot是否引用非同一對(duì)象,num1isnotnum2的結(jié)果是True復(fù)合運(yùn)算符用二元運(yùn)算符和“=”組合而成+=-=*=/=……例子num1=3num1+=1 #使用復(fù)合運(yùn)算符給num1加1num1=num1+1 #使用簡(jiǎn)單運(yùn)算符給num1加1運(yùn)算符被重載一個(gè)運(yùn)算符在不同上下文有不同含義例如:+3+5 #數(shù)值相加[1,2,3]+[4,5,6] #列表拼接“hello”+“world!” #字符串連接(3+5j)+(4+7j) #復(fù)數(shù)相加==和is運(yùn)算符辨析==判斷兩個(gè)對(duì)象的值是否相等is判斷兩個(gè)對(duì)象是否引用了同一個(gè)對(duì)象例子:lst1=[1,2]lst2=[1,2]print(lst1==lst2) #此行會(huì)輸出Trueprint(lst1islst2) #此行會(huì)輸出False運(yùn)算符的優(yōu)先級(jí)序號(hào)運(yùn)算符說明1**乘方2~按位取反3+、-正、負(fù)4*、/、%、//乘、除、求余、整除5+、-加、減6<<、>>移位運(yùn)算符7&按位與8^按位異或9|按位或10<、<=、>、>=、!=、==關(guān)系運(yùn)算符11is、isnot身份運(yùn)算符12in、notin成員測(cè)試13not邏輯非14and邏輯與15or邏輯或16=賦值(包括復(fù)合賦值)圓括號(hào)改變優(yōu)先級(jí)在編寫程序遇到優(yōu)先級(jí)不太清晰時(shí)通過圓括號(hào)指明優(yōu)先順序可以提高代碼的可讀性例子:num1>2andnum1<5ornum2>4andnum2<8(num1>2andnum1<5)or(num2>4andnum2<8)#雖然執(zhí)行結(jié)果一樣,但前者的可讀性就弱于后者函數(shù)函數(shù)是可重復(fù)使用的程序代碼段是一個(gè)能完成特定功能的代碼塊。分類:內(nèi)置函數(shù)用戶自定義函數(shù)優(yōu)點(diǎn)便于程序架構(gòu)使得問題被分而治之便于協(xié)作代碼編寫提高代碼復(fù)用降低代碼冗余……函數(shù)的定義定義:指定函數(shù)名設(shè)計(jì)函數(shù)的形式參數(shù)實(shí)現(xiàn)函數(shù)的功能代碼形式:def函數(shù)名([形式參數(shù)表]):

函數(shù)體注意點(diǎn)其中函數(shù)名和變量名一樣,需要盡量做到顧名思義函數(shù)的形式參數(shù)可以多個(gè),也可沒有,沒有參數(shù)時(shí)圓括號(hào)不能省略函數(shù)體屬于函數(shù)定義的內(nèi)部語句塊,必須縮進(jìn)函數(shù)例子defisPrime(num):'''

本函數(shù)用于判斷一個(gè)正整數(shù)是不是質(zhì)數(shù)

:paramnum: 待判斷的正整數(shù)

:return: True-是質(zhì)數(shù)

Fasle-不是質(zhì)數(shù)

None-參數(shù)不合法

'''ifisinstance(num,int)==False:

returnNoneifnum<=0:returnNoneifnum==1:returnFalseimportmathmaxNumber=int(math.sqrt(num))foriinrange(2,maxNumber+1):ifnum%i==0:returnFalsereturnTrue函數(shù)的返回值函數(shù)可以用return語句向調(diào)用者傳遞值Python中函數(shù)的返回值非常靈活可以是數(shù)值常量、變量、表達(dá)式等,甚至是函數(shù)如果一個(gè)函數(shù)沒有return語句,那么該函數(shù)最終會(huì)返回NonePython的函數(shù)一定有返回值在執(zhí)行時(shí)一旦遇到return語句,該函數(shù)后續(xù)代碼將不再執(zhí)行一次返回多個(gè)值樣例:defcalc(marks):maxVal=max(marks)minVal=min(marks)returnmaxVal,minVal,(sum(marks)-maxVal-minVal)/(len(marks)-2)maxMark,minMark,averMark=calc([88,65,78,99,45,72])print('最高分:',maxMark)print('最低分:',minMark)print('平均分:',averMark)函數(shù)調(diào)用形式參數(shù)定義函數(shù)時(shí)的參數(shù)實(shí)際參數(shù)調(diào)用函數(shù)時(shí)的參數(shù)調(diào)用函數(shù)時(shí)通常需要滿足兩個(gè)條件:(1)實(shí)際參數(shù)和形式參數(shù)的數(shù)量相同(2)實(shí)際參數(shù)的順序和形式參數(shù)一一對(duì)應(yīng)普通對(duì)象參數(shù)傳遞普通對(duì)象的值傳遞是單向的defexchange(num1,num2):num1,num2=num2,num1print(num1,num2) #輸出交換后的值num1=5num2=7print(num1,num2) #輸出調(diào)用前的值,是5,7exchange(num1,num2) #試圖交換print(num1,num2) #輸出調(diào)用后的值,還是5

7可變對(duì)象參數(shù)傳遞可變對(duì)象的值傳遞是雙向的defchange(lst,dict1):lst[0]=2dict1['one']="一"lst=[1,2,3]dict1={'one':1}change(lst,dict1)print(lst)print(dict1)調(diào)用函數(shù)指定參數(shù)名用時(shí)允許采用指定形式參數(shù)名的方式實(shí)現(xiàn)“亂序”調(diào)用defexample(num1,num2):print("num1=",num1,"num2=",num2)example(20,10)example(num2=10,num1=20)函數(shù)的形式參數(shù)指定默認(rèn)值科學(xué)的默認(rèn)值可以為函數(shù)調(diào)用者帶來便利例如內(nèi)置排序函數(shù):sorted(iterable,key=None,reverse=False)后面兩個(gè)參數(shù)都提供了默認(rèn)值常用內(nèi)置函數(shù)函數(shù)名說明bin()返回?cái)?shù)字轉(zhuǎn)2進(jìn)制的結(jié)果字符串chr()返回內(nèi)碼所對(duì)應(yīng)的字符eval()計(jì)算表達(dá)式的值help()返回指定模塊或者函數(shù)的說明文檔hex()返回?cái)?shù)字轉(zhuǎn)16進(jìn)制的結(jié)果字符串id()返回對(duì)象的內(nèi)存地址isinstance()判斷一個(gè)對(duì)象是否指定類的實(shí)例map()返回對(duì)指定序列映射后的迭代器ord()返回字符的內(nèi)碼,對(duì)于西文而言就是ASCII碼range()返回一個(gè)可迭代對(duì)象type()返回對(duì)象的類型輸入函數(shù)內(nèi)置input函數(shù)input([prompt])其中的prompt是運(yùn)行時(shí)給用戶的提示字符串該函數(shù)的返回值是字符串樣例代碼str1=input("請(qǐng)輸入一個(gè)字符串") #取字符串輸入則無須轉(zhuǎn)換print(str1) num=int(input("請(qǐng)輸入一個(gè)整數(shù)")) #可以int強(qiáng)制轉(zhuǎn)換print(num)nums=list(map(int,input("請(qǐng)輸入多個(gè)整數(shù)用空格分開").split())) #獲取多個(gè)整數(shù)到列表print(nums)輸出函數(shù)print函數(shù)用于打印輸出,該函數(shù)的原型如下:print(*objects,sep='',end='\n',file=sys.stdout,flush=False)objects表示可以一次輸出多個(gè)對(duì)象輸出多個(gè)對(duì)象時(shí),需要用“,”分隔sep用于分隔輸出的多個(gè)對(duì)象,默認(rèn)值是一個(gè)空格end表示print輸出完成后的結(jié)束符號(hào),默認(rèn)值是換行符'\n'file表示要重定向的文件對(duì)象,默認(rèn)值sys.stdout為標(biāo)準(zhǔn)輸出(顯示器)flush表示輸出是否被緩存文件文件是存儲(chǔ)在外部介質(zhì)上一組相關(guān)信息的集合文件為程序持久存儲(chǔ)數(shù)據(jù)提供保障對(duì)文件操作可以抽象成三個(gè)步驟:打開文件、進(jìn)行讀寫操作關(guān)閉文件讀操作是指從文件輸入數(shù)據(jù)到內(nèi)存變量寫操作是指從內(nèi)存輸出到文件打開文件打開文件必須用open函數(shù),該函數(shù)原型如下:open(file,mode='r',buffering=-1,encoding=None)file參數(shù)是一個(gè)字符串,用于指定文件的路徑可以是相對(duì)路徑,也可以是絕對(duì)路徑mode也是一個(gè)字符串,用于指定打開文件的模式encoding用于指定文件的編碼格式打開文件的方式模式說明b二進(jìn)制模式r以只讀方式打開文本文件。rb以二進(jìn)制格式打開一個(gè)文件用于只讀r+打開一個(gè)文件用于讀寫rb+以二進(jìn)制格式打開一個(gè)文件用于讀寫w打開一個(gè)文件只用于寫入。如果該文件已存在則打開文件(原有內(nèi)容會(huì)被刪除),否則創(chuàng)建新文件wb以二進(jìn)制格式打開一個(gè)文件只用于寫入。如果該文件已存在則打開文件(原有內(nèi)容會(huì)被刪除),否則創(chuàng)建新文件w+打開一個(gè)文件用于讀寫。如果該文件已存在則打開文件(原有內(nèi)容會(huì)被刪除),否則創(chuàng)建新文件wb+以二進(jìn)制格式打開一個(gè)文件用于讀寫。如果該文件已存在則打開文件(原有內(nèi)容會(huì)被刪除),否則創(chuàng)建新文件a打開一個(gè)文件用于追加。如果該文件已存在則打開文件并定位文件指針到文件結(jié)尾,否則創(chuàng)建新文件ab以二進(jìn)制格式打開一個(gè)文件用于追加。如果該文件已存在則打開文件并定位文件指針到文件結(jié)尾,否則創(chuàng)建新文件a+打開一個(gè)文件用于讀寫。如果該文件已存在則打開文件并定位文件指針到文件結(jié)尾,否則創(chuàng)建新文件ab+以二進(jìn)制格式打開一個(gè)文件用于追加。如果該文件已存在則打開文件并定位文件指針到文件結(jié)尾,否則創(chuàng)建新文件文件常用讀寫方法方法說明close()關(guān)閉文件flush()強(qiáng)制把內(nèi)部緩沖區(qū)的數(shù)據(jù)立刻寫入文件read()從文件讀取指定的字節(jié)數(shù),如果為空或?yàn)樨?fù)則讀取所有readline()讀取一行readlines()讀取所有行并返回列表seek()移動(dòng)文件讀取指針到指定位置tell()返回文件當(dāng)前位置。write()將字符串寫入文件writelines()向文件寫入列表中所有數(shù)據(jù)實(shí)現(xiàn)文本文件復(fù)制的例子defcopyFile(src,des):srcFp=open(src,"r")desFp=open(des,"w")ch=srcFp.read(1)whilech!="":desFp.write(ch)ch=srcFp.read(1)srcFp.close()desFp.close()異常處理軟件天然的復(fù)雜性,運(yùn)行時(shí)可能遇到各種各樣的異常:例如網(wǎng)絡(luò)通信程序可能遇到網(wǎng)絡(luò)斷開、通訊不暢的情況大數(shù)據(jù)處理程序可能遇到內(nèi)存不夠的情況程序錯(cuò)誤可以分為語法錯(cuò)誤運(yùn)行錯(cuò)誤邏輯錯(cuò)誤一個(gè)良好的程序需要處理程序運(yùn)行時(shí)的異常,使得程序在運(yùn)行遇到異常時(shí)做出合理的反應(yīng)Python與異常異常是一個(gè)事件,它發(fā)生在程序的運(yùn)行期在遇到無法正常處理的代碼時(shí)會(huì)引發(fā)異常出現(xiàn)異常會(huì)影響程序的正常執(zhí)行,將導(dǎo)致程序的運(yùn)行過程偏離設(shè)計(jì)的流程。當(dāng)Python程序發(fā)生異常時(shí),必須捕獲并處理它,否則程序?qū)?huì)被終止執(zhí)行。程序員希望程序的執(zhí)行過程在掌控之中,不希望因?yàn)橛脩舨僮鞑划?dāng),或者運(yùn)行環(huán)境變化等緣由導(dǎo)致程序被終止執(zhí)行。Python對(duì)異常的支持Python語言對(duì)異常處理提供了完備的支持主要涉及的關(guān)鍵字try監(jiān)視異常raise拋出異常except捕獲異常else不出現(xiàn)異常時(shí)執(zhí)行其語句塊finally無論是否出現(xiàn)異常都會(huì)執(zhí)行其語句塊異常處理器try:

語句塊except異常類型1[as錯(cuò)誤描述]: 異常處理語句塊1……except異常類型n[as錯(cuò)誤描述]: 異常處理語句塊nexcept:

默認(rèn)異常處理語句塊else:

未處理異常才執(zhí)行的語句塊finally:

一定被執(zhí)行的語句塊錯(cuò)誤與異常處理原則程序遇到錯(cuò)誤情況時(shí),如果還能以某種方式執(zhí)行下去,不要隨意終止執(zhí)行,不輕易崩潰遇到錯(cuò)誤時(shí),不出現(xiàn)任意的非預(yù)期行為在某個(gè)局部發(fā)生錯(cuò)誤時(shí),盡可能局部處理異常處理機(jī)制已經(jīng)成為現(xiàn)代程序設(shè)計(jì)處理錯(cuò)誤的標(biāo)準(zhǔn)模式使用了異常處理之后會(huì)顯著增強(qiáng)程序的健壯性模塊一個(gè)大的程序往往包括多個(gè)源文件通常包含用戶自定義的變量、函數(shù)和類一個(gè)源文件可以被稱為一個(gè)模塊若干個(gè)功能相關(guān)的模塊組合在一起稱為包包中必須有一個(gè)名稱為__init__.py的文件包中除了有模塊,還可以有包一個(gè)包中也可以只有一個(gè)模塊包和模塊兩個(gè)詞匯有時(shí)區(qū)分的并不明顯若干個(gè)功能相關(guān)的包在一起稱為庫(kù)標(biāo)準(zhǔn)庫(kù)和第三方庫(kù)標(biāo)準(zhǔn)庫(kù)安裝Python時(shí)附帶的庫(kù)例如:randommath第三方庫(kù)需要另外安裝的庫(kù)例如:numpywordcloud三種導(dǎo)入模塊的方式import語句導(dǎo)入模塊,三種方式import模塊名1[as別名],[模塊名2[as別名]…]importmathprint(math.sqrt(2))from模塊名import函數(shù)名[as別名],[函數(shù)名[as別名]…]frommathimportsqrtprint(sqrt(2))from模塊名import*frommathimport*print(sqrt(2))管理第三方包Python附帶了包的管理工具:pip提供了對(duì)Python包的查找、下載、安裝、卸載的功能功能命令顯示版本pip--version查看幫助pip--help安裝包pipinstall包名安裝指定版本的包pipinstall包名==版本號(hào)升級(jí)包pipinstall–u包名顯示包的信息pipshow包名列出已經(jīng)安裝的包piplist查看可以升級(jí)的包piplist-o搜索包pipsearch包名卸載包pipuninstall包名面向?qū)ο缶幊堂嫦驅(qū)ο蠡靖拍铑悾壕哂邢嗤瑢傩院头椒ǖ膶?duì)象的集合。對(duì)象:對(duì)象是類的實(shí)例,類和對(duì)象是抽象和具體的關(guān)系,一個(gè)類可以產(chǎn)生多個(gè)實(shí)例。方法:類中的函數(shù)被稱為方法,方法是類的動(dòng)態(tài)特性,方法也被稱為函數(shù)成員。屬性:類中的變量被稱為屬性,屬性是類的靜態(tài)特性,屬性也被稱為數(shù)據(jù)成員。封裝與隱藏:在設(shè)計(jì)類的時(shí)候?qū)⒊橄蟪龇椒ê蛯傩缘倪^程叫封裝,然后通過設(shè)置權(quán)限將部分方法和屬性不為外界所用的過程叫隱藏。繼承與派生:允許在創(chuàng)建類時(shí)基于已有的類擴(kuò)展,已有的類叫基類(父類),新建的類叫派生類(子類)類的定義不僅可以使用系統(tǒng)定義好的類,也支持用戶自定義類定義類的語法如下:class類名: 屬性的定義

方法的定義方法的self參數(shù)類成員函數(shù)的第一個(gè)參數(shù)都是self,self是一個(gè)約定俗成的變量名,用于表示當(dāng)前對(duì)象類的成員函數(shù)是本類的所有對(duì)象共享的每個(gè)對(duì)象調(diào)用成員函數(shù)時(shí),自動(dòng)把自身傳遞過來通過self可以得到調(diào)用成員函數(shù)的當(dāng)前對(duì)象類變量和實(shí)例變量類變量類變量是定義在類內(nèi)部但又在類的成員函數(shù)之外它是類的所有對(duì)象共享的、公用的一個(gè)類有一個(gè)類變量,該類產(chǎn)生多少個(gè)對(duì)象,此類變量只有一份實(shí)例變量實(shí)例變量是每個(gè)實(shí)例獨(dú)有的每個(gè)對(duì)象的實(shí)例變量互不影響一個(gè)類有一個(gè)實(shí)例變量,該類產(chǎn)生了n個(gè)對(duì)象,就有n份此實(shí)例變量成員的權(quán)限面向?qū)ο蟮碾[藏就必須依賴私有和保護(hù)權(quán)限才能落地實(shí)現(xiàn)類中的成員可以有三種權(quán)限:公有私有保護(hù)如果類的成員稱為內(nèi)部,類的使用者稱為外部在類內(nèi)外部都可以訪問公有的成員只有內(nèi)部可以訪問私有的成員內(nèi)部和子類的成員函數(shù)都可以訪問保護(hù)的成員外部無法訪問保護(hù)成員__init__方法__init__是類的一個(gè)特殊方法,被稱為類的構(gòu)造方法兩個(gè)下劃線開頭暗示了它是私有的不可以被類外部直接調(diào)用。每當(dāng)用類產(chǎn)生對(duì)象,都會(huì)自動(dòng)調(diào)用此方法它非常適合用于初始化數(shù)據(jù)成員繼承與派生類的兩個(gè)作用是產(chǎn)生對(duì)象作為基類進(jìn)行繼承派生繼承派生的語法如下:class類名(基類名稱1[,基類名稱2…]): 屬性的定義 方法的定義迭代器迭代器是一個(gè)可以遍歷而且自己記錄遍歷位置的對(duì)象它的工作模式屬于“懶惰模式”在調(diào)用迭代器時(shí)才會(huì)返回下一個(gè)元素在處理海量數(shù)據(jù)時(shí)就無須預(yù)先產(chǎn)生大量數(shù)據(jù)或者把大量數(shù)據(jù)加載到內(nèi)存迭代器從數(shù)據(jù)的第一個(gè)元素開始訪問,直到所有的元素被訪問完結(jié)束迭代器只能單向往前,不可以后退迭代器內(nèi)部需要維護(hù)自己的狀態(tài)一個(gè)類如果實(shí)現(xiàn)了__iter__和__next__方法就屬于迭代器類生成器生成器也是可迭代的不用實(shí)現(xiàn)__iter__和_

溫馨提示

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

評(píng)論

0/150

提交評(píng)論