Python程序設(shè)計(jì)-從基礎(chǔ)到應(yīng)用 課件 第3、4章 程序控制結(jié)構(gòu)、組合數(shù)據(jù)類型_第1頁(yè)
Python程序設(shè)計(jì)-從基礎(chǔ)到應(yīng)用 課件 第3、4章 程序控制結(jié)構(gòu)、組合數(shù)據(jù)類型_第2頁(yè)
Python程序設(shè)計(jì)-從基礎(chǔ)到應(yīng)用 課件 第3、4章 程序控制結(jié)構(gòu)、組合數(shù)據(jù)類型_第3頁(yè)
Python程序設(shè)計(jì)-從基礎(chǔ)到應(yīng)用 課件 第3、4章 程序控制結(jié)構(gòu)、組合數(shù)據(jù)類型_第4頁(yè)
Python程序設(shè)計(jì)-從基礎(chǔ)到應(yīng)用 課件 第3、4章 程序控制結(jié)構(gòu)、組合數(shù)據(jù)類型_第5頁(yè)
已閱讀5頁(yè),還剩193頁(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)介

程序控制結(jié)構(gòu)程序控制結(jié)構(gòu)知識(shí)CONTENT要點(diǎn)選擇結(jié)構(gòu)程序設(shè)計(jì)循環(huán)結(jié)構(gòu)程序設(shè)計(jì)異常處理算法算法是解決問(wèn)題的一系列操作步驟的集合。程序流程圖用一系列圖形、流程線和文字說(shuō)明描述程序的基本操作和控制流程,它是程序分析和過(guò)程描述的最基本方式。流程圖的基本元素包括7種:程序控制結(jié)構(gòu)順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)順序結(jié)構(gòu)順序結(jié)構(gòu)是程序按照線性順序依次執(zhí)行的一種運(yùn)行方式。語(yǔ)句塊1語(yǔ)句塊2選擇結(jié)構(gòu)選擇結(jié)構(gòu)是程序根據(jù)條件判斷結(jié)果,選擇不同向前執(zhí)行路徑的一種運(yùn)行二分支結(jié)構(gòu)條件語(yǔ)句塊1語(yǔ)句塊2TrueFalse循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)是程序根據(jù)條件判斷結(jié)果,反復(fù)執(zhí)行語(yǔ)句塊的一種運(yùn)行方式。遍歷循環(huán)取遍歷結(jié)構(gòu)的第i個(gè)元素語(yǔ)句塊元素i遍歷結(jié)束條件?語(yǔ)句塊TrueFalse條件循環(huán)順序程序設(shè)計(jì)舉例輸入三角形的三條邊a,b,c,根據(jù)公式計(jì)算并輸出三角形的面積。

順序程序設(shè)計(jì)舉例start輸入a,b,cs=(a+b+c)/2輸出areaend順序程序設(shè)計(jì)舉例1234a,b,c=eval(input("輸入三角形的三條邊長(zhǎng):"))s=(a+b+c)/2area=(s*(s-a)*(s-b)*(s-c))**0.5print("area=",area)輸入三角形的三條邊長(zhǎng):3,4,5area=6.0>>>選擇結(jié)程序設(shè)計(jì)猜拳游戲贏了輸了平手知識(shí)要點(diǎn)選擇結(jié)構(gòu)選擇結(jié)構(gòu)嵌套多分支結(jié)構(gòu)雙分支結(jié)構(gòu)單分支結(jié)構(gòu)目CONTENT錄單分支結(jié)構(gòu)單分支結(jié)構(gòu):if語(yǔ)句判斷條件,若為真,執(zhí)行語(yǔ)句塊;否則跳過(guò)語(yǔ)句塊。語(yǔ)法格式如下:if<條件>:

語(yǔ)句塊條件語(yǔ)句塊TrueFalse單分支結(jié)構(gòu):if語(yǔ)句判斷用戶輸入數(shù)字的奇偶性請(qǐng)輸入一個(gè)整數(shù):8這是個(gè)偶數(shù)1234#判斷用戶輸入數(shù)字的奇偶性n=eval(input(“請(qǐng)輸入一個(gè)整數(shù):"))ifn%2==0:print("這是個(gè)偶數(shù)")n%2==0?FalseTrue輸出:這是個(gè)偶數(shù)startend輸入n目CONTENT錄雙分支結(jié)構(gòu)雙分支結(jié)構(gòu):if-else語(yǔ)句根據(jù)條件判斷結(jié)果,為真選擇執(zhí)行語(yǔ)句塊1,為假選擇執(zhí)行語(yǔ)句塊2。語(yǔ)法格式如下:if<條件>:<語(yǔ)句塊1>else:<語(yǔ)句塊2>條件語(yǔ)句塊1FalseTrue語(yǔ)句塊2雙分支結(jié)構(gòu):if-else語(yǔ)句n%2==0?FalseTrue輸入n輸出:這是個(gè)偶數(shù)輸出:這是個(gè)奇數(shù)startend雙分支結(jié)構(gòu):if-else語(yǔ)句判斷用戶輸入數(shù)字的奇偶性12345#判斷用戶輸入數(shù)字的奇偶性n=eval(input("請(qǐng)輸入一個(gè)整數(shù):"))ifn%2==0:print("這是個(gè)偶數(shù)")else:print("這是個(gè)奇數(shù)")6請(qǐng)輸入一個(gè)整數(shù):7這是個(gè)奇數(shù)>>>雙分支結(jié)構(gòu):if-else語(yǔ)句雙分支結(jié)構(gòu)還有一種更簡(jiǎn)潔的表達(dá)方式,語(yǔ)法格式如下:<表達(dá)式1>if<條件>else<表達(dá)式2>123n=int(input(""))s=“是偶數(shù)”ifn%2==0else“是奇數(shù)"print(n,s)55是奇數(shù)>>>目CONTENT錄多分支結(jié)構(gòu)多分支結(jié)構(gòu):if-elif-else語(yǔ)句Python的if-elif-else描述多分支結(jié)構(gòu)。語(yǔ)法格式如下:if<條件1>:<語(yǔ)句塊1>elif<條件2>:<語(yǔ)句塊2>...else:<語(yǔ)句塊N>條件1語(yǔ)句塊1True語(yǔ)句塊NFalse…條件N-1語(yǔ)句塊N-1TrueFalse多分支結(jié)構(gòu):if-elif-else語(yǔ)句編程計(jì)算函數(shù)的值,格式如下:-404

多分支結(jié)構(gòu):if-elif-else語(yǔ)句x<-4?y=x+9Truey=2*x-15False輸入xx<4?y=x*x+2*x+9TrueFalse輸出y

多分支結(jié)構(gòu):if-elif-else語(yǔ)句編程計(jì)算函數(shù)的值,格式如下:1#計(jì)算分段函數(shù)x=eval(input("輸入x的值:"))ifx<-4:y=x+9elifx<4:y=x*x+2*x+1else:y=2*x-15print("y=",y)23456789輸入x的值:6y=-3>>>

目CONTENT錄選擇結(jié)構(gòu)的嵌套選擇結(jié)構(gòu)的嵌套if語(yǔ)句可以嵌套if語(yǔ)句,兩種選擇結(jié)構(gòu)嵌套語(yǔ)句格式如下:語(yǔ)法二:if<條件1>:<語(yǔ)句塊1>else:

if<條件2>:<語(yǔ)句塊2>語(yǔ)法一:if<條件1>:

