Python期末復(fù)習(xí)筆記考研復(fù)習(xí)重點_第1頁
Python期末復(fù)習(xí)筆記考研復(fù)習(xí)重點_第2頁
Python期末復(fù)習(xí)筆記考研復(fù)習(xí)重點_第3頁
Python期末復(fù)習(xí)筆記考研復(fù)習(xí)重點_第4頁
Python期末復(fù)習(xí)筆記考研復(fù)習(xí)重點_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Python語言基礎(chǔ)

python規(guī)范

命名規(guī)則

1.必須以下劃線或字母開頭

2.前后單下劃線為系統(tǒng)變量

3.雙下劃線開頭為類的私有變量

4.關(guān)鍵字不能用作變量名

注釋

?單行注釋以#開頭

?多行注釋可用多個#或者用三引號(文檔注釋)

多行語句

?行尾使用反斜線(\)來續(xù)行

同一行寫多條語句

?語句間用分號(;)分隔

輸入輸出

輸出print()

?print默認(rèn)在末尾換行

a=1

b=2

c=3#直接輸出多個變量printQ,b,c)#輸出:123

#使用end參數(shù)用指定的字符替換末尾的換行符print(a,encF'@')#輸出:

#使用formatprint(5a=[}9.format(a))#輸出:

a=lprintCa={0},b={l},c{2}'.format(a,b,c))#輸出:a=l,b=2,c3

輸入input()

?input輸入的始終是字符串,需要轉(zhuǎn)換為其他數(shù)據(jù)類型使用

python數(shù)據(jù)類型

六個標(biāo)準(zhǔn)數(shù)據(jù)類型

1.Number(數(shù)字)

2.String(字符串)

3.List(列表)

4.Tuple(元組)

5.Sets(集合)

6.Dictionary(字典)

Number

?包括:int(整型)、float(浮點型)、bool(布爾型)、complex(復(fù)數(shù))、long(長

整型)

?清楚哪些值轉(zhuǎn)換為布爾類型后值是False

print(bool([]))#輸出:Falseprint(bool(''))#輸出:Falseprint(bool({}))

#輸出:Falseprint(bool(0))#輸出:False#注意下面兩個的區(qū)別

print(bool(0))#輸出:Falseprint(boolCO'))#輸出:True

?浮點數(shù)的內(nèi)置函數(shù)運(yùn)算會有誤差,也就是小數(shù)的精度問題

String

字符串屬于序列,除此之外還有:元組、列表(集合和字典不是序列類型)

單引號和雙引號可以互換,也可以互嵌

三引號表示多行字符串(也可以作為文檔注釋)

另外:三引號內(nèi)可以直接使用回車、制表符,可以不使用轉(zhuǎn)移字符

來表示

字符串常用操作

連接和重復(fù)

print('hello**3,'wor,+'ld')#輸出:hellohellohelloworld

字符串的切片(左閉右開)

word=5helloworId*print(word[0:5])#輸出:helloprint(word[:5])#輸

出:helloprint(word[l:])#輸出:elloworldprint(word[:])#輸出:hello

worldprint(word[0:5:2])#輸出:hloprint(word[2:-2])#輸出:Ho

worprint(word[-2:2])#輸出空串

轉(zhuǎn)義字符

?要注意這種復(fù)雜的轉(zhuǎn)義字符一起輸出

在字符串內(nèi)的〃\r〃、八t〃、〃\n〃等字符,會轉(zhuǎn)換為空白字符(回車符、水平制表符、

換行符……)

