Python程序設(shè)計(jì)基礎(chǔ)及實(shí)踐(慕課版 第2版)課件全套郭煒 1. Python初探- 17.GUI程序設(shè)計(jì)_第1頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)及實(shí)踐(慕課版 第2版)課件全套郭煒 1. Python初探- 17.GUI程序設(shè)計(jì)_第2頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)及實(shí)踐(慕課版 第2版)課件全套郭煒 1. Python初探- 17.GUI程序設(shè)計(jì)_第3頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)及實(shí)踐(慕課版 第2版)課件全套郭煒 1. Python初探- 17.GUI程序設(shè)計(jì)_第4頁(yè)
Python程序設(shè)計(jì)基礎(chǔ)及實(shí)踐(慕課版 第2版)課件全套郭煒 1. Python初探- 17.GUI程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩381頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論