if<條件2>:<語(yǔ)句塊1>else:<語(yǔ)句塊2>選擇結(jié)構(gòu)的嵌套編程計(jì)算函數(shù)的值,格式如下:1x=int(input("輸入x值:"))ifx<-4:y=x+9else:

ifx<4:y=x**2+2*x+1else:y=2*x-15print("y={}".format(y))234567891x=int(input("輸入x值:"))ifx<4:

ifx<-4:y=x+9else:y=x**2+2*x+1else:y=2*x-15print("y={}".format(y))23456789

實(shí)例解析輸入學(xué)生成績(jī),判定成績(jī)等級(jí)。85以上為優(yōu)秀,70分以上為良好,60分以上為及格,60分以下為不及格。1score=eval(input("請(qǐng)輸入學(xué)生成績(jī):"))ifscore>=85:print("優(yōu)秀")elifscore>=70:print("良好")elifscore>=60:print("及格")else:print("不及格")23456789請(qǐng)輸入學(xué)生成績(jī):67及格>>>實(shí)例解析從鍵盤輸入一個(gè)字符ch,判斷它是英文字母、數(shù)字或其他字符。1ch=input("請(qǐng)輸入一個(gè)字符:")if'a'<=ch<='z'or'A'<=ch<='Z':print("英文字母")elif'0'<=ch<='9':print("數(shù)字字符")else:print("其他字符")234567請(qǐng)輸入一個(gè)字符:8數(shù)字字符>>>實(shí)例解析從鍵盤輸入一個(gè)字符ch,判斷它是英文字母、數(shù)字或其他字符。1ch=input("請(qǐng)輸入一個(gè)字符:")ifch.isalpha():print("英文字母")elifch.isnumeric():print("數(shù)字字符")else:print("其他字符")234567請(qǐng)輸入一個(gè)字符:?其他字符>>>選擇結(jié)構(gòu)——應(yīng)用實(shí)戰(zhàn)應(yīng)用實(shí)戰(zhàn)BMI計(jì)算器應(yīng)用實(shí)戰(zhàn)身體質(zhì)量指數(shù)(BodyMassIndex,簡(jiǎn)稱BMI),是目前國(guó)際上常用的衡量人體胖瘦程度以及是否健康的一個(gè)標(biāo)準(zhǔn)。BMI值超標(biāo),意味著你必須減肥了。BMI計(jì)算公式:體質(zhì)指數(shù)(BMI)=體重(kg)/身高2(m)應(yīng)用實(shí)戰(zhàn)中國(guó)BMI指數(shù)標(biāo)準(zhǔn)表BMI指數(shù)結(jié)果<18.5偏瘦18.5~24正常24~28超重>=28肥胖應(yīng)用實(shí)戰(zhàn)設(shè)計(jì)一個(gè)BMI計(jì)算器,輸入體重(kg)及身高(m),計(jì)算BMI指數(shù),判定身體質(zhì)量。根據(jù)bmi指數(shù)標(biāo)準(zhǔn)表,采用if-elif-else多分支進(jìn)行判別;計(jì)算bmi指數(shù);輸入體重和身高;輸出身體質(zhì)量結(jié)果;應(yīng)用實(shí)戰(zhàn)BMI計(jì)算器程序代碼a=eval(input("請(qǐng)輸入您的體重(kg):"))b=eval(input("請(qǐng)輸入您的身高(m):"))bmi=a/b**2ifbmi<=18.5:print("BMI指數(shù)={:.2f},您的身體偏瘦!".format(bmi))elifbmi<=24:print("BMI指數(shù)={:.2f},您的身體正好,請(qǐng)繼續(xù)保持!".format(bmi))elifbmi<=28:print("BMI指數(shù)={:.2f},您的身體超重,要稍微控制并管理一下身材哦!".format(bmi))else:print("BMI指數(shù)={:.2f},您的身體肥胖,該減肥了!".format(bmi))BMI指數(shù)結(jié)果<18.5偏瘦18.5~24正常24~28超重>=28肥胖應(yīng)用實(shí)戰(zhàn)BMI計(jì)算器運(yùn)行效果請(qǐng)輸入您的體重(kg):47請(qǐng)輸入您的身高(m):1.5BMI指數(shù)=20.89,您的身體正好,請(qǐng)繼續(xù)保持!循環(huán)結(jié)構(gòu)程序設(shè)計(jì)猜數(shù)字游戲①生成目標(biāo)數(shù)字target②輸入猜的數(shù)字guess③判斷猜數(shù)字情況:猜小了,重復(fù)②③步,繼續(xù)游戲猜大了,重復(fù)②③步,繼續(xù)游戲猜中了,游戲結(jié)束知識(shí)要點(diǎn)break和continue循環(huán)控制語(yǔ)句循環(huán)的嵌套條件循環(huán)遍歷循環(huán)循環(huán)結(jié)構(gòu)程序的循環(huán)結(jié)構(gòu)遍歷循環(huán)使用保留字for依次提取序列對(duì)象各元素進(jìn)行處理;條件循環(huán)使用保留字while根據(jù)判斷條件執(zhí)行程序。條件?語(yǔ)句塊TrueFalse條件循環(huán)遍歷循環(huán)取遍歷結(jié)構(gòu)的第i個(gè)元素語(yǔ)句塊元素i遍歷結(jié)束目CONTENT錄取遍歷結(jié)構(gòu)的第i個(gè)元素語(yǔ)句塊元素i遍歷結(jié)束遍歷循環(huán)遍歷循環(huán):for從遍歷結(jié)構(gòu)中逐一提取元素,放在循環(huán)變量中,對(duì)于每個(gè)所提取的元素執(zhí)行一次語(yǔ)句塊。for<循環(huán)變量>in<遍歷結(jié)構(gòu)>:<語(yǔ)句塊>遍歷循環(huán)取遍歷結(jié)構(gòu)的第i個(gè)元素語(yǔ)句塊元素i遍歷結(jié)束遍歷循環(huán):for遍歷結(jié)構(gòu)可以是字符串、列表、range()函數(shù)等。>>>forcin"Python":print(c)Python對(duì)于字符串,可以逐一遍歷字符串的每個(gè)字符,基本使用方式如下:for<循環(huán)變量>in<字符串>:<語(yǔ)句塊>遍歷循環(huán):for使用range()函數(shù),返回可迭代對(duì)象:start表示開(kāi)始,默認(rèn)值為0。stop表示結(jié)束,但不包含。step表示步長(zhǎng),默認(rèn)值為1。range([start,]stop[,step]),表示[start,stop)范圍遍歷循環(huán):forfor<循環(huán)變量>inrange(<參數(shù)>):<語(yǔ)句塊>用range(1,101)產(chǎn)生迭代數(shù)據(jù)1、2、3、4、5……100遍歷循環(huán):for計(jì)算s=1+2+3+……+1001234s=0foriinrange(1,101):s=s+iprint("s=",s)s=5050>>>range(1,101)變量is=0輸出ss=s+i遍歷循環(huán):for遍歷循環(huán)還有一種擴(kuò)展模式,使用方法如下:for<循環(huán)變量>in<遍歷結(jié)構(gòu)>:<語(yǔ)句塊1>else:

<語(yǔ)句塊2>當(dāng)for循環(huán)正常執(zhí)行之后,程序會(huì)繼續(xù)執(zhí)行else語(yǔ)句中內(nèi)容;即遍歷結(jié)構(gòu)中所有元素都被訪問(wèn)過(guò)了才執(zhí)行else語(yǔ)句。遍歷循環(huán):for計(jì)算s=1+2+3+……+100s=5050>>>1234s=0foriinrange(1,101):s=s+ielse:print("s=",s)5目CONTENT錄條件?語(yǔ)句塊TrueFalse條件循環(huán)當(dāng)程序執(zhí)行到while語(yǔ)句時(shí),判斷條件如果為True,執(zhí)行循環(huán)體,語(yǔ)句結(jié)束后返回再次判斷循環(huán)條件;當(dāng)條件為False時(shí),循環(huán)終止。while<條件>:<語(yǔ)句塊>條件循環(huán):while條件?語(yǔ)句塊TrueFalse條件循環(huán)語(yǔ)法格式條件循環(huán):whilei<=100?TrueFalse輸出ss=0i=1s=s+ii=i+1計(jì)算s=1+2+3+……+100計(jì)算s=1+2+3+……+100條件循環(huán):while1234s=0#和值i=1#加數(shù)whilei<=100:#當(dāng)加數(shù)<=100s=s+i#累加求和

i=i+1#產(chǎn)生下一個(gè)加數(shù)print("s=",s)56s=5050>>>條件循環(huán):while條件循環(huán)也有一種擴(kuò)展模式,使用方法如下:while<條件>: <語(yǔ)句塊1>else: <語(yǔ)句塊2>當(dāng)while循環(huán)正常執(zhí)行之后,程序會(huì)繼續(xù)執(zhí)行else語(yǔ)句中內(nèi)容。else語(yǔ)句只在循環(huán)正常執(zhí)行后才執(zhí)行。s=5050>>>條件循環(huán):while計(jì)算s=1+2+3+……+1001234s=0#和值i=1#加數(shù)whilei<=100:#當(dāng)加數(shù)<=100s=s+i#累加求和

i=i+1#產(chǎn)生下一個(gè)加數(shù)else:print("s=",s)567break與continue循環(huán)控制:break和continuebreak用來(lái)跳出最內(nèi)層for或while循環(huán),從循環(huán)之后的代碼繼續(xù)執(zhí)行。輸入一個(gè)整數(shù)m,判斷m是否是素?cái)?shù)。m234……m-1i:循環(huán)控制:break和continue輸入一個(gè)整數(shù)m,判斷m是否是素?cái)?shù)。用i遍歷2~m-1,判斷m%i==0?m234……m-1i:若為真,判定不是素?cái)?shù),使用break語(yǔ)句中斷循環(huán);若正常遍歷結(jié)束,則判定是素?cái)?shù)。循環(huán)控制:break和continue輸入一個(gè)整數(shù)m,判斷是否是素?cái)?shù)。1234m=int(input("請(qǐng)輸入整數(shù)m:"))foriinrange(2,m):ifm%i==0:print(“不是素?cái)?shù)")breakelse:print("是素?cái)?shù)")567循環(huán)控制:break和continue輸入一個(gè)整數(shù)m,判斷是否是素?cái)?shù)。1m=int(input("請(qǐng)輸入整數(shù)m:"))ifm==1:print(“不是素?cái)?shù)”)elifm==2:print(“是素?cái)?shù)”)else:foriinrange(2,m):ifm%i==0:print(“不是素?cái)?shù)")breakelse:print("是素?cái)?shù)")請(qǐng)輸入整數(shù)m:5353是素?cái)?shù)>>>23456789101112循環(huán)控制:break和continuecontinue用來(lái)提前結(jié)束當(dāng)前當(dāng)次循環(huán),即跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句,直接進(jìn)入下一次循環(huán),但不跳出整個(gè)循環(huán)。循環(huán)控制:break和continue求1~100之間全部奇數(shù)之和1234s=0foriinrange(1,101):ifi%2==0:continues=s+iprint("s={}".format(s))56s=2500>>>循環(huán)控制:break和continueContinue語(yǔ)句和break語(yǔ)句的區(qū)別是:continue語(yǔ)句只結(jié)束本次循環(huán),不終止整個(gè)循環(huán)的執(zhí)行,而break具備結(jié)束整個(gè)循環(huán)的能力。循環(huán)的嵌套循環(huán)的嵌套輸出100~200之間的全部素?cái)?shù),每行輸出10個(gè)。循環(huán)的嵌套問(wèn)題分析:外循環(huán):用i遍歷100~200之間的每個(gè)數(shù)內(nèi)循環(huán):用j遍歷2~i-1之間的每個(gè)數(shù)循環(huán)體:判定當(dāng)前i值,是否是素?cái)?shù):若i%j==0為真:則i不是素?cái)?shù),中斷內(nèi)循環(huán)內(nèi)循環(huán)遍歷正常結(jié)束,則i是素?cái)?shù),輸出i,同時(shí)計(jì)數(shù)加1。循環(huán)的嵌套輸出100~200之間的全部素?cái)?shù),每行輸出10個(gè)。1count=0#計(jì)數(shù)foriinrange(101,200,2):#外循環(huán),遍歷區(qū)間100~200的所有奇數(shù)

forjinrange(2,i):#內(nèi)循環(huán),對(duì)當(dāng)前i,遍歷區(qū)間2~i-1ifi%j==0:#若i能被j整除,不是素?cái)?shù)

break#跳出內(nèi)循環(huán)

else:#若內(nèi)循環(huán)完整結(jié)束,輸出i,是素?cái)?shù)

print(i,end=",")count=count+1#計(jì)數(shù)加1ifcount%10==0:#處理分行

print("")2345678910101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,循環(huán)結(jié)構(gòu)——應(yīng)用實(shí)戰(zhàn)應(yīng)用實(shí)戰(zhàn)