printf('helloXtworld*)#輸出:helloworld

Raw字符串(字符串內(nèi)不轉(zhuǎn)義)

字符串前綴為'R'或Y

print(r'hello\tworldz)#輸出:hello\tworld

變量及其賦值

簡單賦值

a=1

?多目標(biāo)賦值

a=b=c=l#這種情況下a、b>c都是引用同一個變量

?這樣會報錯

a=(b=c=l)a=(b=l)

序列賦值

?左邊是元組、列表表示的多個變量,右側(cè)是元組、列表或字符串等序列表示的值。

?序列元素個數(shù)必須和變量個數(shù)相等,否則會出錯

?在變量名前使用"*"創(chuàng)建初表對象引用

a,b=1,2#省略括號的元組賦值(c,d)=(2,3)#元組賦值[e,f]=[4,,5,]

#列表賦值(g,h)=廠6,,7]#元組和列表可以交叉賦值(x,y,z)=,abc,#

字符串賦值,x='a',y='b',z='c'(i,j)=(8,9,10)#這是錯誤的,變量

和值的個數(shù)必須相等

?在變量名前使用"*"創(chuàng)建列表對彖引府

X,'abed'print(x,y)#輸出:a['b','c','d']

運(yùn)算符和表達(dá)式

?包括:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、字符串運(yùn)算符、邏輯運(yùn)算符。

算術(shù)運(yùn)算符和表達(dá)式

算術(shù)運(yùn)算符包括:加(+)、減(-)、乘(*)、除(/)、取余(%)、

整除(〃)、幕運(yùn)算(**)

a+=l和a=a+l等價,a-=l、a//=2等也類似

要注意這種復(fù)雜的表達(dá)式的運(yùn)算優(yōu)先級

int(8*math.sqrt(36)*10**(-2)*10+0.5)/10

運(yùn)算順序如下:

int(8*6*10**(-2)*10+0.5)/10

10**(2)=0.01

8*6=48

int(48*0.01*10+0.5)/10

int(5.3)/10

5/10

0.5

邏輯運(yùn)算符

?and(邏輯與),or(邏輯或),not(邏輯非)

關(guān)系運(yùn)算符

?==(等于)、!=(不等于)、<>(不等于)、>(大于)、<(小于)、>=(大于

等于)、<=(小于等于)

運(yùn)算符的優(yōu)先級

?最高優(yōu)先級的三個運(yùn)算符(優(yōu)先級由高到低):**暴運(yùn)算、~安位取反、-負(fù)號

?最低優(yōu)先級的幾個運(yùn)算符(優(yōu)先級由高到低):I按位或、<><=>===!=關(guān)

系運(yùn)算符、notandor邏輯運(yùn)算符

字符串運(yùn)算符

下面這些運(yùn)算對于列表、元組都有效(因為它們同屬序列類型)

字符串連接(+)

print(1a1+1b1)#輸出:ab

重復(fù)字符串(*)

print(*3**3)#輸出:aaa

索引字符串(口)

a=1hello*;print(a[1]);#輸出:e

截取字符串([:])

print(a[1:4])#輸出:ell

成員運(yùn)算符(in)

print(*e*ina)#輸出:True

成員運(yùn)算符(notin)

print(*e1notina)#輸出:False

Raw字符串(r/R)

print(R^eXtllo1)#輸出:hello\nllo

格式字符串(%)

11111

print(hello%s%s%(worr,Id))#輸出:helloworld

格式化

%c(轉(zhuǎn)換為字符)

print('%c'%('hello'))#報錯,必須是ASCII碼值或者一個字符,否則會出錯

%r(使用repr()進(jìn)行字符串轉(zhuǎn)換)

print('%r,%('hello'))#輸出:'hello'

%s(使用str()進(jìn)行字符串轉(zhuǎn)換)

print('%s'%('hello'))#輸出:hello

,format()格式化

print('a={}'.format('a'))#輸出:a=a

repr()函數(shù)和str()函數(shù)的區(qū)別就在于接受值和返回值不同

repr()函數(shù)和str()函數(shù),分別會調(diào)用輸入對象的_repr_()、_str_()

特殊方法

%d或%i(轉(zhuǎn)換為有符號十進(jìn)制數(shù))

print('%dz%(-10))#輸出:-10

%u(轉(zhuǎn)換為無符號十進(jìn)制數(shù))

print('%u'%(-10))#輸出:-10

有無符號是指在二進(jìn)制下,最高位用來表示實際的數(shù)或是單純表示正負(fù)

%o(轉(zhuǎn)換為無符號八進(jìn)制數(shù))

print('%o,%(100))#輸出:144

%x或%X(轉(zhuǎn)換為無符號十六進(jìn)制數(shù))

print('%x'%(100))#輸出:64

%e或%E(轉(zhuǎn)換成科學(xué)計數(shù)法)

print('%e,%(1000))#輸出:1.000000e+03

%f或%F

print('%f,%(100)#輸出:100.000000)

格式化操作輔助符

print(,開始%10.2£結(jié)束,%(7.2222))#輸出:開始7.22

%10.2f表示:最小總長度為10,不足用前導(dǎo)空格補(bǔ)齊,長度大于

等于10則正常顯示(這里的長度不包括小數(shù)點)

位運(yùn)算符

.異或:二進(jìn)制數(shù)逐位對比相同為0,不同為1

10"2==81010異或0010結(jié)果為:1000

運(yùn)算符說明

&按位與

I按位或

-按位異或

按位去反

?按位左移

?按位右移

python常用函數(shù)

數(shù)據(jù)類型轉(zhuǎn)換函數(shù)

重點掌握加粗的函數(shù)

函數(shù)名說明

int(str)將字符串str轉(zhuǎn)換為<u>整數(shù)</u>

long(str)將字符串str轉(zhuǎn)換為<u>長整型整數(shù)</u>

float(str)將字符串str轉(zhuǎn)換為<u>浮點數(shù)</u>

eval(str)將字符串str轉(zhuǎn)換為<u>有效表達(dá)式</u>并返回表達(dá)式計算后的對象

str(x)將數(shù)值X轉(zhuǎn)換為<u>字符串</u>

repr(obj)將<u>對象</u〉obj轉(zhuǎn)換為一個<u>字符串</u>

chr(x)將整數(shù)x轉(zhuǎn)換為對應(yīng)的(u>ASCH字符</u>

ord(x)將字符x轉(zhuǎn)換為對應(yīng)的<u>ASCII碼</u>

hex(x)將一個整數(shù)x轉(zhuǎn)換為一個<u>十六進(jìn)制字符串</u>

oct(x)將一個整數(shù)x轉(zhuǎn)換為一個<u>八進(jìn)制字符串《/u〉

tuple(squ)將一個序列squ轉(zhuǎn)換為一個<u>元組</u>

list(squ)將一個序列squ轉(zhuǎn)換為<u>列表</u>

set(squ)將一個序列squ轉(zhuǎn)換為可變<u>集合</u>

diet(squ)創(chuàng)建一個〈U〉字典《/u〉,squ是一個序列(key,value)元組

len(obj)返回對象的長度(字符個數(shù)、列表元素個數(shù)、字典key個數(shù))

數(shù)學(xué)函數(shù)

函數(shù)名說明

abs(x)返回數(shù)值x的絕對值

exp(x)返回e的x次累

函數(shù)名說明

fabs(x)返回數(shù)字的絕對值

loglO(x)返回以10為底的x的對數(shù)

pow(x,y)返回x的y次幕

floor(x)x向下取整(小于等于X)

ceil(x)X向上取整(大于等于X)

fmod(x,y)求x/y的余數(shù)

sin(x)cos(x)...返回x的三角函數(shù)值

python數(shù)據(jù)結(jié)構(gòu)

?python常用三種數(shù)據(jù)結(jié)構(gòu):序列、映射、集合

?列表和元組有什么相同點和不同點?(后面會給出解釋)

字符串

字符串是不可變的序列,不可以通過str[n]=chr來改變字符串

字符串的切片(左閉右開)

word=?helloworld,print(word[0:5])#輸出:helloprint(wordL:5])#輸

出:helloprint(word[l:])#輸出:elloworldprint(word[:])#輸出:hello

worldprint(word[0:5:2])#輸出:hloprint(word[2:-2])#輸出:Ho

worprint(word[-2:2])#輸出空串

字符串轉(zhuǎn)列表

?可以通過list。函數(shù)直接將字符串中的每個字符轉(zhuǎn)換為一個列表元素,也可以通過

split。方法根據(jù)指定的分割符分割元素(默認(rèn)以空格分割)。

word='helloworld'print(list(word))#輸出:「h',e','1',T','o',

'w'o'r'1'd'[print(word,split())#輸出:['hello',

'world,]

列表轉(zhuǎn)字符串

?可以通過“Join()方法將字符串列表連接起來形成一個新的字符串

word=L「,h1,,,e,,,1,,,1,,,o,1J

words=??.join(word)print(words)#輸出:hello

字符串查找

?可以通過in關(guān)鍵字查找也可以通過字符串的find。方法,in關(guān)鍵字返回True或False,

find。方法返回查找字符串的開始下標(biāo)或-1,通過index。方法查找當(dāng)沒有查找到時會

報錯.

word="helloworld'printCllo'inword)#輸出:

Trueprint(word.find(,llo"))#輸出:2print('ok'inword)#輸出:

Falseprint(word,findC0k,))#輸出:-Iprint(word,index(Jok1))#報錯

#帶開始和結(jié)束范圍的查找print(word.find('llo',5,-l))#輸出:

Tprint(word,index('11。',0,5))#輸出:2

字符串替換

?replace。方法替換指定的字符串

strl='helloworld,print(strl.replaceCworld",*yznu,))#輸出:hello

yznu

#指定參數(shù)來限制替換的次數(shù),不指定參數(shù)默認(rèn)替換所有匹配的字符串#可以看

到下面的語句只替換了一個Iprint(strl.replace('1','yes,,1))#輸出:he

yesloworld

列表

列表的表示方法

?[1,2,3,4]

創(chuàng)建列表

?創(chuàng)建空列表、列表生成式、元組和字符串轉(zhuǎn)列表

#創(chuàng)建一個空列表

1st=[]

#直接將列表賦值給變量

t,h1,,,e,,,1,,,1,,,o,1J

#元組轉(zhuǎn)列表

1st=list((l,2,3,4))print(ist)#輸出:[1,2,3,4]

#字符串轉(zhuǎn)列表

1st=list(*hello")print(1st)#輸出:[,h,e,

#字符串分割成列表

1st='helloworld'.split()print(1st)#輸出:['hello',"world)]

#range。生成列表

1st=list(ranged,6))print(1st)#輸出:[1,2,3,4,5]

#列表生成式

1st=[x**2forxinrange(1,6)]print(1st)#輸出:[1,4,9,16,25]

#復(fù)雜列表生成式子

1st=[xforxin1stifx>landx<25]print(1st)#輸出:[4,9,16]

列表元素刪除

?del()zpop(),remove()

#del語句刪除

1st=[1,2,3,4,5,6]del(1st[5])print(1st)#輸出:[1,2,3,4,5]

#pop方法刪除并返回指定下標(biāo)的元素print(1st.pop(4))#輸出:Sprint(1st)

#輸出:[1,2,3,4]

#remove方法刪除列表中的首次出現(xiàn)的某個值

1st.remove(4)print(1st)#輸出:[1,2,3]

列表分片

?使用[:]對列表分片和對字符串分片相同,列表還能分片賦值

#列表分片賦值

1st=[1,2,3,4,5]

lst[l:4]=[0,0,0]#切片個數(shù)和賦值個數(shù)一樣,否則報錯print(1st)#輸

出:[1,0,0,0,5]

字符串轉(zhuǎn)列表和列表轉(zhuǎn)字符串

?在上面字符串那一節(jié)已經(jīng)寫過,不再贅述,回到那里去看即可

列表常用的函數(shù)和方法

?append。,count。,extend。,index。,sort。,len()

?注意區(qū)別extend。和append。的用法

?注意區(qū)別sort。和sorted。的用法

?count。是非遞歸的統(tǒng)計一個元素出現(xiàn)的次數(shù),也就是不會深入第二層

函數(shù)和方法說明

.append()末尾追加一個元素(與.extend有何不同?)

.count()統(tǒng)計某元素出現(xiàn)的次數(shù)(非遞歸式)

.extend()以另一個序列的元素值去擴(kuò)充原列表

.insert()在指定下標(biāo)處插入一個元素

.pop()刪除指定下標(biāo)的元素并返回該元素

.reverse()翻轉(zhuǎn)列表

函數(shù)和方法說明

.sort()對列表進(jìn)行排序(與sorted函數(shù)有何不同?)

.index()找到指定值第一次出現(xiàn)的下標(biāo)(找不到報錯)

.remove()移除在列表中第一次出現(xiàn)的指定的值

len()返回列表的元素個數(shù)

max()返回最大值

minO返回最小值

1st=[1,3,4,5]#append向列表中添加一個元素

1st.append([6,7])print(1st)#輸出:[1,3,4,5,[6,7]]

#extend用序列擴(kuò)充列表

1st.extend([8,9,10])print(1st)#輸出:[1,3,4,5,[6,7],8,9,10]

#insert方法在指定下標(biāo)處插入一個值

1st.insert(1,2)print(1st)#輸出:[1,2,3,4,5,[6,7],8,9,10]

#count統(tǒng)計一個元素在列表中出現(xiàn)的次數(shù)

1st=[1,[2,3],2,3]print(1st.count(2))#輸出:1

元組

?元組的元素定義后不能修改

元組的表示方法

?(1,2,3,4)

元組的創(chuàng)建

?創(chuàng)建空元組、列表和字符串轉(zhuǎn)元組

?元組不能直接使用列表的方法排序(因為不可修改)

#創(chuàng)建一個空元組

tup=()

#直接將元組賦值給變量

tup=(1,2,3)

#列表轉(zhuǎn)元組

tup=tuple([l,2,3])#輸出:(1,2,3)print(tup)

#字符串轉(zhuǎn)元組

tup=tupleChello')print(tup)#輸出:('h','e','1','1','o')

元組和列表的相同點和不同點

1.相同點

O元組和列表都屬于序列

O元組和列表都支持相同操作符,包括+(連接)、*(重復(fù))、口索引、[:]

切片、in、notin等

2.不同點

。元組是不可變的對象

o對列表進(jìn)行的修改元素的操作,在元組上不可以(列如del刪除一個元組中

的元素會出錯,只能將整個元組刪掉,不能只刪某個元素)

字典

?字典是映射類型

?字典的key值必須是可哈希的(也可以說是不可修改的)

字典的表示方法

?{key:value,key:value}{*name*:*alien1,*age*:18}

創(chuàng)建字典

?創(chuàng)建空字典(使用空大括號默認(rèn)創(chuàng)建字典,集合使用set())

?fromkeys。創(chuàng)建字典、dict()創(chuàng)建字典

#創(chuàng)建一個空字典

dictl={}

#直接將字典賦值給變量

dictl={'one':1,'two':2,'three':3}print(dictl)#輸出:{'one':1,

'two':2,'three,:3}

#diet創(chuàng)建字典(對比下面幾種創(chuàng)建字典的形式吧)

#方式1

dictl=diet(one=l,two=2,three=3)#這樣創(chuàng)建字典,key不加引號

print(dictl)#輸出:{‘one':1,‘two':2,'three':3}

#方式2

temp=[Ctwo',2),('one',1),('three',3)]

dictl=diet(temp)print(dictl)#輸出:{'two':2,'one':1,'three':3}

#方式3

temp=[[,two,,2],one,,1],['three',3]]

dictl=diet(temp)print(dictl)#輸出:{'two':2,‘one':1,'three':3}

#方式4

temp=(['two',2],[?one,,1],['three',3])

dictl=diet(temp)print(dictl)#輸出:{'two':2,'one':1,'three':3}

#使用fromkeys創(chuàng)建字典

subject=['Python','操作系統(tǒng)','計算機(jī)網(wǎng)絡(luò)']

scores=diet,fromkeys(subject,99)print(scores)#輸出:{*Python':99,

‘操作系統(tǒng)':99,'計算機(jī)網(wǎng)絡(luò)’:99}

字典常用函數(shù)和方法

?diet。,values。,keys。,get(),clear。,pop(),in(),update。,copy。

?注意區(qū)別get()和直接訪問字典元素的區(qū)別

scores={'Python':99,,操作系統(tǒng)':99,,計算機(jī)網(wǎng)絡(luò)’:99}

#print(socores['大學(xué)英語'])#這會報錯,因為不存在‘大學(xué)英語'這個鍵

print(scores.get('大學(xué)英語'))#輸出:None

#values返回字典的所有值print(scores.values0)#輸出:dict_values([99,

99,99])

#keys返回字典的所有鍵print(scores,keys0)#輸出:dict_keys([,Python',

'操作系統(tǒng)','計算機(jī)網(wǎng)絡(luò)'])

#items返回字典的所有鍵和值print(scores.items())#輸出:

dict_items([CPython,,99),('操作系統(tǒng)',99),('計算機(jī)網(wǎng)絡(luò)',99)])

#使用keys遍歷forkinscores,keys():

print(k,end=,');#輸出:Python操作系統(tǒng)計算機(jī)網(wǎng)絡(luò)

#使用values遍歷forvinscores,values():

print(v,end=');#輸出:999999

#使用items遍歷fork,vinscores,items():

print(k,v,end=,;');#輸出:Python99;操作系統(tǒng)99;計算機(jī)網(wǎng)絡(luò)99;

#in查詢一?個字典中是否包含指定鍵print('Python'inscores)#輸出:

Trueprint('數(shù)據(jù)結(jié)構(gòu)'inscores)#輸出:False

#update更新字典,如果包含相同的鍵將會覆蓋原來的對應(yīng)的那個鍵值

dicti={'語文':90,'數(shù)學(xué)':91}

scores,update(dicti)print(scores)#輸出:{'Python':99,'操作系統(tǒng)':99,

'計算機(jī)網(wǎng)絡(luò)’:99,‘語文‘:90,‘?dāng)?shù)學(xué)':91}

#刪除字典元素del(scores['語文'])print(scores)#輸出:{'Python':99,

'操作系統(tǒng)':99,'計算機(jī)網(wǎng)絡(luò)99,‘?dāng)?shù)學(xué)':91}

scores,pop('數(shù)學(xué)')print(scores)#輸出:{,Python,:99,'操作系統(tǒng)’:99,

'計算機(jī)網(wǎng)絡(luò)’:99)

#清空字典

scores,clear()print(scores)#輸出:{}

果Aa

?集合的元素不會有重復(fù),利用這個特性編程題中可以去重

?集合內(nèi)的元素只能是可哈希的數(shù)據(jù)類型(也可以說是不可修改的),無法存儲列表、

字典、集合這些可變的數(shù)據(jù)類型

集合是無序的,所以每次輸出時元素的排序順序可能都不相同

創(chuàng)建集合

?創(chuàng)建空集合不能直接用大括號,大括號默認(rèn)創(chuàng)建空字典

?將序列轉(zhuǎn)為集合

#創(chuàng)建一個空集合不能直接用大括號

setl=set0

#將集合直接賦值給變量

setl={'Python'計算機(jī)網(wǎng)絡(luò)','操作系統(tǒng)'}print(setl)#輸出:{'操作系

統(tǒng)’計算機(jī)網(wǎng)絡(luò)‘,’Python'}

#列表轉(zhuǎn)集合

setl=set(['操作系統(tǒng)','計算機(jī)網(wǎng)絡(luò)','Python','操作系統(tǒng)'])print(setl)

#輸出:{'Python','計算機(jī)網(wǎng)絡(luò)‘,'操作系統(tǒng)'}

首字符串轉(zhuǎn)集合

setl=set('操作系統(tǒng)')print(setl)#輸出:{'系','作','操','統(tǒng)'}

集合的一些操作

setl={'Python'計算機(jī)網(wǎng)絡(luò)‘,’操作系統(tǒng)')

set2=set(['語文’,'操作系統(tǒng)‘,’計算機(jī)網(wǎng)絡(luò)'])#集合中沒有+的操作#

print(setl+set2)#這樣會出錯

#差集(setl有但是set沒有的元素)print(setl-set2)it輸出:{'Python'}

#交集(setl和set2都有的元素)print(setl&set2)#輸出:{'操作系統(tǒng)

','計算機(jī)網(wǎng)絡(luò)'}

#并集(setl和set2所有的元素)print(setl&set2)#輸出:{‘語文','

操作系統(tǒng)‘,’計算機(jī)網(wǎng)絡(luò)','Python'}

#不同時包含于a和b的元素print(setl?set2)

集合的常用方法

?set(),add(),update(),remove()

?集合不支持用del()刪除一個元素

setl=set(['操作系統(tǒng)','計算機(jī)網(wǎng)絡(luò)',》丫世。不,‘操作系統(tǒng)'])

#add向集合中添加一個元素

setLadd('語文')print(setl)#輸出:{‘語文',’計算機(jī)網(wǎng)絡(luò)','操作系統(tǒng)',

'Python'}

#remove刪除集合中一個元素

setl.remove('語文')print(setl)#輸出:{'Python'操作系統(tǒng)','計算機(jī)

網(wǎng)絡(luò)'}

程序流程控制(記得語句后面的冒號:)

?程序流程控制一定要注意語句后面的冒號和語句塊之間的縮進(jìn)

分支選擇

單分支

多分支

elif:

else:

程序例子

#判斷一個人的身材是否正常

height=float(input(〃輸入身高(米):〃))

weight=float(input(〃輸入體重(千克):〃))

bmi=weight/(height*height)#計算BMI指數(shù)

if5:

print(〃BMI指數(shù)為:〃+str(bmi))

print(〃體重過輕〃)elifbmi>=18.5andbmi<24.9:

print(,ZBMI指數(shù)為:〃+str(bmi))

print(〃正常范圍,注意保持〃)elifbmi>=24.9andbmi<29.9:

print(〃BMI指數(shù)為:〃+str(bmi))

print(〃體重過重〃)else:

print(Z,BMI指數(shù)為:〃+str(bmi))

print(〃肥胖〃)

#輸入身高(米):L7#輸入體重(千克):55#BMI指數(shù)為:19.031141868512112#

正常范圍,注意保持

三目運(yùn)算

?max=aifa>belsebif為真max=a,否則max二b

a=int(input('請輸入a:'))#假設(shè)輸入10

b=int(input('請輸入b:'))#假設(shè)輸入15ifa>b:

max=aelse:

max=bprint(max)#輸出:15

max=aifa>belsebprint(max)#輸出:15

循環(huán)結(jié)構(gòu)

while循環(huán)

?while循環(huán)的格式

#循環(huán)的初始化條件

num=1#當(dāng)num小于100時,會一直執(zhí)行循環(huán)體whilenum<=100:

print("num=",num)

#迭代語句

num+=Iprint("循環(huán)結(jié)束!”)

for循環(huán)

?for循環(huán)的格式

?for循環(huán)遍歷字典、集合、列表、字符串、元組

subjects=['Python','操作系統(tǒng)‘,'網(wǎng)絡(luò)']#循環(huán)遍歷列表Iforiin

subjects:

print(i,end=,')#輸出:Python操作系統(tǒng)網(wǎng)絡(luò)print('')#循環(huán)遍歷

歹表2foriinrange(len(subjects)):

print(subjects[i],end=,()#輸出:Python操作系統(tǒng)網(wǎng)絡(luò)printC')#

遍歷字符串,元組也類似,就不寫了#循環(huán)遍歷列表1這種形式也可以用于字

典、集合,但循環(huán)遍歷列表2這種形式不行

#集合不能使用索引(因為它是無序的),所以使用set[i]這種形式輸出會報

錯#字典必須用鍵去索引值,dict[key]這種形式

?列表生成式

?range。函數(shù)與for循環(huán)的使用

range函數(shù)的格式如下:

range(start,end,step)

start:計數(shù)從start開始。默認(rèn)是從0開始。例如range(5)等

價于range(0,5)

end:計數(shù)到end結(jié)束,但不包括end例如:range(0,5)是0,

1,2,3,4沒有5

step:步長,默認(rèn)為1。例如:range(0,5)等價于range(0,

5,1)

#列表生成式

1st=[xforxinrange(2,11,2)]print(1st)#輸出:⑵4,6,8,10]

1st=[x*2forxinrange(2,11,2)]print(1st)#輸出:[4,8,12,16,20]

#直接循環(huán)range函數(shù)foriinrange(2,11,2):

print(i,end=,')#輸出:246810print(J')

foriinrange(11):

print(i,end=')#輸出:012345678910printC')

break和continue關(guān)鍵字

#輸出-50之間的偶數(shù)#循環(huán)的初始化條件

num=1whilenum<=100:

if(num>50):#當(dāng)num>50跳出循環(huán)

break

if(num%2!=0):#num為奇數(shù)跳過輸出,直接加一進(jìn)入下一次循環(huán)

num+=1

continue

print(z/num=z/,num)

#迭代語句

num+=Iprint("循環(huán)結(jié)束!”)

Python函數(shù)和模塊

函數(shù)

函數(shù)的定義

def函數(shù)名():

函數(shù)體

return語句

?return語句可以沒有

?函數(shù)的嵌套定義,python函數(shù)內(nèi)是可以定義函數(shù)的

函數(shù)的參數(shù)

默認(rèn)參數(shù)

?默認(rèn)參數(shù)應(yīng)該放在必須參數(shù)后面,類似這樣def(azbzc=l):

可變參數(shù)

?形參定義形式為*second,second會在函數(shù)中被解析為一個元組

#可變參數(shù)Idefprint_str(first,*second):#first必須要指定一個參數(shù),

second可以指定0個或多個參數(shù)

print(first,end='')

print(second)

print_str(?hello,)#輸出:hello()

print_str(,hello,,?world,)#輸出:hello('world',)

print_str('hello'world'yznu')#輸出:hello('world','yznu')

?形參定義形式為"anything,anything會被解析為一個字典

#可變參數(shù)數(shù)efprintStr(^anything):

print(anything)

printStr(python=99,操作系統(tǒng)=99)#輸出:{'Python':99,'操作系統(tǒng)':

99)

變量的作用范圍

?局部變量和全局變量的定義

?函數(shù)外不能訪問函數(shù)內(nèi)的變量

?全局變量和局部變量同名,默認(rèn)訪問局部變量

?在函數(shù)內(nèi)要想改變函數(shù)外的變量需要用global關(guān)鍵字

#函數(shù)外部不能訪問函數(shù)內(nèi)的變量(局部變量)defdemo(name):

Stri='hello'#局部變量

print(strl,name)

demoCsir,)#輸出:hellosir

#print(strl)#訪問函數(shù)內(nèi)的局部變量會出錯#print(name)#訪問函數(shù)內(nèi)的

局部變量會出錯

#全局變量和局部變量同名,默認(rèn)訪問局部變量

strl='hi'#全局變量defdemo(name):

strl='hello'#局部變量

print(strl,name)

demoCsir')#輸出:hellosirprint(sti)#輸出:hi

#在函數(shù)內(nèi)要想改變函數(shù)外的變量需要用global關(guān)鍵字

strl='hi'#全局變量defdemo(name):

globalstrl#下面,對strl的修改會影響到函數(shù)外部的全局變量strl

strl='hello'#局部變量

print(strl,name)

demo('sir')#輸出:hellosirprint(sti)#輸出:hello

python模塊

?Python模塊就是一個Python文件,以.py結(jié)尾,包含了Python對象定義和

Python語句。

python模塊的幾種導(dǎo)入方法

1.import模塊1,模塊2(導(dǎo)入一個或多個模塊)

2.from模塊import函數(shù)或類(導(dǎo)入模塊內(nèi)的部分函數(shù)或類)

3.from模塊import*(導(dǎo)入模塊下的所有東西)

Python面向?qū)ο?/p>

面向?qū)ο蠡A(chǔ)

面向?qū)ο蟮娜齻€特性

1.封裝性

2.繼承性

3.多態(tài)性

類的定義

classDemo:

'''隨便定義了一個類

#下面定義了一個類屬性

add='hello'

#下面定義了一個實例方法

defsay(self,content):

print(content)

?文檔字符串可以省略,類體中可以定義屬性、方法

屬性

?類屬性和實例屬性的區(qū)別?

?類屬性為所有實例共享,可以通過類名調(diào)用和修改類變量。

?實例屬性為每個實例所獨(dú)有,只能通過實例調(diào)用和修改。

私有屬性

?不能在類外部直接通過實例調(diào)用私有屬性,可以通過實例方法調(diào)用和修改

?以雙下劃線開頭,但不以雙下劃線結(jié)尾的屬性為私有屬性

classDemo:

def__init__(self,word):

self._word=word#_word就是一個私有屬性

defprint_str(self):

print(self._word)

a=DemoChello*)]創(chuàng)建了一個實例,將實例賦值給a

方法

?在類外部不能調(diào)用私有方法

?幾種方法的定義、作用和區(qū)別

?self和ds參數(shù)的用法

?_init_()方法的使用

?@classmethod的使用

?@staticmethod的使用

—initO_和_new()—有什么區(qū)別?

?_init_()方法在初始化一個實例的時候調(diào)用。

?_new_()方法是創(chuàng)建實例的時候調(diào)用。

?創(chuàng)建實例在初始化之前

#—init_()和_new_()的示例classPerson(object):

def_init__(self,name):

print('晚例初始化了',end='')

self,name-name

def_new_(cis,name):

print('實例創(chuàng)建了',end='')

returnobject._new_(cis)

person=Person('Sir')print(person,name)#輸出如下(輸出沒有三引號)〃〃〃

實例創(chuàng)建了

實例初始化了

Sir

實例方法

?實例方法必須通過生成的實例調(diào)用

類方法

?類下的實例對象都可以調(diào)用類方法

?類方法可以使用類名直接調(diào)用,也可以使用實例對象來調(diào)用

靜態(tài)方法

?靜態(tài)方法通過類直接調(diào)用,不需要創(chuàng)建對象,不會隱式傳遞self

類的繼承

單繼承

#這就是一個簡單的單繼承示例,C繼承AclassA(object):

defwork(self):

printCA.work,)classC(A):#C繼承了A

defwork(self):

print('C.work,)

多繼承

在多繼承下,調(diào)用一個方法,清楚該方法的繼承走向,也就是重名時優(yōu)先調(diào)用哪一

個次之又調(diào)用哪個

#多繼承IclassA(object):

defwork(self):

print('A.work,)classB(object):

defwork(self):

print('B.work,)classC(A):#C繼承了A

defwork(self):

print('C.work')classD(B):#D繼承了B

defwork(self):

print('D.work,)classE(D,c):#E繼承了D和C

defwork(seif):

print('E.work,)

e=E()

e.work()#輸出E.work

#多繼承2classA(object):

defwork(self):

print(,A.work,)classB(object):

defwork(self):

print(JB.work*)classC(A):#C繼承了A

defwork(self):

print(,C.work,)classD(B):#D繼承了B

defwork(seif):

printCD.work,)classE(D,C):#E繼承了D和C,自身沒有work方法

pass

e=E()

e.work()#輸出D.work

#多繼承3classA(object):

defwork(self):

printCA.work,)classB(object):

defwork(self):

print(,B.work,)classC(A):#C繼承了A

defwork(self):

printCC.work,)classD(B):#D繼承了B,自身沒有work方法

passclassE(D,C):#E繼承了D和C,自身沒有work方法

pass

e=E()

e.work()#輸出B.work

#多繼承4classA(object):

defwork(self):

printCA.work,)classB(object):

passclassC(A):#C繼承了A

defwork(self):

printCC.work,)classD(B):#D繼承了B,自身沒有work方法

passclassE(D,c):#E繼承了D和C,自身沒有work方法

pass

e=E()

e.work()#輸出C.work

#多繼承5cla

溫馨提示

  • 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

提交評論