版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Python編程案例教程第1頁,共35頁。本章導(dǎo)讀本章引入了一個新的概念:數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)是通過某種方式如對元素進行編號組織在一起的數(shù)據(jù)元素的集合,這些數(shù)據(jù)元素可以是數(shù)字或者字符,甚至可以是其他數(shù)據(jù)結(jié)構(gòu)。在Python中,最根本的數(shù)據(jù)結(jié)構(gòu)是序列sequence,常用的序列結(jié)構(gòu)有字符串、列表和元組。本章將介紹字符串的使用,列表和元組將在第5章介紹。本章首先介紹通用序列的操作,然后介紹字符串格式化操作和常用的字符串方法,最后通過兩個典型案例的分析和實現(xiàn),讓讀者進一步掌握字符串的使用方法。第4章 字符串的使用第2頁,共35頁。學(xué)習(xí)目標掌握通用序列的操作方法掌握字符串格式化操作方法掌握常用的字符串方
2、法掌握針對字符串的程序設(shè)計方法第3頁,共35頁。 通用序列操作4.1字符串格式化操作4.2字符串方法4.3典型案例4.4第4頁,共35頁。4.1 通用序列操作4.1.2 分片4.1.1 索引4.1.3 序列相加4.1.4 乘法4.1.5 長度、最小值和最大值第5頁,共35頁。簡單地說,序列是一塊用來存放多個值的連續(xù)內(nèi)存空間。Python中常用的序列結(jié)構(gòu)有字符串、列表、元組等。所有序列類型都可以進行某些特定的操作。這些操作包括索引分片加乘計算序列長度、找出最大元素和最小元素第6頁,共35頁。序列中的所有元素都可以通過索引下標來獲取從左往右,第一個元素的索引為0,第二個為1索引還可以取負值,從右往
3、左,最后一個元素的索引為-1,倒數(shù)第二個為-2例如:創(chuàng)立一個字符串:str=Python字符Python索引(正)012345索引(負)-6-5-4-3-2-1假設(shè)需要獲取字符串變量str中的第1個字符“P:str0str-6Python0第7頁,共35頁。slicestart:end:step分片與索引類似,都可以獲取序列中的元素,區(qū)別是索引只能獲取單個元素,而分片可以獲取一定范圍內(nèi)的元素。分片通過冒號隔開的兩個索引來實現(xiàn),其語法是:例:編寫程序,要求輸入年齡,判斷該學(xué)生是否成年大于等于18歲,如未成年,計算還需要幾年能夠成年。程序運行效果start表示起始索引,省略時,表示從序列中的第一個
4、元素開始end表示結(jié)束索引(不包含結(jié)束位本身),省略時,表示到序列的最后一個元素結(jié)束step表示步長(默認為1,不能為0)第8頁,共35頁。例:編寫程序,要求輸入三角形的三條邊,計算三角形的面積并輸出。例如:創(chuàng)立序列:strs =abcdefg分片方式描 述結(jié) 果strs1:獲取strs中從索引1開始到最后一個的所有元素bcdefgstrs:3獲取strs中從索引0到索引3之間所有元素abcstrs1:3獲取strs中從索引1到索引3之間所有元素bcstrs:-1獲取strs中從索引0開始到最后一個元素之間的所有元素abcdefstrs-3:-1獲取strs中從索引-3開始到最后一個元素之間的
5、所有元素efstrs-3:獲取strs中最后三個元素efgstrs:獲取strs中所有元素abcdefgstrs0:7:1獲取序列strs中所有元素abcdefgstrs0:7:2 strs:2將步長設(shè)置為2,獲取strs從開始到結(jié)束的元素acegstrs7:0:-1獲取strs中從索引7到索引0之間所有元素gfedcb第9頁,共35頁。可以使用加法運算符對序列進行連接操作:例如: Hello, + World#字符串序列連接Hello,World 1,2,3 + 4,5,6#列表序列連接1, 2, 3, 4, 5, 6 提示只有兩種相同類型的序列才能進行連接操作,例如,字符串和列表是無法連接
6、在一起的。第10頁,共35頁。使用數(shù)字n乘以一個序列會生成新的序列,在新的序列中,原來的序列將被重復(fù)n次。 hello * 3hellohellohello例如:例:編寫程序,要求利用序列的乘法運算輸出如以下圖所示的文字格式。strs=I love Python!“#定義字符串并賦值print( *10+-*15)#利用序列的乘法運算輸出10個空格和15個“-print( *30)#輸出30個空格print( *10+strs)#輸出10個空格和字符串print( *30)#輸出30個空格print( *10+-*15)#輸出10個空格和15個“-第11頁,共35頁。序列有3個非常好用的內(nèi)建函
7、數(shù):len()、min()和max()函數(shù),其參數(shù)都為序列名。len()函數(shù)返回序列中所包含元素的個數(shù)min()函數(shù)返回序列中最小的元素max()函數(shù)返回序列中最大的元素例:輸入一個字符串,求字符串的長度、字符串中的最大字符和最小字符。strs=input(請輸入一個字符串:)str_len=len(strs)str_max=max(strs)str_min=min(strs)print(該字符串長度為:,str_len)print(該字符串中最大字符為:,str_max)print(該字符串中最小字符為:,str_min) 提示min()和max()函數(shù)的參數(shù)并不一定是序列,也可以是兩個或兩
8、個以上的數(shù)字,例如: max(0,1,2,3)程序運行效果第12頁,共35頁。4.2 字符串格式化操作4.2.2 使用format()方法進行格式化4.2.1 使用符號“%進行格式化第13頁,共35頁。%標志0輸出最小寬度.精度格式字符%變量其一般形式為:%0m.n格式字符%變量指定“+時,輸出右對齊;指定“-時,輸出左對齊。用十進制整數(shù)m來表示輸出的最少位數(shù)。假設(shè)實際位數(shù)多于定義的寬度,那么按實際位數(shù)輸出;假設(shè)實際位數(shù)少于定義的寬度,那么補空格或0如在m前有數(shù)字0,那么補0。如果輸出數(shù)字,那么表示小數(shù)的位數(shù);如果輸出的是字符,那么表示輸出字符的個數(shù);假設(shè)實際位數(shù)大于所定義的精度數(shù),那么截去超
9、過的局部。格式字符用來表示輸出數(shù)據(jù)的類型。格式字符功能說明格式字符功能說明%s字符串(采用str()顯示)%o八進制整數(shù)%r字符串(采用repr()顯示)%x十六進制整數(shù)%c單個字符%f,%F浮點數(shù)%字符%e,%E指數(shù)(基底為e或E)%d,%i十進制整數(shù)%g,%G以%f或%e中較短的輸出寬度輸出浮點數(shù)第14頁,共35頁。a=15#定義變量a并賦值b=12345678.1234567#定義變量b并賦值strs=I love Python!#定義字符串strs并賦值print(a=%05d%a)#使用m控制輸出位數(shù),空位補0print(b=%8.3f%b)#輸出b,用控制輸出的長度和小數(shù)點位數(shù)pr
10、int(%17s%strs)#使用m控制輸出字符串長度print(%17r%strs)#使用%r輸出字符串print(%-17.5s%strs)#使用進行左對齊、限制字符串長度和字符位數(shù)例:使用符號“%進行格式化。程序運行效果第15頁,共35頁。模板字符串.format(逗號分隔的參數(shù))例如:你好,1,你這個月的工資是0元!.format(8500,張三)使用format()方法也可以格式化字符串,其根本格式為:模板字符串是由一系列槽用大括號表示組成,用來控制字符串中嵌入值出現(xiàn)的位置,其根本思想是將format()方法中逗號分隔的參數(shù)按照序號替換到模板字符串的槽中序號從0開始編號。如果大括號中
11、沒有序號,那么按照出現(xiàn)順序替換例如:你好,你這個月的工資是元!.format(8500,張三)第16頁,共35頁。format()方法中模板字符串的槽除了包括參數(shù)序號外,還可以包括格式控制信息,此時槽的內(nèi)部樣式為:參數(shù)序號:格式控制標記其中格式控制標記用于控制參數(shù)顯示時的格式:填充對齊寬度,.精度格式字符用于填充的單個字符 右對齊 居中對齊輸出寬度數(shù)字的千位分隔符浮點數(shù)小數(shù)部分精度或字符串最大輸出長度整數(shù)類型d,o,x,X,b,c浮點數(shù)類型e,E,f,%第17頁,共35頁。例:使用format()方法格式化字符串。a=15#定義變量a并賦值b=12345678.1234567#定義變量b并賦值
12、strs=I love Python!#定義字符串strs并賦值print(a=0:05.format(a)#輸出5位數(shù)字空位補0print(b=0:,.3f.format(b)#輸出b,用千分位分隔并保存3位小數(shù)print(0:*30.format(strs)#居中且使用*填充程序運行效果第18頁,共35頁。4.3 字符串方法第19頁,共35頁。1find()方法find()方法用于在一個較長的字符串中查找子串。如果找到子串,返回子串所在位置的最左端索引;如果沒有找到那么返回-1。str.find(sub,start,end)str表示被查找字符串;sub表示查找的子串;start表示開始索
13、引,省略時默認為0;end表示結(jié)束索引,省略時默認為字符串的長度。第20頁,共35頁。例:查找子串“l(fā)ike是否在字符串new_str中。new_str = I like learning Python#創(chuàng)立字符串a(chǎn)=new_str.find(like)#在new_str中查找子串“l(fā)ikeb=new_str.find(like,5,15)#在new_str的索引為515的字符中查找子串print(a)#輸出aprint(b)#輸出b程序運行效果 提示用于查找子串的另一個常用方法是index()方法,該方法與find()方法的用法根本一致,區(qū)別在于當查找的子串不存在時,拋出異常。第21頁,共3
14、5頁。2count()方法count()方法用于統(tǒng)計字符串里某個子串出現(xiàn)的次數(shù)。該函數(shù)返回子串在字符串中出現(xiàn)的次數(shù)。str.count(sub,start,end)str表示被查找字符串;sub表示要統(tǒng)計的子串;start表示開始索引,省略時默認為0;end表示結(jié)束索引,省略時默認為字符串的長度。第22頁,共35頁。例:創(chuàng)立字符串new_str=“This is a Python book!,使用count()方法找出其中“is 出現(xiàn)的次數(shù)。new_str=This is a Python book!#創(chuàng)立字符串This is a Python book!a=new_str.count(is)
15、#統(tǒng)計new_str中“is出現(xiàn)的次數(shù)b=new_str.count(is,1,6)#設(shè)置開始和結(jié)束索引,統(tǒng)計“is出現(xiàn)的次數(shù)print(a)#輸出aprint(b)#輸出b程序運行效果第23頁,共35頁。3split()方法split()方法以指定字符為分隔符,從字符串左端開始將其分隔成多個字符串,并返回包含分隔結(jié)果的列表。str.split(delimiter,num)str表示被分隔的字符串;delimiter表示分隔符,省略時默認為空字符,包括空格、換行n、制表符t等;num表示分割次數(shù),省略時默認全局部割。第24頁,共35頁。 new_str = This is an example
16、 of cutting#創(chuàng)立字符串 new_str.split()#以空字符為分割符將字符串全局部割This, is, an, example, of, cutting new_str.split( ,3)#以空字符為分割符將字符串分割3次This, is, an, example of cutting例如:創(chuàng)立字符串new_str = “This is an example of cutting,使用split()進行分割。第25頁,共35頁。4join()方法join()方法用于將序列中的元素以指定的字符連接,生成一個新的字符串。str.join(sequence)str表示連接符,可以為
17、空;sequence表示要連接的元素序列。例如:創(chuàng)立字符串new_str = “This is a python book!,使用join()方法將new_str中的字符用“-連接。 new_str = This is a python book!“#創(chuàng)立字符串 This is a python book! -.join(new_str)#用“-連接new_str中的字符T-h-i-s- -i-s- -a- -p-y-t-h-o-n- -b-o-o-k-!第26頁,共35頁。例:將字符串“This is a python book!“中的多余空格刪除,即如果有連續(xù)空格只保存一個。new_str
18、 = This is a python book!#創(chuàng)立字符串s_str=new_str.split()#以空字符為分割符,將new_str全局部割print(s_str)#輸出分割后結(jié)果j_str= .join(s_str)#用空格連接s_str中的字符print(j_str)#輸出連接后的字符串程序運行效果第27頁,共35頁。5replace()方法replace()方法用于將字符串中的舊字符串替換成新字符串。str.replace(old,new,max)str表示被查找字符串;old表示將被替換的子串;new表示新字符串,用于替換old子串;max是可選參數(shù),表示替換不超過max次,省
19、略時默認替換所有。例如:創(chuàng)立字符串“new_str = Monday Tuesday Wednesday Thursday Friday Saturday Sunday“,使用replace()方法替換其中的day為DAY。new_str = Monday Tuesday Wednesday Thursday Friday Saturday Sundaynew_str.replace(day,DAY)#將new_str中的day替換為DAYMonDAY TuesDAY WednesDAY ThursDAY FriDAY SaturDAY SunDAYnew_str.replace(day,DA
20、Y,3)#將new_str中的day替換為DAY,限制為3次MonDAY TuesDAY WednesDAY Thursday Friday Saturday Sunday第28頁,共35頁。6strip()方法strip()方法用于刪除字符串兩端連續(xù)的空白字符或指定字符。str.strip(chars)str表示字符串;chars表示移除字符串兩端指定的字符,省略時默認為空格。例如:創(chuàng)立字符串new_str = “110This is an example 0001,使用strip()方法去掉字符串中的“0和“1。new_str = 110This is an example 0001#創(chuàng)立
21、字符串new_str.strip(1)#移除new_str兩側(cè)的10This is an example 000new_str.strip(01)#移除new_str兩側(cè)的0和1This is an example 第29頁,共35頁。7lower()和upper()方法lower()方法用于轉(zhuǎn)換字符串中所有大寫字符為小寫;upper()方法那么用于轉(zhuǎn)換字符串中所有小寫字符為大寫。str.lower()str.upper()例如:創(chuàng)立字符串“new_str=This is an EXAMPLE“,使用lower()方法將其轉(zhuǎn)換為小寫,再使用upper()方法將其轉(zhuǎn)換為大寫。new_str =
22、This is an EXAMPLE#創(chuàng)立字符串new_str.lower()#將new_str中的大寫字符轉(zhuǎn)為小寫this is an examplenew_str.upper()#將new_str中的小寫字符轉(zhuǎn)為大寫THIS IS AN EXAMPLE第30頁,共35頁。8isalnum()方法isalnum()方法用于檢測字符串是否由字母和數(shù)字,或兩種的一種組成。如果是就返回True;否那么返回False。str.isalnum()例如:創(chuàng)立字符串new_str = “2021example,使用isalnum()方法判斷new_str中是否由字母或數(shù)字組成。 new_str = 202
23、1example#創(chuàng)立字符串 new_str.isalnum()#判斷new_str中是否只有數(shù)字或字母True第31頁,共35頁。4.4 典型案例第32頁,共35頁。例:編寫程序,模擬輸出簡單的非刷新文本進度條。要求按照任務(wù)執(zhí)行百分比將整個任務(wù)劃分為100個單位,每執(zhí)行10%輸出一次進度條,每行輸出包含進度百分比、代表已完成局部*和未完成局部.的兩種字符,以及一個跟隨完成度前進的小箭頭,風格如下:%10 *-.import time#導(dǎo)入time模塊scale=10#變量scale用于表示輸出進度條的精度print(-執(zhí)行開始-)#輸出for i in range(scale+1):#循環(huán)變量從0到10 a=*i #用“*表示已完成的局部 b=.*(scale-i)#用“.表示未完成的局部 c=(i/scale)*
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療園區(qū)頂管施工服務(wù)合同
- 漁市場防火門施工合同
- 農(nóng)村建筑維修規(guī)劃設(shè)計合同
- 跨國公司外派員工聘用合同范例
- 高空作業(yè)供應(yīng)租賃合同
- 藝術(shù)品交易市場合同
- 體育館活動空調(diào)租賃協(xié)議
- 民航空運代理合同范例
- 音響銷售合同范例
- 紡織原料銷售合同三篇
- 2024-2025學(xué)年高二上學(xué)期期末復(fù)習(xí)【第五章 一元函數(shù)的導(dǎo)數(shù)及其應(yīng)用】十一大題型歸納(拔尖篇)(含答案)
- 湖北省咸寧市通城縣2022-2023學(xué)年八年級上學(xué)期期末質(zhì)量檢測數(shù)學(xué)試卷(含解析)
- 【MOOC】法理學(xué)-西南政法大學(xué) 中國大學(xué)慕課MOOC答案
- 2024年新湘教版七年級上冊數(shù)學(xué)教學(xué)課件 第4章 圖形的認識 章末復(fù)習(xí)
- 2024年民用爆炸物品運輸合同
- 2024-2030年中國離合器制造行業(yè)運行動態(tài)及投資發(fā)展前景預(yù)測報告
- 【MOOC】大學(xué)生創(chuàng)新創(chuàng)業(yè)教育-云南大學(xué) 中國大學(xué)慕課MOOC答案
- 《個體防護裝備安全管理規(guī)范AQ 6111-2023》知識培訓(xùn)
- 客戶管理系統(tǒng)技術(shù)服務(wù)合同
- 北京交通大學(xué)《成本會計》2023-2024學(xué)年第一學(xué)期期末試卷
- 治療皮膚病藥膏市場需求與消費特點分析
評論
0/150
提交評論