猜數(shù)字游戲猜數(shù)字游戲①生成目標(biāo)數(shù)字target(1~1000之間)②輸入猜的數(shù)字guess③判斷猜數(shù)字情況:猜小了,重復(fù)②③步,繼續(xù)游戲猜大了,重復(fù)②③步,繼續(xù)游戲猜中了,游戲結(jié)束應(yīng)用實(shí)戰(zhàn)①生成目標(biāo)數(shù)字target,1~1000之間使用隨機(jī)庫(kù)的randint()函數(shù),生成一個(gè)隨機(jī)整數(shù)。導(dǎo)入隨機(jī)庫(kù):importrandom生成隨機(jī)數(shù)target:target=random.randint(1,1000)應(yīng)用實(shí)戰(zhàn)重復(fù)②③步,循環(huán)控制條件,whileTrue②輸入猜的數(shù)字guessguess=eval(input("輸入一個(gè)整數(shù):"))③判斷猜數(shù)字情況:猜小了、猜大了、猜中了if-elif-else實(shí)現(xiàn)應(yīng)用實(shí)戰(zhàn)猜數(shù)字游戲importrandomtarget=random.randint(1,1000)whileTrue:guess=eval(input("輸入一個(gè)整數(shù):"))ifguess<target:print("猜小了")elifguess>target:print("猜大了")else:print("猜中了")break程序的異常處理程序的異常異常是程序運(yùn)行運(yùn)行時(shí)引發(fā)的錯(cuò)誤。比如除數(shù)為0,會(huì)產(chǎn)生運(yùn)行錯(cuò)誤。>>>n=3/0Traceback(mostrecentcalllast):File"<pyshell#3>",line1,in<module>n=3/0ZeroDivisionError:divisionbyzero>>>程序的異常異常是程序運(yùn)行運(yùn)行時(shí)引發(fā)的錯(cuò)誤。比如輸入異常,會(huì)產(chǎn)生運(yùn)行錯(cuò)誤。>>>n=eval(input("請(qǐng)輸入一個(gè)數(shù)字:"))請(qǐng)輸入一個(gè)數(shù)字:pythonTraceback(mostrecentcalllast):File"<pyshell#4>",line1,in<module>n=eval(input("請(qǐng)輸入一個(gè)數(shù)字:"))File"<string>",line1,in<module>NameError:name'python'isnotdefined>>>程序的異常處理基本思路先嘗試運(yùn)行代碼,如果沒(méi)有問(wèn)題就正常執(zhí)行;如果發(fā)生了錯(cuò)誤就嘗試著去捕獲和處理;上述均無(wú)法處理,程序才崩潰。try…except…語(yǔ)句try…except…else…語(yǔ)句try…except…finally…語(yǔ)句try…except語(yǔ)句基本的語(yǔ)法格式如下:try:<語(yǔ)句塊>except:<異常處理語(yǔ)句塊>執(zhí)行try中的語(yǔ)句塊,如果執(zhí)行正常,則轉(zhuǎn)向try-except語(yǔ)句之后的語(yǔ)句執(zhí)行。若發(fā)生異常,則執(zhí)行except中的異常處理語(yǔ)句塊。try…except語(yǔ)句處理異常,比如除數(shù)為0。12345x=eval(input())try:n=1.0/xprint(n)except:print("除數(shù)不能為0")620.5>>>0除數(shù)不能為0try…except語(yǔ)句處理異常,比如輸入錯(cuò)誤。12345try:n=eval(input("請(qǐng)輸入數(shù)字n:"))y=n**2print(y)except:print("輸入錯(cuò)誤,請(qǐng)輸入數(shù)字!")6請(qǐng)輸入數(shù)字n:39>>>請(qǐng)輸入數(shù)字n:python輸入錯(cuò)誤,請(qǐng)輸入數(shù)字!>>>try…except…else語(yǔ)句基本的語(yǔ)法格式如下:try:<語(yǔ)句塊>except:<異常處理語(yǔ)句塊>else:<沒(méi)有引發(fā)異常時(shí)的處理語(yǔ)句塊>執(zhí)行try中的語(yǔ)句塊,如果執(zhí)行正常,則執(zhí)行else中的語(yǔ)句塊;若發(fā)生異常,則執(zhí)行except中的異常處理語(yǔ)句塊,不會(huì)執(zhí)行else中的代碼。try…except…else語(yǔ)句處理異常,比如除數(shù)為0。12345x=eval(input())try:n=1.0/xexcept:print("除數(shù)不能為0")else:print(n)620.5>>>0除數(shù)不能為07try…except…else語(yǔ)句輸入異常,比如要求輸入數(shù)字,卻輸入的是英文字符串。12345try:n=eval(input("請(qǐng)輸入數(shù)字n:"))except:print("輸入錯(cuò)誤,請(qǐng)輸入數(shù)字!")else:y=n**2print(y)6請(qǐng)輸入數(shù)字n:39>>>請(qǐng)輸入數(shù)字n:python輸入錯(cuò)誤,請(qǐng)輸入數(shù)字!7try…except…finally語(yǔ)句基本的語(yǔ)法格式如下:try:<語(yǔ)句塊>except:<異常處理語(yǔ)句塊>finally:<無(wú)論是否發(fā)生異常,都要執(zhí)行的語(yǔ)句塊>執(zhí)行try中的語(yǔ)句塊,如果執(zhí)行正常,則繼續(xù)執(zhí)行finally中的語(yǔ)句塊;若發(fā)生異常,則執(zhí)行except中的異常處理語(yǔ)句塊,然后繼續(xù)執(zhí)行finally中的代碼。try…except…finally語(yǔ)句運(yùn)行異常,比如除數(shù)為0。12345x=eval(input())try:n=1.0/xprint(n)except:print("除數(shù)不能為0")finally:print("這是一則除法運(yùn)算題!")60除數(shù)不能為0這是一則除法運(yùn)算題!>>>20.5這是一則除法運(yùn)算題!78try…except…finally語(yǔ)句輸入異常,比如要求輸入數(shù)字,卻輸入的是英文字符串。12345try:n=eval(input("請(qǐng)輸入數(shù)字n:"))y=n**2print(y)except:print("輸入錯(cuò)誤,請(qǐng)輸入數(shù)字!")finally:print(“這是一道輸入數(shù)字并計(jì)算平方值的題目!")6請(qǐng)輸入數(shù)字n:39這是一道輸入數(shù)字并計(jì)算平方值的題目!>>>請(qǐng)輸入數(shù)字n:python輸入錯(cuò)誤,請(qǐng)輸入數(shù)字!這是一道輸入數(shù)字并計(jì)算平方值的題目!>>>78單元小結(jié)本單元,我們學(xué)習(xí)了程序基本控制結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu);理解了循環(huán)控制語(yǔ)句break和continue的運(yùn)用和區(qū)別。并學(xué)習(xí)了程序異常處理的幾種語(yǔ)法形式。最后,通過(guò)程序?qū)嵗龓椭蠹依斫獬绦蚧究刂平Y(jié)構(gòu)的運(yùn)用。第4章組合數(shù)據(jù)類型序列類型概述列表類型:定義、操作元組類型:定義、操作集合類型:定義、操作知識(shí)要點(diǎn)字符串類型:定義、操作字典類型:定義、操作序列類型概述序列類型概述序列由一組存在先后關(guān)系的元素組成。元素通過(guò)索引訪問(wèn),索引從0開(kāi)始。如:序列名[索引]索引體系有:正向遞增序號(hào)和反向遞減序號(hào)?!癶ello”123(3,4)[3,4,5]3.14-5-4-3-2-101234正向遞增序號(hào)反向遞減序號(hào)列表類型創(chuàng)建列表列表(list)是元素的有序集合,元素放在中括號(hào)[]中,元素類型可以不同賦值方式>>>ls=['Hello',[1,2],"Python"]>>>ls['Hello',[1,2],'Python']>>>ls=list("Hello")>>>ls['H','e','l','l','o']>>>列表內(nèi)建函數(shù)list()讀取、修改列表元素使用索引讀取列表的一個(gè)元素。形式如:通過(guò)賦值運(yùn)算符=,修改列表元素值>>>ls=['Hello',[1,2],"Python"]>>>ls[0]'Hello'>>>ls[-1]'Python'>>>ls[0]='Hi'>>>ls['Hi',[1,2],'Python']>>>列表名[索引]遍歷列表元素使用for循環(huán)對(duì)列表的元素進(jìn)行遍歷,基本使用方式如下:>>>ls=['Hello',[1,2],"Python"]>>>foriinls:

print(i)

Hello[1,2]Pythonfor<循環(huán)變量>in<列表>:<語(yǔ)句塊>遍歷列表元素結(jié)合索引方式對(duì)列表的元素進(jìn)行遍歷:>>>ls=['Hello',[1,2],"Python"]>>>foriinrange(len(ls)): print(ls[i])

Hello[1,2]Pythonfor<循環(huán)變量>inrange(len(<列表>)):<語(yǔ)句塊>列表的切片切片用于獲得列表的一個(gè)片段,切片后的結(jié)果也是列表類型<列表名>[N:M:K]切片獲取列表索引從N到M(不包含M),以K為步長(zhǎng)的元素組成新的列表,切片使用方式:N:開(kāi)始索引,正索引默認(rèn)為0,負(fù)索引默認(rèn)為-len(列表名)M:結(jié)束索引,不包含K:步長(zhǎng),默認(rèn)為1列表的切片切片獲取列表類型從N到M(不包含M)的元素組成新的列表。當(dāng)K存在時(shí),切片獲取列表類型從N到M(不包含M)以K為步長(zhǎng)所對(duì)應(yīng)元素組成的列表。>>>ls=['Hello',[1,2],"Python",99]>>>ls[0:4:2]['Hello','Python']>>>ls[:3]['Hello',[1,2],'Python']>>>ls[:-1]['Hello',[1,2],'Python']>>>ls[:]['Hello',[1,2],'Python',99]>>>ls[::-1][99,'Python',[1,2],'Hello']列表的操作函數(shù)列表通用的操作函數(shù)操作函數(shù)描述len(ls)列表ls的元素個(gè)數(shù)(長(zhǎng)度)min(ls)列表ls中的最小元素,元素類型可比較max(ls)列表ls中的最大元素,元素類型可比較list(x)將x轉(zhuǎn)變成列表類型,x可以是字符串或字典類型sorted(ls)對(duì)列表ls進(jìn)行排序,默認(rèn)升序排序。不會(huì)改變?cè)斜淼捻樞騭um(ls)列表ls中元素求和列表通用的操作函數(shù)>>>ls=[1,3,4,2,5]>>>max(ls)5>>>sum(ls)15>>>sorted(ls)[1,2,3,4,5]>>>sorted(ls,reverse=True)[5,4,3,2,1]>>>ls==['Hello',[1,2],'Python',99]>>>len(ls)4>>>x="Python">>>ls=list(x)>>>ls['P','y','t','h','o','n']>>>列表的操作方法列表的操作方法使用語(yǔ)法形式:<列表名>.<方法名稱>(<方法參數(shù)>)方法描述ls.append(x)在列表ls最后增加一個(gè)元素xls.insert(i,x)在列表ls第i位置插入元素xls.clear()刪除ls中所有元素ls.pop(i)將列表ls中第i項(xiàng)元素取出并刪除該元素ls.remove(x)將列表中出現(xiàn)的第一個(gè)元素x刪除ls.reverse()列表ls中元素反轉(zhuǎn)ls.copy()生成一個(gè)新列表,復(fù)制ls中所有元素ls.index(x)在ls中檢索元素x首次出現(xiàn)的下標(biāo)ls.sort()列表ls中元素排序,默認(rèn)升序reverse=False。ls.count(x)統(tǒng)計(jì)列表ls中元素x出現(xiàn)的次數(shù)列表元素的追加ls.append(x)在列表ls最后增加一個(gè)元素x>>>ls=['Hello',[1,2],'Python',99]>>>ls.append(45)>>>ls['Hello',[1,2],'Python',99,45]>>>ls.append([3,4])>>>ls['Hello',[1,2],'Python',99,45,[3,4]]>>>列表元素的擴(kuò)展ls.extend(x),將列表x元素的值,擴(kuò)展到列表ls中,相當(dāng)于列表的合并>>>ls=['Hello',[1,2],'Python',99]>>>ls.extend([3,4])>>>ls['Hello',[1,2],'Python',99,3,4]>>>列表元素的插入ls.insert(i,x)在列表ls中序號(hào)i位置上增加元素x>>>ls=['Hello',[1,2],'Python',99]>>>ls.insert(1,'Love')>>>ls['Hello','Love',[1,2],'Python',99]>>>列表元素的刪除ls.remove(x)將刪除列表ls中第一個(gè)出現(xiàn)的x元素>>>ls=['Hello','Love',[1,2],'Python',99]>>>ls.remove("Love")>>>ls['Hello',[1,2],'Python',99]>>>列表元素的取出并刪除ls.pop(i)將返回列表ls中第i位元素,并將該元素從列表中刪除;缺省i,則刪除最后一個(gè)元素>>>ls=['Hello',[1,2],'Python',99]>>>ls.pop(1)[1,2]>>>ls['Hello','Python',99]>>>>>>ls=['Hello','Python',99]>>>ls.pop()99>>>ls['Hello','Python']>>>列表的清空l(shuí)s.clear()將列表ls的所有元素刪除,清空列表>>>ls=['Hello',[1,2],'Python',99]>>>ls.clear()>>>ls[]列表元素的反轉(zhuǎn)ls.reverse()將列表ls中元素進(jìn)行逆序反轉(zhuǎn)。>>>ls=['Hello',[1,2],'Python',99]>>>ls.reverse()>>>ls[99,'Python',[1,2],'Hello']列表元素的排序ls.sort()將列表ls中元素進(jìn)行排序,默認(rèn)升序。排序后的列表,覆蓋原列表>>>ls=[1,3,4,2,5]>>>ls.sort()>>>ls[1,2,3,4,5]>>>ls=[1,3,4,2,5]>>>ls.sort(reverse=True)>>>ls[5,4,3,2,1]列表的復(fù)制若只是簡(jiǎn)單的賦值語(yǔ)句,是無(wú)法實(shí)現(xiàn)列表的復(fù)制的>>>ls=['Hello',[1,2],'Python',99]>>>lt=ls>>>lt['Hello',[1,2],'Python',99]>>>ls[0]="hi">>>ls['hi',[1,2],'Python',99]>>>lt['hi',[1,2],'Python',99]>>>['Hello',[1,2],'Python',99]ls引用對(duì)象lt列表的復(fù)制若只是簡(jiǎn)單的賦值語(yǔ)句,是無(wú)法實(shí)現(xiàn)列表的復(fù)制的>>>ls=['Hello',[1,2],'Python',99]>>>lt=ls>>>lt['Hello',[1,2],'Python',99]>>>ls[0]="hi">>>ls['hi',[1,2],'Python',99]>>>lt['hi',[1,2],'Python',99]>>>[‘Hi',[1,2],'Python',99]ls引用對(duì)象lt列表元素的復(fù)制ls.copy()將列表ls中元素進(jìn)行復(fù)制,返回新列表>>>ls=['Hello',[1,2],'Python',99]>>>lt=ls.copy()>>>lt['Hello',[1,2],'Python',99]>>>ls[0]="Hi">>>ls['Hi',[1,2],'Python',99]>>>lt['Hello',[1,2],'Python',99]>>>['Hello',[1,2],'Python',99]ls引用對(duì)象['Hello',[1,2],'Python',99]lt引用新對(duì)象列表元素的復(fù)制ls.copy()將列表ls中元素進(jìn)行復(fù)制,返回新列表>>>ls=['Hello',[1,2],'Python',99]>>>lt=ls.copy()>>>lt['Hello',[1,2],'Python',99]>>>ls[0]="Hi">>>ls['Hi',[1,2],'Python',99]>>>lt['Hello',[1,2],'Python',99]>>>[‘Hi',[1,2],'Python',99]ls引用對(duì)象['Hello',[1,2],'Python',99]lt引用新對(duì)象列表元素的索引ls.index(x)在列表ls中檢索元素x第一次出現(xiàn)的序號(hào)>>>ls=['Hello',[1,2],'Python',99]>>>ls.index(99)3列表元素的統(tǒng)計(jì)ls.count(x)在列表ls中統(tǒng)計(jì)元素x出現(xiàn)的次數(shù)。>>>ls=['Hello',[1,2],99,'Python',99]>>>ls.count(99)2列表的其他操作列表元素的合并可以使用+號(hào),將兩個(gè)列表合并,增加多個(gè)元素。>>>ls=["Hello","Python"]>>>lt=[1,2,3]>>>ls=ls+lt>>>ls['Hello','Python',1,2,3]>>>del保留字,刪除列表內(nèi)容使用Python保留字del對(duì)列表元素或片段進(jìn)行刪除,使用方法如下:del<列表名>[<索引序號(hào)>]或del<列表名>[<索引起始>:<索引結(jié)束>]>>>ls=['Hello',[1,2],'Python',99]>>>dells[0]>>>ls[[1,2],'Python',99]>>>ls=['Hello',[1,2],'Python',99]>>>dells[1:3]>>>ls['Hello',99]>>>列表——

