版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
北京大學(xué)信息學(xué)院
郭煒信息科學(xué)技術(shù)學(xué)院學(xué)會(huì)程序和算法,走遍天下都不怕!實(shí)用Python程序設(shè)計(jì)北京大學(xué)信息學(xué)院
郭煒信息科學(xué)技術(shù)學(xué)院Python語(yǔ)言基本要素北京大學(xué)信息學(xué)院
郭煒?lè)?hào)和注釋信息科學(xué)技術(shù)學(xué)院
郭煒瑞士布里茨恩湖北京大學(xué)信息學(xué)院
郭煒程序中的符號(hào)
程序中的所有字符都必須是英文字符,不能是中文的字符,注意, :.
',
( "
之類的,都必須是英文字符!不能是中文的!不能在輸入中文狀態(tài)下輸入!中文的標(biāo)點(diǎn)符號(hào)看起來(lái)一般比英文的更寬。除非就是要輸出中文文字,才會(huì)在“字符串”中使用中文4北京大學(xué)信息學(xué)院
郭煒5注釋并非需要執(zhí)行的指令,只是為了編程者方便理解程序之用注釋:"#" 開(kāi)頭a = b # 讓a和b的值相同北京大學(xué)信息學(xué)院
郭煒6注釋Pycharm中, 選中若干行,Ctrl + '/'
可將這些行都變成注釋/都由注釋變?yōu)榉亲⑨尡本┐髮W(xué)信息學(xué)院
郭煒信息科學(xué)技術(shù)學(xué)院變量新疆喀拉峻鱷魚(yú)灣北京大學(xué)信息學(xué)院
郭煒8變量變量有名字,可以用來(lái)存儲(chǔ)數(shù)據(jù)。其值可變。#
讓b的值變得和a一樣a=
12b=aprint(a+b)a=
"hello"print(a)輸出:24hello北京大學(xué)信息學(xué)院
郭煒變量的命名辦法9變量由大小寫字母、數(shù)字和下劃線構(gòu)成,中間不能有空格,長(zhǎng)度不限,不能以數(shù)字開(kāi)頭name _doorNum x1 y z a2 Anumber_of_students
MYTYPE變量名最好能夠體現(xiàn)變量的含義多單詞的變量名,最好第一個(gè)單詞小寫,后面單詞首字母大寫dateOfBirth
numOfDogs bookPrice北京大學(xué)信息學(xué)院
郭煒變量的命名辦法10變量名是大小寫相關(guān)的a和A,
name和Name
是不同的變量。有些名字Python預(yù)留了,不可用作變量的名字andasassertbreakclasscontinuedefdelelif
else
except execforfinallyfromglobalifimportinislambdanotorpassprintraisereturntrywhilewith
yield.....如果不小心用了,python會(huì)報(bào)錯(cuò)北京大學(xué)信息學(xué)院
郭煒信息科學(xué)技術(shù)學(xué)院新疆布爾津五彩灘賦值語(yǔ)句北京大學(xué)信息學(xué)院
郭煒賦值語(yǔ)句12形式:變量
=
表達(dá)式將變量的值變得和“表達(dá)式”的值一樣變量、數(shù)、字符串......都是“表達(dá)式”北京大學(xué)信息學(xué)院
郭煒賦值語(yǔ)句13a=
"he"print(a)#>>heb=
3+2a=
b#a的值變得和b一樣print(b)#>>5print(a)#>>5b=b+
a#b的值改為原來(lái)b的值加aprint(b)#>>10北京大學(xué)信息學(xué)院
郭煒賦值語(yǔ)句14a,b=
"he",12print(a,b)#>>he
12a,b=
b,a#交換
a,b的值print(a,b)#>>12
hec,a,b=
a,b,aprint(a,b,c)#>>he12
12a=b=c=
10print(a,b,c)#>>1010
10北京大學(xué)信息學(xué)院
郭煒信息科學(xué)技術(shù)學(xué)院新疆塞里木湖字符串初步北京大學(xué)信息學(xué)院
郭煒字符串可以且必須用單引號(hào)、雙引號(hào)或三單引號(hào)、三雙引號(hào)括起來(lái)x="I
said:'hello'"print(x) #>>I
said:'hello'#>>Isaid:'he
saidprint('Isaid:"hello"')#>>I
said:"hello"print('''Isaid:'hesaid
"hello"'.''')"hello"'.print("this
\is
\good")#>>thisis
goodprint(
hello,word)字符串太長(zhǎng)時(shí),可以分行寫#錯(cuò)!沒(méi)有用引號(hào)括起來(lái)16北京大學(xué)信息學(xué)院
郭煒字符串字符串里面不會(huì)包含變量s=
1.75print(s)print("Iamsm
tall")#>>1.75#>>Iamsm
tall字符串中的
s
就是個(gè)字符,和前面的變量
s
沒(méi)有關(guān)系!!!字符串必須用引號(hào)括起來(lái),用引號(hào)括起來(lái)的就是字符串!a=
4b=
5print("a+b") #>>
a+b 不會(huì)打出9!!!!!17北京大學(xué)信息學(xué)院
郭煒字符串三雙引號(hào)字符串中可以包含換行符、制表符以及其他特殊字符。para_str=
"""多行字符串可以使用制表符TAB(\t)。也可以使用換行符
[\n]。<HTML><HEAD><TITLE>FriendsCGI
Demo</TITLE></HEAD><BODY><H3>ERROR</H3><FORM><INPUTTYPE=button
VALUE=BackONCLICK="window.history.back()"></FORM></BODY></HTML>"""print(para_str)18多行字符串可以使用制表符TAB( )。也可以使用換行符
[]。<HTML><HEAD><TITLE>FriendsCGI
Demo</TITLE></HEAD><BODY><H3>ERROR</H3><FORM><INPUTTYPE=button
VALUE=BackONCLICK="window.history.back()"></FORM></BODY></HTML>北京大學(xué)信息學(xué)院
郭煒字符串字符串的下標(biāo)有n個(gè)字符的字符串,其中的每個(gè)字符都是長(zhǎng)度為1的字符串:從左到右依次編號(hào)為
0,1,2...
n-1從右到左依次編號(hào)為
-1,-2...-n編號(hào)就是下標(biāo)a=
"ABCD"print(a[-1])#>>Dprint(a[0])#>>Aprint(a[2])#>>C19北京大學(xué)信息學(xué)院
郭煒字符串不可修改不可以修改字符串中的字符a=
"ABCD"a[2]=
'k'#錯(cuò),字符串中的字符不能修改20北京大學(xué)信息學(xué)院
郭煒字符串用"+"連接字符串#>>ABCD1234a=
"ABCD"b=
"1234"a=a+
bprint(a)a=a+
a[1]print(a)21北京大學(xué)信息學(xué)院
郭煒字符串用"+"連接字符串#>>ABCD1234a=
"ABCD"b=
"1234"a=a+
bprint(a)a=a+
a[1]print(a)#>>ABCD1234B22北京大學(xué)信息學(xué)院
郭煒字符串用 in
,
not
in
判斷子串a(chǎn)=
"Hello"b="Python"print("el"ina)print("th"notin
b)print("lot"in
a)#>>True#>>False#>>False23北京大學(xué)信息學(xué)院
郭煒信息科學(xué)技術(shù)學(xué)院學(xué)會(huì)程序和算法,走遍天下都不怕!實(shí)用Python程序設(shè)計(jì)北京大學(xué)信息學(xué)院
郭煒?biāo)阈g(shù)運(yùn)算和邏輯運(yùn)算信息科學(xué)技術(shù)學(xué)院2北京大學(xué)信息學(xué)院
郭煒?biāo)阈g(shù)運(yùn)算信息科學(xué)技術(shù)學(xué)院寧夏中衛(wèi)沙坡頭北京大學(xué)信息學(xué)院
郭煒?biāo)阈g(shù)運(yùn)算符Python
支持以下算術(shù)運(yùn)算+ 加法- 減法(雙操作數(shù)),
取相反數(shù)(單操作數(shù))* 乘法/%//**除法
,結(jié)果是小數(shù)。即便能整除也是小數(shù)取模(求余數(shù))求商,結(jié)果取整數(shù)部分,不要余數(shù)求冪北京大學(xué)信息學(xué)院
郭煒?biāo)阈g(shù)表達(dá)式a=
(3+2)*(6-3)/2print(a)#>>7.5print(10/8)print(10%8)print(15/4)print(15//4)#>>1.25#>>2#>>3.75#>>3print(3.4/2.2)print(3.4//2.2)#>>1.5454545454545452#>>1.0print(2**3)print(-9//4)#>>8#>>-3往小里取整北京大學(xué)信息學(xué)院
郭煒?biāo)阈g(shù)表達(dá)式/
計(jì)算的結(jié)果都是小數(shù),哪怕能整除z=
10/2print(z)#>>5.0-x
相當(dāng)于
0-xa=
10print(-a) #>>-10等價(jià)于
(–a)*3print(-a*3)
#>>-30print(3+-5)
#>>-2北京大學(xué)信息學(xué)院
郭煒關(guān)系運(yùn)算符邏輯運(yùn)算符邏輯表達(dá)式信息科學(xué)技術(shù)學(xué)院
郭煒韓國(guó)濟(jì)州島火山口北京大學(xué)信息學(xué)院
郭煒六種關(guān)系運(yùn)算符用于比較大小相等 ==不等 !=大于 >
小于 <大于等于 >=小于等于 <=比較的結(jié)果是bool類型,成立則為True,反之為Falsebool類型數(shù)據(jù)只有兩種取值,True或False關(guān)系運(yùn)算符和bool類型8北京大學(xué)信息學(xué)院
郭煒#>>True#>>True#>>True#>>True#>>False#>>True#>>True#>>False#>>Trueprint(3<
5)print(4!=
7)a=
4print(2<a<6<8)print(2<a==4<
6)print(2<a>
5)b=a<6print(b)print(b==
1)print(b==
2)b=a>6print(b==
0)a=Trueprint(a==
1)#>>True關(guān)系運(yùn)算符和bool類型9北京大學(xué)信息學(xué)院
郭煒關(guān)系運(yùn)算符也能比較字符串(按字典序,大小寫相關(guān))a=
"k"print(a
=="k")#>>Truea=
"abc"print(a
=="abc")#>>Trueprint(a
=="Abc")#>>Falseprint("abc"<
"acd")print("abc"<
"abcd")print("abc">
"Abc")#>>True#>>True#>>True關(guān)系運(yùn)算符和bool類型10北京大學(xué)信息學(xué)院
郭煒or not
三種,操作邏輯運(yùn)算符用于表達(dá)式的邏輯操作,有
and的結(jié)果是True或False與: exp1and
exp2當(dāng)且僅當(dāng)exp1和exp2的值都為True(或相當(dāng)于True)時(shí),結(jié)果為True(或相當(dāng)于True)n=
4n>4andn<
5n>=2andn<5andn%2==
0#
false#
trueprint(5and
False)print(4and
True)#>>False#>>True邏輯運(yùn)算符和邏輯表達(dá)式11北京大學(xué)信息學(xué)院
郭煒或: exp1or
exp2當(dāng)且僅當(dāng)exp1和exp2的值都為False(或相當(dāng)于False)時(shí),結(jié)果為False(或相當(dāng)于False)n=
4n>4orn<
5n<=2orn>
5#True#False邏輯運(yùn)算符和邏輯表達(dá)式12北京大學(xué)信息學(xué)院
郭煒?lè)? not
expexp值為True(或相當(dāng)于True)時(shí),
結(jié)果為False(或相當(dāng)于False)exp值為False(或相當(dāng)于False)時(shí),
結(jié)果為True(或相當(dāng)于True)not4
<5#Falsenot5#Falsenot0#Truenot"abc"#Falsenot""#Truenotnot4<
5[]and4>6 #False#Truenot[1]#False邏輯運(yùn)算符和邏輯表達(dá)式13北京大學(xué)信息學(xué)院
郭煒print(3<4or4>5and1>2
)print((3<4or4>5)and1>2
)#>>True#>>Falsenot4<5and4
>
6 即 (not4<5)and(4>
6)邏輯運(yùn)算符的優(yōu)先級(jí)not>and>
or14北京大學(xué)信息學(xué)院
郭煒print(3+2<5
)print(3+(2<
5))#>>False#>>4 ,因2
<
5相當(dāng)于1各種運(yùn)算符的優(yōu)先級(jí)從高到低:算術(shù)運(yùn)算符 +-*///%
**關(guān)系運(yùn)算符 <> == != <= >=邏輯運(yùn)算符 and or not記不得就勤用
(
)15北京大學(xué)信息學(xué)院
郭煒信息科學(xué)技術(shù)學(xué)院學(xué)會(huì)程序和算法,走遍天下都不怕!實(shí)用Python程序設(shè)計(jì)北京大學(xué)信息學(xué)院
郭煒條件分支語(yǔ)句(if
語(yǔ)句)信息科學(xué)技術(shù)學(xué)院
郭煒美國(guó)加州太浩湖北京大學(xué)信息學(xué)院
郭煒條件分支語(yǔ)句有時(shí),并非所有的程序語(yǔ)句都要被順序執(zhí)行到,會(huì)希望滿足某種條件就執(zhí)行這部分語(yǔ)句,滿足另一條件就執(zhí)行另一部分語(yǔ)句。這就需要“條件分支語(yǔ)句”3北京大學(xué)信息學(xué)院
郭煒條件分支語(yǔ)句if
表達(dá)式1:語(yǔ)句組1elif
表達(dá)式2:語(yǔ)句組2...
#可以有多種個(gè) elifelif
表達(dá)式n:語(yǔ)句組nelse:語(yǔ)句組n+1依次計(jì)算表達(dá)式1、表達(dá)式2…只要碰到一個(gè)表達(dá)式i為真,則執(zhí)行語(yǔ)句組i(前面為假的表達(dá)式對(duì)應(yīng)的語(yǔ)句組不會(huì)被執(zhí)行),且后面的表達(dá)式不再計(jì)算,后面的語(yǔ)句組也都不會(huì)被執(zhí)行。若所有表達(dá)式都為假,則執(zhí)行語(yǔ)句組n+1注意,縮進(jìn)的前一行末尾有
'
:'4北京大學(xué)信息學(xué)院
郭煒可以沒(méi)有
elif,也可以沒(méi)有
else,也可以都沒(méi)有條件分支語(yǔ)句if
表達(dá)式1
:語(yǔ)句組1else
:語(yǔ)句組2if
表達(dá)式1:語(yǔ)句組1elif
表達(dá)式2:語(yǔ)句組2if
表達(dá)式1
:語(yǔ)句組1北京大學(xué)信息學(xué)院
郭煒例題:
寫一個(gè)判斷整數(shù)奇偶性的程序,要求輸入一個(gè)整數(shù),如果是奇數(shù),就輸出“It's odd.”,如果是偶數(shù),就輸出“It's even.”。ifint(input())%2==1:print("It's
odd")else:print("It's
even")if
語(yǔ)句示例北京大學(xué)信息學(xué)院
郭煒在一條if語(yǔ)句的某個(gè)分支(語(yǔ)句組)里,還可以再寫if語(yǔ)句。a=
int(input())ifa>
0:ifa%2:print("good")else:print("bad")輸入:4輸出:bad輸入:3輸出:good輸入:-1無(wú)輸出if 語(yǔ)句嵌套北京大學(xué)信息學(xué)院
郭煒在一條if語(yǔ)句的某個(gè)分支(語(yǔ)句組)里,還可以再寫if語(yǔ)句。a=
int(input())ifa>
0:ifa%2:print("good")else:print("bad")輸入:4無(wú)輸出輸入:3輸出:good輸入:-1badif 語(yǔ)句嵌套北京大學(xué)信息學(xué)院
郭煒輸出格式控制信息科學(xué)技術(shù)學(xué)院甘肅張掖七彩丹霞(航拍)北京大學(xué)信息學(xué)院
郭煒輸出格式控制字符串中的格式控制符:%s
表示此處要輸出一個(gè)字符串%d
表示此處要輸出一個(gè)整數(shù)%f
表示此處要輸出一個(gè)小數(shù)%.nf 表示此處要輸出一個(gè)小數(shù),保留小數(shù)點(diǎn)后面n位,四舍六入,五則可能入也可能舍。注意,
有
'.'......格式控制符只能出現(xiàn)在字符串中!北京大學(xué)信息學(xué)院
郭煒輸出格式控制h=
1.746print("Mynameis%s,Iam%.2fmtall."%
("tom",h))print("Myageis%d." %
18)print("%d%s"%
(18,"hello"))print("%.2f,%.2f"%(5.225,5.325))#>>
5.22,5.33輸出:Mynameistom,Iam1.75m
tall.Myageis
18.18hello5.22,5.33北京大學(xué)信息學(xué)院
郭煒輸出格式控制name=
"tom"h=
1.746"Mynameis%s,Iam%.2fmtall."%
("tom",h)是個(gè)字符串。比下面這個(gè)等價(jià)字符串簡(jiǎn)潔:"Mynameis%s"%name+"Iam%.2fmtall."%
h北京大學(xué)信息學(xué)院
郭煒信息科學(xué)技術(shù)學(xué)院學(xué)會(huì)程序和算法,走遍天下都不怕!實(shí)用Python程序設(shè)計(jì)北京大學(xué)信息學(xué)院
郭煒循環(huán)語(yǔ)句信息科學(xué)技術(shù)學(xué)院2北京大學(xué)信息學(xué)院
郭煒for
循環(huán)語(yǔ)句信息科學(xué)技術(shù)學(xué)院
郭煒內(nèi)蒙古阿斯哈圖石林北京大學(xué)信息學(xué)院
郭煒for循環(huán)語(yǔ)句for<variable>in
<sequence>:<statements
1>else:<statements
2>依次對(duì)
sequence中的每個(gè)值,執(zhí)行
<statements
1>然后再執(zhí)行
<statements
2>。通常不需要
else
部分sequence
可以是range(..),也可以是字符串、列表、元組、字典、集合4北京大學(xué)信息學(xué)院
郭煒for循環(huán)語(yǔ)句#[0,5)foriin
range(5):print(i)01234foriinrange(5,9):
#[5,9)print(i)56785北京大學(xué)信息學(xué)院
郭煒for循環(huán)語(yǔ)句for
i
in
range(0,
10,
3)
: #步長(zhǎng)3print(i)0369foriinrange(-10,-100,-30)
:print(i)-10-40-706北京大學(xué)信息學(xué)院
郭煒for循環(huán)遍歷列表a=['Google','Baidu','IBM','Taobao','QQ']foriin
a:print(i)GoogleBaiduIBMTaobaoQQ7北京大學(xué)信息學(xué)院
郭煒for循環(huán)遍歷字符串forletterin
'Taobao':print
(letter)Taobao8北京大學(xué)信息學(xué)院
郭煒break
語(yǔ)句sites=["Baidu",
"Google","IBM","Taobao"]#listsitefor
site
in
sites: #對(duì)sites中的每個(gè)值ifsite==
"IBM":print("OK")break #跳出循環(huán)print("site:"+
site)else:print("No
break")print("Done!")else子句在循環(huán)結(jié)束時(shí)會(huì)執(zhí)行,但是如果break了,則不會(huì)執(zhí)行9site:Baidusite:
GoogleOKDone!北京大學(xué)信息學(xué)院
郭煒continue語(yǔ)句forletterin
'Taobao':ifletter==
'o':continue#
字母為 o
時(shí)跳過(guò)輸出# 直接跳到下次循環(huán)print
('當(dāng)前字母 :',
letter)當(dāng)前字母
:
T當(dāng)前字母
:
a當(dāng)前字母
:
b當(dāng)前字母
:
a10北京大學(xué)信息學(xué)院
郭煒for循環(huán)例題信息科學(xué)技術(shù)學(xué)院
郭煒俄羅斯圣彼得堡圣以撒教堂北京大學(xué)信息學(xué)院
郭煒例題1. 輸入n個(gè)整數(shù)求和輸入第一行是整數(shù)n,
n>=
1后面有n行,每行一個(gè)整數(shù)輸出輸出后面那n個(gè)整數(shù)的和樣例輸入3128樣例輸出1112北京大學(xué)信息學(xué)院
郭煒例題1. 輸入n個(gè)整數(shù)求和n=
int(input())total=
0foriin
range(n):#做n次total+=int(input()) #每次讀入一行print(total)13北京大學(xué)信息學(xué)院
郭煒多重循環(huán)信息科學(xué)技術(shù)學(xué)院 郭煒美國(guó)拱門國(guó)家公園北京大學(xué)信息學(xué)院
郭煒多重循環(huán)循環(huán)可以嵌套,形成多重循環(huán):foriin
range(n):.....forjinrange(m):..... #內(nèi)重循環(huán)的執(zhí)行次數(shù)一共是n×m次15北京大學(xué)信息學(xué)院
郭煒例題: 給定正整數(shù)n和m,在1至n這n個(gè)數(shù)中,取出兩個(gè)不同的數(shù),使得其和是m的因子,問(wèn)有多少種不同的取法。輸出這些取法。16多重循環(huán)例題: 取兩個(gè)數(shù)北京大學(xué)信息學(xué)院
郭煒例題: 給定正整數(shù)n和m,在1至n這n個(gè)數(shù)中,取出兩個(gè)不同的數(shù),使得其和是m的因子,問(wèn)有多少種不同的取法。輸出這些取法。思路:窮舉1-n這n個(gè)數(shù)中取兩個(gè)數(shù)的所有取法,對(duì)每一種取法,判斷其和是不是m的因子17多重循環(huán)例題: 取兩個(gè)數(shù)北京大學(xué)信息學(xué)院
郭煒while
循環(huán)信息科學(xué)技術(shù)學(xué)院
郭煒荷蘭阿姆斯特丹庫(kù)肯霍夫公園北京大學(xué)信息學(xué)院
郭煒while循環(huán)語(yǔ)句while
邏輯表達(dá)式
exp
:語(yǔ)句組1else:語(yǔ)句組2........判斷
exp
是否為真,若為真,轉(zhuǎn)2),若為假,轉(zhuǎn)3)執(zhí)行
語(yǔ)句組1,回到1)執(zhí)行
語(yǔ)句組24)繼續(xù)往下執(zhí)行 ........19北京大學(xué)信息學(xué)院
郭煒while循環(huán)語(yǔ)句while
邏輯表達(dá)式
exp:語(yǔ)句組1........判斷
exp
是否為真,若為真,轉(zhuǎn)2),若為假,轉(zhuǎn)3)執(zhí)行
語(yǔ)句組1,回到1)3) 繼續(xù)往下執(zhí)行 ........20北京大學(xué)信息學(xué)院
郭煒while循環(huán)語(yǔ)句示例例題:
輸入一個(gè)正整數(shù)n,從小到大輸出它的所有因子n=
int(input())x=
1whilex<=
n:ifn%x==
0:print(x,"
",end="")x+=
115
↙135
1521北京大學(xué)信息學(xué)院
郭煒循環(huán)綜合例題信息科學(xué)技術(shù)學(xué)院 郭煒舊金山九曲花街北京大學(xué)信息學(xué)院
郭煒例題 求斐波那契數(shù)列第k項(xiàng)菲波那契數(shù)列是指這樣的數(shù)列:
數(shù)列的第一個(gè)和第二個(gè)數(shù)都為1,接下來(lái)每個(gè)數(shù)都等于前面2個(gè)數(shù)之和。給出一個(gè)正整數(shù)k,要求菲波那契數(shù)列中第k個(gè)數(shù)是多少。輸入:輸入一行,包含一個(gè)正整數(shù)k。(1<=
k
<=
46)輸出:輸出一行,包含一個(gè)正整數(shù),表示菲波那契數(shù)列中第k個(gè)數(shù)的大小樣例輸入19樣例輸出418123北京大學(xué)信息學(xué)院
郭煒解法:迭代,不停地由已知推未知k=
int(input())if k==1ork==
2:print(1)else:a1=a2=
1foriinrange(k-2):a1,a2=
a2,a1+a2print(a2)例題 求斐波那契數(shù)列第k項(xiàng)北京大學(xué)信息學(xué)院
郭煒信息科學(xué)技術(shù)學(xué)院1學(xué)會(huì)程序和算法,走遍天下都不怕!實(shí)用Python程序設(shè)計(jì)北京大學(xué)信息學(xué)院
郭煒函數(shù)和遞歸信息科學(xué)技術(shù)學(xué)院2北京大學(xué)信息學(xué)院
郭煒函 數(shù)信息科學(xué)技術(shù)學(xué)院
郭煒黃山北京大學(xué)信息學(xué)院
郭煒為什么需要函數(shù)4“函數(shù)”:
將實(shí)現(xiàn)了某一功能,并需要在程序中多處使用的代碼包裝起來(lái)形成一個(gè)功能模塊(即寫成一個(gè)“函數(shù)”),那么當(dāng)程序中需要使用該項(xiàng)功能時(shí),只需寫一條語(yǔ)句,調(diào)用實(shí)現(xiàn)該功能的“函數(shù)”即可。不同的程序員可以分別寫不同的函數(shù),拼起來(lái)形成一個(gè)大程序北京大學(xué)信息學(xué)院
郭煒函數(shù)的定義5def
函數(shù)名(參數(shù)1,
參數(shù)2
……):語(yǔ)句組(即“函數(shù)體”)也可以沒(méi)有參數(shù):def
函數(shù)名():語(yǔ)句組(即“函數(shù)體”)北京大學(xué)信息學(xué)院
郭煒函數(shù)調(diào)用和return語(yǔ)句6調(diào)用函數(shù):函數(shù)名(參數(shù)1,參數(shù)2,……)對(duì)函數(shù)的調(diào)用,也是一個(gè)表達(dá)式。函數(shù)調(diào)用表達(dá)式的值,由函數(shù)內(nèi)部的return語(yǔ)句決定。return語(yǔ)句語(yǔ)法如下:return
返回值return語(yǔ)句的功能是結(jié)束函數(shù)的執(zhí)行,并將“返回值”作為結(jié)果返回?!胺祷刂怠笔浅A?、變量或復(fù)雜的表達(dá)式均可。如果函數(shù)不需要返回值,return語(yǔ)句就直接寫:return北京大學(xué)信息學(xué)院
郭煒函數(shù)調(diào)用和return語(yǔ)句7return
語(yǔ)句作為函數(shù)的出口,可以在函數(shù)中多次出現(xiàn)。多個(gè)return語(yǔ)句的“返回值”可以不同。在哪個(gè)return語(yǔ)句結(jié)束函數(shù)的執(zhí)行,函數(shù)的返回值就和哪個(gè)return語(yǔ)句里面的“返回值”相等。北京大學(xué)信息學(xué)院
郭煒函數(shù)使用實(shí)例1 : Max函數(shù)8def
Max(x,y):ifx>
y:return
xelse:return
y#函數(shù)到此結(jié)束n=Max(4,6)print(n,Max(20,n))print(Max("about","take"))6
20take形參實(shí)參=北京大學(xué)信息學(xué)院
郭煒函數(shù)使用實(shí)例2 : 判斷是否是素?cái)?shù)的函數(shù)def
IsPrime(n):ifn<=1orn%2==0andn!=
2:return
Falseelifn==
2:return
Trueelse:foriin
range(3,n,2):ifn%i==
0:return
Falseifi*i>
n:breakreturn
Trueforiin
range(100):if(
IsPrime(i)):print(i,end="
")23571113171923293137414347535961677173798389
997北京大學(xué)信息學(xué)院
郭煒函數(shù)的缺省參數(shù)允許有些參數(shù)有默認(rèn)值,即調(diào)用的時(shí)候如果不給出這些參數(shù),這些參數(shù)的值就自動(dòng)取默認(rèn)值。deff(x,y=1,z=
2):print(x,y,z)f(0)#>>01
2f(0,100)#>>0100
2f(0,200,300)#>>0200
300f(0,z='a')#>>01
af(0,y='a')#>>0a
2f(y='a',z=4)#>>runtime
error10北京大學(xué)信息學(xué)院
郭煒函數(shù)中的變量一個(gè)函數(shù)內(nèi)部定義(賦值)的變量,在這個(gè)函數(shù)外部不能使用不同函數(shù)中的同名變量不會(huì)互相影響函數(shù)中的變量和全局變量(在函數(shù)外面定義的變量)同名的情況(假設(shè)都叫x
):如果沒(méi)有對(duì)
x
賦值,函數(shù)中的
x
就是全局的
x如果對(duì)x
賦值,且沒(méi)有特別聲明,則在函數(shù)中全局的x不起作用,函數(shù)中的x就是只在函數(shù)內(nèi)部起作用的
x函數(shù)內(nèi)部可以用globalx
聲明函數(shù)里的
x
就是全局變量
x北京大學(xué)信息學(xué)院
郭煒def
f0():print("x
in
f0:",x)
#這個(gè)x是全局的xdef
f1():x
=
8 #這個(gè)x是局部的x,不會(huì)改變?nèi)值膞print("xinf1:",x)deff2():global
x #說(shuō)明本函數(shù)中的x都是全局的xprint("xinf2:",x)x=
5print("xinf2:",x)def
f3():print("x
in
f3=",x)#出錯(cuò)。因后面有賦值而被當(dāng)作局部的x,此處沒(méi)賦值就先使用了x=
9x
=
4 #全局的xf0()#>>xinf0:4f1()#>>xinf1:8print(x)#>>4xinf2:
5f2()
#>>x
inf2:
4
下一行:print(x)
#>>5f3()
#出錯(cuò)北京大學(xué)信息學(xué)院
郭煒python內(nèi)置函數(shù)13len("123")
len([2,3,4])x
是列表,如x
是列表,如max([2,3,5])min([2,3,5])int(x)float(x)str(x)ord(x)chr(x)abs(x)len(x)max(x)min(x)max(x1,x2,x3...)min(x1,x2,x3...)print(max(1,2,3))#>>3print(min("ab","cd","af"))#>>ab北京大學(xué)信息學(xué)院
郭煒python內(nèi)置函數(shù)14exit()type(x)結(jié)束程序運(yùn)行返回x的類型print(type("123")) #>><class'str'>print(type([1,2,3]))#>><class'list'>x=
"223"print(type(x)==
type([1,2]))#>>False北京大學(xué)信息學(xué)院
郭煒遞歸的概念信息科學(xué)技術(shù)學(xué)院
郭煒冰島維克鎮(zhèn)海角北京大學(xué)信息學(xué)院
郭煒遞歸一個(gè)概念的定義中用到了這個(gè)概念本身,這就叫遞歸用遞歸的方式定義"n的階乘"“1的階乘”是1“n的階乘”就是
n
乘以
“(n-1)的階乘”第二句中用到了階乘這個(gè)需要定義的概念16北京大學(xué)信息學(xué)院
郭煒遞歸一個(gè)函數(shù),自己調(diào)用自己,就是遞歸。和調(diào)用別的函數(shù)無(wú)本質(zhì)區(qū)別,可以看作是調(diào)用另一個(gè)同名同功能函數(shù)def
Factorial(n):
#函數(shù)返回n的階乘ifn<2
:return
1
#
終止條件else:returnn*
Factorial(n-1)17北京大學(xué)信息學(xué)院
郭煒遞歸print(Factorial(4))print(Factorial(5))#>>24#>>120遞歸函數(shù)需要有終止條件,否則就會(huì)無(wú)窮遞歸導(dǎo)致程序無(wú)法終止甚至崩潰遞歸定義也需要有終止條件,否則無(wú)法讓人明表。例如"n的階乘
"的定義中的:“1的階乘”是118北京大學(xué)信息學(xué)院
郭煒F(4)4*F(3)F(3)F(2)F(1)3*F(2) 2 2*F(1) 1 return
1624def
F(n):
#函數(shù)返回n的階乘ifn<2
:return
1;#
終止條件else:returnn*F
(n-1)每一層調(diào)用的n的值不同,不會(huì)互相影響。理解成調(diào)用別的同名同功能函數(shù),即可很自然理解這一點(diǎn)北京大學(xué)信息學(xué)院
郭煒遞歸求斐波那契數(shù)列第
n
項(xiàng)的函數(shù)def
Fib(n):ifn==1orn==
2:return
1else:return
Fib(n-1)+Fib(n-2)20北京大學(xué)信息學(xué)院
郭煒遞歸例題:上臺(tái)階信息科學(xué)技術(shù)學(xué)院
郭煒木蘭圍場(chǎng)泰豐湖北京大學(xué)信息學(xué)院
郭煒遞歸例題:上臺(tái)階上臺(tái)階問(wèn)題:有n級(jí)臺(tái)階,每步可以走一級(jí)或兩級(jí),問(wèn)有多少種不同的走法def
ways(n):ifn==
1:return
1elifn==
2:return
2else:return
ways(n-1)+ways(n-2)#第一步走一級(jí)的走法+第一步走2級(jí)的走法print(ways(4)) #>>522北京大學(xué)信息學(xué)院
郭煒遞歸例題:漢諾塔問(wèn)題(Hanoi)信息科學(xué)技術(shù)學(xué)院河北草原天路北京大學(xué)信息學(xué)院
郭煒古代有一個(gè)梵塔,塔內(nèi)有三個(gè)座A、B、C,A座上有64個(gè)盤子,盤子大小不等,大的在下,小的在上(如圖)。有一個(gè)和尚想把這64個(gè)盤子從A座移到C座,但每次只能允許移動(dòng)一個(gè)盤子,并且在移動(dòng)過(guò)程中,3個(gè)座上的盤子始終保持大盤在下,小盤在上。在移動(dòng)過(guò)程中可以利用B座,要求輸出移動(dòng)的步驟。漢諾塔問(wèn)題(Hanoi)北京大學(xué)信息學(xué)院
郭煒defHanoi(n,
src,mid,dest):#將src座上的n個(gè)盤子,以mid座為中轉(zhuǎn),移動(dòng)到dest座if(
n
==
1)
:
#只需移動(dòng)一個(gè)盤子#
直接將盤子從src移動(dòng)到dest即可print(src+ "->"+dest)return#遞歸終止estn個(gè)盤子的漢諾搬家,需要移動(dòng)盤子2n-1次T(n)=2*
T(n-1)漢諾塔問(wèn)題(Hanoi)n=
3A->CA->BC->BA->CHanoi(n-1,src,dest,mid)
#先將n-1個(gè)盤子從src移動(dòng)到mid
B->Aprint(src+
"->"
+
dest)
#再將一個(gè)盤子從src移動(dòng)到dest
B->CHanoi(n-1,mid,src,dest)
#最后將n-1個(gè)盤子從mid移動(dòng)到d
A->Cn=
int(input())Hanoi(n,'A','B',
'C');北京大學(xué)信息學(xué)院
郭煒信息科學(xué)技術(shù)學(xué)院1學(xué)會(huì)程序和算法,走遍天下都不怕!實(shí)用Python程序設(shè)計(jì)郭 煒北京大學(xué)信息學(xué)院
郭煒Python組合數(shù)據(jù)類型(一)字符串和元組信息科學(xué)技術(shù)學(xué)院2北京大學(xué)信息學(xué)院
郭煒Python變量的指針本質(zhì)信息科學(xué)技術(shù)學(xué)院 郭煒瑞士馬特洪峰北京大學(xué)信息學(xué)院
郭煒Python中的變量都是指針Python中所有可賦值的東西,即可以出現(xiàn)在賦值號(hào)"="
左邊的東西,都是指針指針即代表內(nèi)存單元的地址將指針?lè)Q作
“箭頭",更容易理解。所有變量都是箭頭,指向內(nèi)存某處對(duì)變量進(jìn)行賦值的本質(zhì),就是讓該變量(箭頭)指向某個(gè)地方4北京大學(xué)信息學(xué)院
郭煒534ab對(duì)變量進(jìn)行賦值,意味著將變量指向某處Python中的變量都是指針a=
3b=
4北京大學(xué)信息學(xué)院
郭煒Python中的變量都是指針用一個(gè)變量對(duì)另一個(gè)變量賦值意味著讓兩個(gè)變量指向同一個(gè)地方634aba=
b北京大學(xué)信息學(xué)院
郭煒is
運(yùn)算符和
==
的區(qū)別7ais
b 為True
說(shuō)a和b
指向同一個(gè)地方a==
b 為True
說(shuō)明a和b指向的地方放的的東西相同,但是a和b不一定指向相同的地方a
=
b
會(huì)使得a和b指向同一個(gè)地方3北京大學(xué)信息學(xué)院
郭煒is
運(yùn)算符和
==
的區(qū)別x
is
y
表示x和y是否指向同一個(gè)地方x
==
y
表示x和y的內(nèi)容是否相同a=
[1,2,3,4]b=
[1,2,3,4]8a[1,2,3,4][1,2,3,4]print(print(c=
aaa==isb)b)#>>True b#>>False cprint(a==c)#>>Trueprint(aisc)#>>True北京大學(xué)信息學(xué)院
郭煒is
運(yùn)算符和
==
的區(qū)別a[2]=
"ok"print(c) #>>[1,2,'ok',
4]9a[1,2,'ok',4]b[1,2,3,4]c因?yàn)閍和c指向同一個(gè)地方,所以修改a[2],c[2]也變。a[2]和c[2]是同一個(gè)東西北京大學(xué)信息學(xué)院
郭煒字符串的轉(zhuǎn)義字符信息科學(xué)技術(shù)學(xué)院
郭煒梵蒂岡北京大學(xué)信息學(xué)院
郭煒轉(zhuǎn)義字符'\'
及其后面的某些字符會(huì)構(gòu)成轉(zhuǎn)義字符,即兩個(gè)字符當(dāng)一個(gè)字符看#\n \t \"
都是“轉(zhuǎn)義字符”代表print("hello\nworld\tok\"1\\2")換行,制表符,
雙引號(hào),斜杠輸出:helloworld ok"1\2字符,包括\n這樣的轉(zhuǎn)義字符,只能出現(xiàn)在字符串里面,必須用引號(hào)括起來(lái)!print(a\nb)
不合法,不會(huì)打出
a的值,然后換行,再打出b的值11北京大學(xué)信息學(xué)院
郭煒轉(zhuǎn)義字符規(guī)定 '\'
不轉(zhuǎn)義的字符串print(r'ab\ncd')#>>ab\ncdr
表示字符串里面的\就是\,不會(huì)和后面的字符合并起來(lái)看待12北京大學(xué)信息學(xué)院
郭煒字符串的切片(子串)信息科學(xué)技術(shù)學(xué)院
郭煒富士山北京大學(xué)信息學(xué)院
郭煒字符串切片(子串)詳解字符串的切片(也叫子串,即連續(xù)的一部分)a[x:y]表示字符串a(chǎn)里從下標(biāo)x到下標(biāo)y那一部分的子串(不包括下標(biāo)y的那個(gè)字符)a="ABCD"print(a[1:2])#>>B區(qū)間是左閉右開(kāi),終點(diǎn)不算print(a[0:-1])#>>ABCprintprint(a[-3:-1])(a[2:])#>>BC#>>CD終點(diǎn)省略就是一直取到最后一個(gè)字符print(a[:3])#>>ABC起點(diǎn)省略就是從頭開(kāi)始取print("abcd"[2:3])#>>c14北京大學(xué)信息學(xué)院
郭煒字符串切片(子串)詳解a[x:y:z]表示,從a[x]取到a[y](a[y]不算),每z個(gè)字符取一個(gè),最后拼起來(lái)。z為負(fù)數(shù)則代表倒著取x,y可以省略。x,y全省略表示從頭取到尾或從尾取到頭print("1234"[3:1:-1])
#>>43可用于反轉(zhuǎn)字符串print("abcde"[::-1]) #>>edcbaprint("12345678"[1:7:2])
#>>246print("12345678"[7:1:-2])
#>>864字符串切片的用法也適用于元組和列表!15北京大學(xué)信息學(xué)院
郭煒字符串的函數(shù)信息科學(xué)技術(shù)學(xué)院
郭煒美國(guó)加州1號(hào)公路北京大學(xué)信息學(xué)院
郭煒字符串函數(shù)count 求子串出現(xiàn)次數(shù)s='thisAAbb
AA's.count('AA') #
返回2,AA出現(xiàn)2次len 字符串長(zhǎng)度s=
'1234'len(s)#417北京大學(xué)信息學(xué)院
郭煒字符串函數(shù)upper,
lower
轉(zhuǎn)大寫、小寫s=
"abc"print(s.upper())#>>ABCprint(s)#>>abc?18北京大學(xué)信息學(xué)院
郭煒字符串函數(shù)find,rfind,index,
rindex在字符串中查找子串,返回找到的位置(下標(biāo))。找不到的話,find返回-1,index
引發(fā)異常s="1234abc567abc12"print(s.find("ab"))
#>>4
,"ab"第一次出現(xiàn)在下標(biāo)4print(s.rfind("ab"))
#>>10#find從頭開(kāi)始找,rfind從尾巴開(kāi)始找。返回第一個(gè)找到的位置try
:s.index("afb")
#找不到"afb"因此會(huì)產(chǎn)生異常exceptExceptionas
e:print(e)#>>substringnot
found19北京大學(xué)信息學(xué)院
郭煒字符串函數(shù)find
還可以指定查找起點(diǎn)s="1234abc567abc12"print(s.find("12",4)) #>>13
指定從下標(biāo)4處開(kāi)始查找20北京大學(xué)信息學(xué)院
郭煒字符串函數(shù)replace
替換s="1234abc567abc12"b
=
s.replace("abc","FGHI")
#b由把s里所有abc換成FGHI而得print(b)print(s)#>>
1234FGHI567FGHI12#>>
1234abc567abc12print(s.replace("abc",""))#>>123456712isdigit(),
islower(),
isupper()
判斷字符串是否是數(shù),是否全是小寫等startswith,
endswith
判斷字符串是否以某子串開(kāi)頭、結(jié)尾21北京大學(xué)信息學(xué)院
郭煒字符串函數(shù)isdigit(),
islower(),
isupper()
判斷字符串是否全是數(shù),是否全是小寫等print("123.4".isdigit())#>>Falseprint("123".isdigit())#>>Trueprint("a123.4".isdigit())#>>Falseprint("Ab123".islower())#>>Falseprint("ab123".islower())#>>True22北京大學(xué)信息學(xué)院
郭煒字符串函數(shù)startswith,
endswith
判斷字符串是否以某子串開(kāi)頭、結(jié)尾print("abcd".startswith("ab"))#>>Trueprint("abcd".endswith("bcd"))#>>Trueprint("abcd".endswith("bed"))#>>False23北京大學(xué)信息學(xué)院
郭煒字符串函數(shù)strip()
返回除去頭尾空白字符(空格,
'\r'
'\t' '\n')后的字符串lstrip()
返回除去頭部(左端)空白字符后的字符串rstrip()
返回除去尾部(右端)空白字符后的字符串print("
\t1234\n
".strip()) #>>12
34print("
\t12345".lstrip()) #>>1234
524北京大學(xué)信息學(xué)院
郭煒字符串函數(shù)strip(s),
lstrip(s),
rstrip(s)
返回除去兩端、左端、右端
在s
中出現(xiàn)的字符后的字符串print("takeab
\n".strip("ba
\n")) #>>take#去除兩端 'b','a','
','\n'print("cd\t12345".lstrip("d\tc"))#>>1234
5#去除左端 'd','\t','c'25北京大學(xué)信息學(xué)院
郭煒元 組信息科學(xué)技術(shù)學(xué)院
郭煒華山北京大學(xué)信息學(xué)院
郭煒元組一個(gè)元組由數(shù)個(gè)逗號(hào)分隔的值組成,前后可加括號(hào)元組不能修改,即不可增刪元素,不可對(duì)元素賦值,不可修改元素順序(如排序)t=12345,
54321,
'hello!' #t是一個(gè)元組print(t[0])print(t)#>>12345#>>(12345,54321,
'hello!')u
=
t,
(1,
2,
3,
4,
5)
#u有兩個(gè)元素,都是元組print(u) #>>((12345,54321,'hello!'),(1,2,3,4,
5))print(u[0][1])#>>54321print(u[1][2])#>>3t[0]
=
88888 #運(yùn)行錯(cuò)誤,元組的元素不能賦值27北京大學(xué)信息學(xué)院
郭煒元組元組的元素的內(nèi)容有可能被修改。例如,如果元素是列表,就可以修改該列表v
=
("hello",[1,
2,
3],
[3,
2,
1])
#
[1,2,3]是列表v[1]
=
32 #運(yùn)行錯(cuò)誤,元組元素不可修改成指向別的v[1][0]
=
'world' #可以#>>('hello',['world',2,3],[3,2,
1])#>>
3求長(zhǎng)度#>>([1,2],[1,
2])print(v)print(len(v))t=
[1,2]d=
(t,t)print(d)t[0]=
'ok'print(d)#>>(['ok',2],['ok',
2])28北京大學(xué)信息學(xué)院
郭煒元組元組的元素的內(nèi)容有可能被修改。例如,如果元素是列表,就可以修改該列表t[0]=
'ok'#>>(['ok',2],['ok',
2])print(d)t=8print(d)#>>(['ok',2],['ok',
2])29北京大學(xué)信息學(xué)院
郭煒元組單元素的元組empty=
() #空元組singleton='hello',print(len(empty))print(len(singleton))#注意末尾的,如果沒(méi)有,就不是元組而是字符串了#>>0#>>1x
=
('hello',) #無(wú)逗號(hào)則x為字符串print(x)#>>('hello',)30北京大學(xué)信息學(xué)院
郭煒元組用下標(biāo)訪問(wèn)元組,以及元組切片用法和字符串一樣tup1=('Google','Runoob',1997,
2000)tup2=(1,2,3,4,5,6,7
)print(tup1[0])print
(tup2[1:5])print(tup2[::-1])#>>Google#>>(2,3,4,
5)#>>(7,6,5,4,3,2,
1)print(tup2[-1:0:-2]) #>>(7,5,
3)31北京大學(xué)信息學(xué)院
郭煒元組可以對(duì)元組進(jìn)行連接組合tup1=(12,34.56);tup2=('abc',
'xyz')#
創(chuàng)建一個(gè)新的元組tup3=tup1+
tup2print(tup3)#>>(12,34.56,'abc',
'xyz')tup3
+=
(10,20)
#
等價(jià)于tup3=tup3+(10,20),新建了一個(gè)元組print(tup3)#>>(12,34.56,'abc',
'xyz',10,20)32北京大學(xué)信息學(xué)院
郭煒元組元組運(yùn)算和迭代x=(1,2,3)*
3print(x)#>>(1,2,3,1,2,3,1,2,
3)#>>Trueprint(3in
(1,2,3))foriin
(1,2,3):print(i,end=
"")#>>12333北京大學(xué)信息學(xué)院
郭煒元組賦值x=
(1,2,3)b=
xprint(bisx)
#
true is
表示兩個(gè)操作數(shù)是否指向同一個(gè)東西,即是否是同一個(gè)對(duì)象x
+=
(100,) #
等價(jià)于
x
=
x
+
(100,)新建了一個(gè)元組print(x)#(1,2,3,100)print(b)#(1,2,3)34北京大學(xué)信息學(xué)院
郭煒元組比大小兩個(gè)元組比大小,就是逐個(gè)元素比大小,直到分出勝負(fù)。如果有兩個(gè)對(duì)應(yīng)元素不可比大小,則出 runtime
error。print((1,'a',12)<
(1,'b',7))print((1,'a')<
(1,'a',13))print((2,'a')>
(1,'b',13))print((2,'a')<
('ab','b',13))#>>True#>>True#>>True#runtime
error35北京大學(xué)信息學(xué)院
郭煒信息科學(xué)技術(shù)學(xué)院1學(xué)會(huì)程序和算法,走遍天下都不怕!實(shí)用Python程序設(shè)計(jì)北京大學(xué)信息學(xué)院
郭煒Python組合數(shù)據(jù)類型(二)列表信息科學(xué)技術(shù)學(xué)院2北京大學(xué)信息學(xué)院
郭煒信息科學(xué)技術(shù)學(xué)院
郭煒列表基本操作冰島杰古沙龍冰河湖北京大學(xué)信息學(xué)院
郭煒列表的增刪和修改列表可以增刪元素,列表的元素可以修改,列表元素可以是任何類型empty
=[] #[]
表示空表list1=['Pku','Huawei',1997,
2000];list1[1]
=
100
#列表元素可以賦值#>>['Pku',100,1997,
2000]#刪除元素 list1.pop(2)
等效print
(list1)dellist1[2]print
(list1)#>>['Pku',100,
2000]list1+=
[100,110]#添加另一列表的元素100和110,在list1原地添加,沒(méi)有新建一個(gè)列表list1.append(200)
#添加元素 200,
append用于添加單個(gè)元素4北京大學(xué)信息學(xué)院
郭煒列表的增刪和修改print(list1) #>>['Pku',100,2000,100,110,
200]list1.append(['ok',123])
#添加單個(gè)元素print(list1)#>>['Pku',100,2000,100,110,200,['ok',
123]]a=['a','b',
'c']n=[1,2,
3]x=[a,
n] #a若變,x也變a[0]=
1print(x)print(x[0])#>>[[1,'b','c'],[1,2,
3]]#>>[1,'b',
'c']print(x[0][1])
#>>b5北京大學(xué)信息學(xué)院
郭煒列表相加列表相加可以得到新的列表a=
[1,2,3,4]b=
[5,6]c=a+
bprint(c)#>>[1,2,3,4,5,6]a[0]=
100print(c)#>>[1,2,3,4,5,6]6北京大學(xué)信息學(xué)院
郭煒列表和+=對(duì)列表來(lái)說(shuō),a+=b
和
a=a+b不同b=a=
[1,2]a+=
[3]print(a,b)#b和a指向相同地方,在a末尾添加元素,b也受影響#>>[1,2,3][1,2,
3]a
=
a
+
[4,5]
#對(duì)a重新賦值,不會(huì)影響到bprint(a)#>>[1,2,3,4,5]print(b)#>>[1,2,3]7北京大學(xué)信息學(xué)院
郭煒列表乘法#>>[True,True,
True]print([True]*
3)a=
[1,2]b
= a*
3print(b)print([a*3])c=[a]*3print(c)a.append(3)print(c)print(b)#>>[1,2,1,2,1,
2]#>>[[1,2,1,2,1,
2]]#>>[[1,2],[1,2],[1,
2]]#>>[[1,2,3],[1,2,3],[1,2,
3]]#>>[1,2,1,2,1,
2]8北京大學(xué)信息學(xué)院
郭煒列表的切片列表的切片返回新的列表,用法和字符串切片相同a=
[1,2,3,4]b=
a[1:3]#>>[2,
3]print(b)b[0]=
100print(b)print(a)#>>[100,
3]#>>[1,2,3,
4]print(a[::-1])#>>[4,3,2,
1]print([1,2,3,4,5,6][1:5:2]) #[2,4]print(a[:]) #>>[1,2,3,4]9北京大學(xué)信息學(xué)院
郭煒列表比大小兩個(gè)列表比大小,就是逐個(gè)元素比大小,直到分出勝負(fù)。如果有兩個(gè)對(duì)應(yīng)元素不可比大小,則出 runtime
error。print([1,'a',12]<
[1,'b',7])print([1,'a']<
[1,'a',13])print([2,'a']>
[1,'b',13])print([2,'a']<
['ab','b',13])#>>True#>>True#>>True#runtime
error10北京大學(xué)信息學(xué)院
郭煒列表的遍歷lst=
[1,2,3,4]forxin
lst:print(x,end="
")x=
100print(lst)#不會(huì)修改列表的元素#>>[1,2,3,
4]foriin
range(len(lst)):lst[i]=
100print(lst) #>>[100,100,100,
100]11北京大學(xué)信息學(xué)院
郭煒信息科學(xué)技術(shù)學(xué)院
郭煒列表基本應(yīng)用河南云臺(tái)山北京大學(xué)信息學(xué)院
郭煒列表應(yīng)用例題:校門外的樹(shù)某校大門外長(zhǎng)度為L(zhǎng)的馬路上有一排樹(shù),每?jī)煽孟噜彽臉?shù)之間的間隔都是1米。我們可以把馬路看成一個(gè)數(shù)軸,馬路的一端在數(shù)軸0的位置,另一端在L的位置;數(shù)軸上的每個(gè)整數(shù)點(diǎn),即0,1,2,……,L,都種有一棵樹(shù)。由于馬路上有一些區(qū)域要用來(lái)建地鐵。這些區(qū)域用它們?cè)跀?shù)軸上的起始點(diǎn)和終止點(diǎn)表示。已知任一區(qū)域的起始點(diǎn)和終止點(diǎn)的坐標(biāo)都是整數(shù),區(qū)域之間可能有重合的部分。現(xiàn)在要把這些區(qū)域中的樹(shù)(包括區(qū)域端點(diǎn)處的兩棵樹(shù))移走。你的任務(wù)是計(jì)算將這些樹(shù)都移走后,馬路上還有多少棵樹(shù)。13北京大學(xué)信息學(xué)院
郭煒列表應(yīng)用例題:校門外的樹(shù)輸入第一行有兩個(gè)整數(shù)L(1
<=L<=
10000)和M(1<=M
<=100),L代表馬路的長(zhǎng)度,M代表區(qū)域的數(shù)目,L和M之間用一個(gè)空格隔開(kāi)。接下來(lái)的M行每行包含兩個(gè)不同的整數(shù),用一個(gè)空格隔開(kāi),表示一個(gè)區(qū)域的起始點(diǎn)和終止點(diǎn)的坐標(biāo)。輸出包括一行,這一行只包含一個(gè)整數(shù),表示馬路上剩余的樹(shù)的數(shù)目。14北京大學(xué)信息學(xué)院
郭煒列表應(yīng)用例題:校門外的樹(shù)樣例輸入5003150300100200470471樣例輸出29815北京大學(xué)信息學(xué)院
郭煒列表應(yīng)用例題:校門外的樹(shù)16為True表示坐標(biāo)i的樹(shù)還在s=
input().split()L,M=
int(s[0]),int(s[1])good=[True]*(L+1)#good[i]foriin
range(M):s=
input().split()start,end=int(s[0]),int(s[1])forkinrange(start,end+
1):good[k]
=
False
#坐標(biāo)k處的樹(shù)被移走了print(sum(good))#sum是python函數(shù),可以求列表元素和#True就是1,False就是0北京大學(xué)信息學(xué)院
郭煒信息科學(xué)技術(shù)學(xué)院
郭煒用排序函數(shù)對(duì)簡(jiǎn)單列表排序新加坡金沙酒店北京大學(xué)信息學(xué)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 通信設(shè)備在提升能源服務(wù)體驗(yàn)中的作用考核試卷
- 膠合板生產(chǎn)場(chǎng)所的消防安全管理考核試卷
- 聚合纖維的綠色生產(chǎn)與可持續(xù)發(fā)展考核試卷
- 農(nóng)產(chǎn)品加工技術(shù)考核試卷
- 冷凍冷藏設(shè)備銷售行業(yè)發(fā)展前景及投資風(fēng)險(xiǎn)預(yù)測(cè)分析報(bào)告
- 云社交媒體行業(yè)發(fā)展趨勢(shì)及前景展望分析報(bào)告
- 有關(guān)實(shí)習(xí)報(bào)告范文錦集8篇
- 有關(guān)感恩父母主題的演講稿三篇
- 有關(guān)競(jìng)聘中層演講稿6篇
- 2021-2022學(xué)年浙江省浙南聯(lián)盟物理高一第二學(xué)期期末質(zhì)量跟蹤監(jiān)視試題含解析
- 《陸上風(fēng)電場(chǎng)工程概算定額》NBT 31010-2019
- 產(chǎn)品保修卡模板
- PICC相關(guān)靜脈血栓的護(hù)理
- 干部人事檔案轉(zhuǎn)遞單表樣
- 最新吊籃安全檢查驗(yàn)收記錄表
- 最新水在管路中的阻力計(jì)算
- LED顯示屏行業(yè)標(biāo)準(zhǔn)(標(biāo)準(zhǔn))(1)
- 100以內(nèi)退位減法經(jīng)典實(shí)用
- 《小圣施威降大圣》說(shuō)課稿
- 微生物鏡檢及運(yùn)行判斷講解
- 山東理工大學(xué)-研究生院
評(píng)論
0/150
提交評(píng)論