實(shí)例解析列表——實(shí)例解析編程生成一個(gè)1~99數(shù)字的列表,輸入一個(gè)2-9之間的正整數(shù),從列表上刪除這個(gè)數(shù)的倍數(shù)或者數(shù)位上包含這個(gè)數(shù)字的數(shù),并輸出列表。問(wèn)題分析:如何生成1~99數(shù)字的列表?遍歷列表,如何查找指定數(shù)的倍數(shù)或數(shù)位上包含指定數(shù)的數(shù)?如何刪除滿足條件的數(shù)?列表——實(shí)例解析實(shí)現(xiàn)方法:方法1:使用列表的append()方法

ls=[]foriinrange(1,100):ls.append(i)方法2:使用list()內(nèi)建函數(shù)與range()函數(shù)實(shí)現(xiàn)

ls=list(range(1,100))方法3:直接給列表賦值

ls=[iforiinrange(1,100)]更多…如何生成1~99數(shù)字的列表?列表——實(shí)例解析實(shí)現(xiàn)方法:方法1:綜合使用算術(shù)運(yùn)算符foriinls:ifi%eval(x)==0ori//10==eval(x)ori%10==eval(x):方法2:使用字符串的相關(guān)操作foriinls:ifi%eval(x)==0orxinstr(i):

更多…遍歷列表,如何查找指定數(shù)x的倍數(shù)或數(shù)位上包含指定數(shù)x的數(shù)?x=input(“輸入指定的數(shù):”)列表——實(shí)例解析實(shí)現(xiàn)方法:方法1:使用remove()方法ls.remove(i)方法2:借助于新的列表lt,把不符合刪除條件的數(shù)據(jù)暫存到lt中。lt=[]foriinls:ifnot(i%eval(x)==0orxinstr(i)):lt.append(i)ls=lt.copy()更多…如何刪除滿足條件的數(shù)?列表——實(shí)例解析運(yùn)行效果辨析方法1:使用remove()方法,出現(xiàn)數(shù)據(jù)未刪除干凈。方法2:借助于新的列表lt,成功刪除滿足條件的數(shù)據(jù)。列表——實(shí)例解析運(yùn)行效果辨析方法1:使用remove()方法,出現(xiàn)數(shù)據(jù)未刪除干凈。由于remove()刪除數(shù)據(jù)時(shí),后續(xù)數(shù)字會(huì)填充到原位置,導(dǎo)致遍歷遺漏。改進(jìn)方法:逆序遍歷列表。foriinls[::-1]:ifi%eval(x)==0orxinstr(i):ls.remove(i)列表——實(shí)例解析編程生成一個(gè)1~99數(shù)字的列表,輸入一個(gè)2-9之間的正整數(shù),從列表上刪除這個(gè)數(shù)的倍數(shù)或者數(shù)位上包含這個(gè)數(shù)字的數(shù),并輸出列表。較為簡(jiǎn)潔程序代碼:12345ls=list(range(1,100))x=input("輸入指定的數(shù)字:")foriinls[::-1]:ifi%eval(x)==0orxinstr(i):ls.remove(i)print(ls)6列表——

應(yīng)用實(shí)例約瑟夫環(huán)背后的故事約瑟夫環(huán)問(wèn)題41個(gè)人排成一個(gè)圓圈,從第1個(gè)人開(kāi)始報(bào)數(shù),報(bào)數(shù)到3,該人就必須出列,然后再由下一個(gè)重新報(bào)數(shù),依次重復(fù),直到剩下約瑟夫和他的朋友為止。輸出依次出列的人的編號(hào),以及約瑟夫和他的朋友的編號(hào)。約瑟夫環(huán)問(wèn)題問(wèn)題焦點(diǎn):如何實(shí)現(xiàn)滿足條件的元素出列?如何依次考察后續(xù)元素,實(shí)現(xiàn)列表的“環(huán)狀”處理?求解思路:首先生成一個(gè)列表ls,存放41個(gè)人的編號(hào)。約瑟夫環(huán)問(wèn)題循環(huán)處理:用count作為報(bào)數(shù)器,報(bào)到3數(shù)字的,將列表元素值置為0,表示該元素出列。通過(guò)元素下標(biāo)的計(jì)算,實(shí)現(xiàn)列表“環(huán)狀”處理?;蛘撸胕ndex作為元素的索引,采用del操作,讓列表元素出列。通過(guò)元素索引的計(jì)算,實(shí)現(xiàn)列表“環(huán)狀”處理?;蛘?,借助另一個(gè)列表,結(jié)合pop()方法,讓列表元素出列。通過(guò)列表的extend()方法,實(shí)現(xiàn)列表的“隊(duì)列化”處理。約瑟夫環(huán)問(wèn)題解決方案1用count作為報(bào)數(shù)器,報(bào)到3數(shù)字的,將列表元素值置為0,表示該元素出列。ls=list(range(1,42))count=0sum=41i=0print("依次出列的人員編號(hào)是:")whileTrue:ifsum<3:breakifcount<3andls[i]!=0:count=count+1ifcount==3:#元素出列

print(ls[i],end="")ls[i]=0count=0sum=sum-1i=(i+1)%41#列表“環(huán)狀”處理print("\n幸存者編號(hào)是:")foriinls:ifi!=0:print(i,end="")約瑟夫環(huán)問(wèn)題解決方案2或者,用index作為元素的索引,采用del操作,讓列表元素出列。ls=list(range(1,42))index=2print("依次出列的人員編號(hào)是:")foriinrange(39):print(ls[index],end="")dells[index]#元素出列

index=(index+2)%len(ls)#列表“環(huán)狀”處理print("\n幸存者編號(hào)是:")print(ls)約瑟夫環(huán)問(wèn)題解決方案3或者,借助另一個(gè)列表,結(jié)合pop()方法,讓列表元素出列。ls=list(range(1,42))print("依次出列的人員編號(hào)是:")whileTrue:iflen(ls)<3:breakprint(ls[2],end="")ls.pop(2)#元素出列

lt=ls[0:2]ls.pop(0)ls.pop(0)ls.extend(lt)#列表“隊(duì)列化”處理print("\n幸存者編號(hào)是:")print(ls)元組類型創(chuàng)建元組元組(tuple)是Python的重要序列結(jié)構(gòu),所有的元素放在圓括號(hào)()中,但元素不可改變賦值=方式>>>tup1=('Hello',[1,2],'Python',99)>>>tup1('Hello',[1,2],'Python',99)>>>tup3=(3,)>>>tup3(3,)>>>tup2=tuple("hello")>>>tup2('h','e','l','l','o')內(nèi)建函數(shù)tuple()讀取元組使用索引可以讀取元組的元素,中括號(hào)作為索引操作符。形式如:元組名[索引]元組元素值不允許修改>>>tup=('Hello',[1,2],'Python',99)>>>tup[1][1,2]>>>tup[1]=[3,4]Traceback(mostrecentcalllast):File"<pyshell#2>",line1,in<module>tup[1]=[3,4]TypeError:'tuple'objectdoesnotsupportitemassignment>>>元組與列表的區(qū)別對(duì)元組的操作函數(shù)和操作方法,與列表相似。元組有不可修改的特性。元組的主要運(yùn)算有合并、遍歷、求最小值、最大值等操作方法。用于對(duì)列表的排序、添加等方法,不適用于元組。元組是列表數(shù)據(jù)的一種補(bǔ)充。參數(shù)傳遞,可以設(shè)置為元組類型。字符串類型字符串的創(chuàng)建字符串(str)是字符的有序集合,所有的字符放在單引號(hào)’’或雙引號(hào)””或三引號(hào)’’’‘’’中賦值=方式>>>str1="Hello">>>str1'Hello'轉(zhuǎn)義字符python用\開(kāi)頭的轉(zhuǎn)義字符表示特殊字符。>>>print("Hello\nWorld")HelloWorld>>>print("\123")S>>>print("Isay:\"Yes!\"")Isay:"Yes!"字符形式含義\n表示換行\(zhòng)t制表符\b退格\\反斜杠\\’單引號(hào)\”雙引號(hào)\ddd1-3位八進(jìn)制數(shù)代表的字符\xhh1-2位八進(jìn)制數(shù)代表的字符字符串的索引使用索引讀取字符串的一個(gè)元素,中括號(hào)作為索引操作符,形式如:字符串名[索引]>>>str='ProgramPython'>>>str[-1]'n'字符串切片切片獲取字符串從N到M(不包含M)的片段,切片使用方式:>>>str='ProgramPython'>>>str[8:]'Python'>>>str[0::2]'PormPto'>>><字符串>[N:M:K]字符串的連接、重復(fù)通過(guò)運(yùn)算符+,實(shí)現(xiàn)字符串的連接>>>str1="Hello">>>str2='ProgramPython'>>>str=str1+str2>>>str'HelloProgramPython'>>>通過(guò)運(yùn)算符*,實(shí)現(xiàn)字符串的重復(fù)>>>str="Hello">>>str*3'HelloHelloHello'>>>字符串的關(guān)系運(yùn)算、成員運(yùn)算通過(guò)關(guān)系運(yùn)算符,實(shí)現(xiàn)字符串的比較>>>str1="Hello">>>str2="Python">>>str1>str2False>>>str1==str2False>>>str1<str2True通過(guò)成員運(yùn)算符,判斷字符串是否屬于另一個(gè)字符串>>>str1="He">>>str2="Hello">>>str1instr2True字符串處理函數(shù)常用的字符串處理函數(shù)>>>len("IlovePython")13>>>chr(65)'A'>>>ord('a')97函數(shù)描述len(x)計(jì)算字符串x的長(zhǎng)度str(x)返回x對(duì)應(yīng)的字符串形式chr(x)返回Unicode編碼x對(duì)應(yīng)的單字符ord(x)返回單字符x表示的Unicode編碼hex(x)返回整數(shù)x對(duì)應(yīng)的十六進(jìn)制數(shù)oct(x)返回整數(shù)x對(duì)應(yīng)的八進(jìn)制數(shù)>>>hex(100)'0x64'>>>oct(100)'0o144'>>>字符串的操作方法字符串操作方法,使用語(yǔ)法形式是:<字符串>.<方法名稱>(<方法參數(shù)>)方法描述str.find(x[,start[,end]])定位子串x在str中第一次出現(xiàn)的位置str.replace(old,new)用字符串new,代替str中的oldstr.split([sep])以sep為分隔符,把str分隔成一個(gè)列表sep.join(seq)將序列seq中的元素用連接符sep連接起來(lái)str.count(substr[,start[,end]])統(tǒng)計(jì)str中子串substr的個(gè)數(shù)str.lower()將str全部改為小寫str.upper()將str全部改為大寫str.strip(chars)去掉str兩端chars字符子串的查找str.find(substr[,start[,end]])查找子串substr在str中區(qū)間[start,end)上第一次出現(xiàn)的位置;查找不到,返回-1>>>s1="abca">>>s1.find('a')0>>>s1.find('a',1)3>>>子串的統(tǒng)計(jì)str.count(substr[,start[,end]])統(tǒng)計(jì)子串substr在str中區(qū)間[start,end)上出現(xiàn)的次數(shù)>>>s1="abcabc">>>s1.count("bc")2>>>子串的替換str.replace(old,new),用字符串new,代替str中的old>>>s1="helloprogram">>>s1.replace("program","python")'hellopython'字符串的分割str.split([sep]),以sep為分隔符,把str分割成一個(gè)列表>>>s1="blueredyellow">>>s1.split("")['blue','red','yellow']>>>字符串的連接sep.join(seq),將序列seq中的元素用連接符sep連接起來(lái)>>>ls=['blue','red','yellow']>>>",".join(ls)'blue,red,yellow'>>>字符的移除str.strip(chars),將字符串str兩端指定的字符chars移除>>>s1="aaabbcdea">>>s1.strip('a')'bbcde'>>>str.lstrip(chars),str.rstrip(chars),分別將字符串左端或右端指定的字符chars移除實(shí)例解析:統(tǒng)計(jì)單詞個(gè)數(shù)統(tǒng)計(jì)單詞個(gè)數(shù)輸入一行英文文字,統(tǒng)計(jì)其中單詞的個(gè)數(shù)。例如,Ilovepython.Andyou?問(wèn)題分析:為去除雜亂的標(biāo)點(diǎn)符號(hào),如何對(duì)英文字符串進(jìn)行清洗?如何將一個(gè)個(gè)英文單詞,從字符串中分離出來(lái)?如何統(tǒng)計(jì)單詞的個(gè)數(shù)?統(tǒng)計(jì)單詞個(gè)數(shù)例如,s=“Ilovepython.Andyou?”實(shí)現(xiàn)方法:遍歷字符串s,將特殊字符替換為空字符串forchins:ifchin"~!@#$%^&*()_+|}{:\"<>?;',./":s=s.replace(ch,"")如何對(duì)英文字符串進(jìn)行清洗?去除標(biāo)點(diǎn)符號(hào)?統(tǒng)計(jì)單詞個(gè)數(shù)例如,s=“IlovepythonAndyou”實(shí)現(xiàn)方法:采用split()方法,將字符串以空格分割,形成列表

ls=s.split()如何將一個(gè)個(gè)英文單詞,從字符串中分離出來(lái)?統(tǒng)計(jì)單詞個(gè)數(shù)例如,ls=['I','love','Python','And','you']實(shí)現(xiàn)方法:采用len()函數(shù),計(jì)算列表的長(zhǎng)度并輸出

print(len(ls))如何統(tǒng)計(jì)單詞的個(gè)數(shù)?統(tǒng)計(jì)單詞個(gè)數(shù)12345s=input("輸入一行文字:")forchins:ifchin"~!@#$%^&*()_+|}{:\"<>?;',./":s=s.replace(ch,"")s=s.strip()ls=s.split("")print("單詞個(gè)數(shù):",len(ls))67輸入一行文字:Ilovepython.Andyou?單詞個(gè)數(shù):5>>>集合類型集合集合1集合2交集集合類型集合是無(wú)序、不重復(fù)的數(shù)據(jù)組合,用花括號(hào){}表示。集合類型,類似于數(shù)學(xué)中的集合,可以進(jìn)行并、交、差等運(yùn)算。集合的創(chuàng)建賦值=方式使用內(nèi)建函數(shù)set()>>>s1={1,2,3,4,3,6,6}>>>s1{1,2,3,4,6}>>>s2=set("hello")>>>s2{'l','o','h','e'}>>>集合的運(yùn)算集合類型有:并(|)、交(&)、差(-)、補(bǔ)(^)4種運(yùn)算,操作邏輯與數(shù)學(xué)定義相同。操作符的運(yùn)算描述S|T返回一個(gè)新集合,包括集合S和T中所有元素S&T返回一個(gè)新集合,包括同時(shí)在集合S和T中的元素S–T返回一個(gè)新集合,包括在集合S中但不在集合T中的元素S^T返回一個(gè)新集合,包括集合S和T中非共同元素S<=T或S<T判斷S是否是T的子集S>=T或S>T判斷S是否是T的超集集合的運(yùn)算>>>A={1,2,3,4,5}>>>B={4,5,6,7,8}>>>A|B{1,2,3,4,5,6,7,8}>>>A&B{4,5}>>>A-B{1,2,3}>>>A^B{1,2,3,6,7,8}>>>A>=BFalse>>>A<BFalse>>>集合的操作集合常用的操作函數(shù)及方法函數(shù)及方法描述S.add(x)將元素x增加到集合SS.remove(x)刪除集合S中的元素xS.clear()清空S中所有數(shù)據(jù)項(xiàng)len(S)返回集合S中元素的個(gè)數(shù)xinS如果x是S的元素,返回True,否則返回FalsexnotinS如果x不是S的元素,返回True,否則返回FalsedelS刪除集合S集合的操作>>>s={1,2,3,4,5}>>>s.add(6)>>>s{1,2,3,4,5,6}>>>s.remove(6)>>>s{1,2,3,4,5}>>>len(s)5>>>6insFalse>>>6notinsTrue>>>s.clear()>>>sset()>>>dels>>>sTraceback(mostrecentcalllast):File"<pyshell#29>",line1,in<module>sNameError:name's'isnotdefined集合1集合2交集利用集合去除重復(fù)元素將列表內(nèi)容去除重復(fù)元素。例如ls=[‘p','p',‘t',‘t',123]問(wèn)題分析:第一步:將其他類型轉(zhuǎn)換為集合類型。第二步:將集合類型轉(zhuǎn)換為原類型。>>>ls=['p','p',‘t',‘t',123]>>>s=set(ls)>>>ls=list(s)>>>ls[123,'p',‘t']>>>字典類型字典類型字典是Python語(yǔ)言中唯一的映射類型。映射類型是“鍵-值”數(shù)據(jù)項(xiàng)的組合,每個(gè)元素是一個(gè)鍵值對(duì),表示為(key,value)。鍵值對(duì)的基本思想是將“值”信息關(guān)聯(lián)一個(gè)“鍵”信息,進(jìn)而通過(guò)鍵信息查找對(duì)應(yīng)值信息,這個(gè)過(guò)程叫映射。定義字典時(shí),鍵和值用:分隔。鍵不能重復(fù),值可以重復(fù)。字典的定義字典使用大括號(hào){}建立,每個(gè)元素是一個(gè)鍵值對(duì),格式如下:

{<鍵1>:<值1>,<鍵2>:<值2>,…,<鍵n>:<值n>}每個(gè)鍵值對(duì)用冒號(hào):分隔,每對(duì)之間用逗號(hào)分隔。{'TOM':95,'JERRY':87,'LUCY':64}字典的創(chuàng)建賦值=方式使用使用內(nèi)建函數(shù)dict()>>>d1={‘TOM’:95,‘JERRY’:87,‘LUCY’:64}#賦值方式創(chuàng)建>>>d1{'LUCY':64,'TOM':95,'JERRY':87}>>>d2=dict(ROSE=90,JACK=76)#關(guān)鍵字形式創(chuàng)建>>>d2{'JACK':76,'ROSE':90}>>>d3=dict([('LUCY',64),('TOM',95),('JERRY',87)])>>>d3#元組列表的方式創(chuàng)建{'JERRY':87,'TOM':95,'LUCY':64}>>>訪問(wèn)字典元素的值要訪問(wèn)字典中某個(gè)元素的值,可以通過(guò)鍵來(lái)索引字典中鍵值對(duì)的索引模式如下,采用中括號(hào)格式:>>>d1={'TOM':95,'JERRY':87,'LUCY':64}>>>d1['JERRY']87>>><值>=<字典變量>[<鍵>]字典的元素的修改和增加利用索引和賦值(=)配合,可以對(duì)字典進(jìn)行元素的修改或增加。>>>d1={'TOM':95,'JERRY':87,'LUCY':64}>>>d1[‘TOM’]=99#字典元素的修改>>>d1{'LUCY':64,'JERRY':87,'TOM':99}>>>d1[‘ROSE’]=78#字典元素的增加>>>d1{'ROSE':78,'LUCY':64,'JERRY':87,'TOM':99}>>>字典類型的操作字典的操作方法字典類型操作方法,使用語(yǔ)法形式是:<字典變量>.<方法名稱>(<方法參數(shù)>)操作方法描述d.keys()返回字典所有鍵的列表d.values()返回字典所有值的列表d.items()返回字典所有鍵值對(duì)的列表d.get(key,default)若鍵存在,返回字典中鍵對(duì)應(yīng)的值;否則返回default值d.pop(key,default)若鍵存在,則刪除并返回相應(yīng)值;否則返回default值d.popitem()隨機(jī)從字典中刪除一個(gè)鍵值對(duì),以元組(key,value)形式返回d.clear()刪除字典所有的鍵值對(duì)返回字典的鍵、值、鍵值對(duì)列表d.keys()、d.values()、d.items()這三個(gè)方法分別返回字典中的所有鍵、值、鍵值對(duì)列表>>>d1={'TOM':95,'JERRY':87,'LUCY':64}>>>d1.keys()dict_keys(['LUCY','JERRY','TOM'])>>>d1.values()dict_values([64,87,95])>>>d1.items()dict_items([('LUCY',64),('JERRY',87),('TOM',95)])>>>以鍵查值d.get(key,default)根據(jù)鍵信息查找并返回值信息。如果key存在則返回相應(yīng)值,否則返回默認(rèn)值>>>d1={'TOM':95,'JERRY':87,'LUCY':64}>>>d1.get('JERRY'','不存在')87>>>d1.get('ROSE','不存在')'不存在'>>>查找并刪除指定元素d.pop(key,default)根據(jù)指定的鍵,返回相應(yīng)值的信息,并予以刪除;否則返回default值>>>d1={'TOM':95,'JERRY':87,'LUCY':64}>>>d1.pop('JERRY','不存在'

溫馨提示

  • 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)論