版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
選擇性必修1《數(shù)據(jù)與數(shù)據(jù)結(jié)構(gòu)》制作者:鄒修鴻第三章字符串、隊(duì)列和棧3.1字符串的概念、特性及基本操作情境導(dǎo)入垃圾郵件圖片信息詐騙圖片知識講解1.字符串的概念字符串是由零個(gè)或多個(gè)字符組成的有限序列。字符來自某些特定字符集:
ASCII(美國信息交換標(biāo)準(zhǔn)碼)字符集(大小寫英文字母、數(shù)字、標(biāo)點(diǎn)符號、控制字符等共128個(gè)字符)一個(gè)字符串中可以包含多種字符集字符。字符串長度:包含的字符個(gè)數(shù)。字符串一般用雙引號或單引號加以界定。s=“HelloWorld”print(“字符串的長度為:”,len(s))>>>字符串的長度為:11#包含11個(gè)字符(不包括雙引號),其中空格也是一個(gè)字符知識講解1.字符串的概念空串:空格串:子串:不包含任何字符,長度為0由空格組成的字符串,長度為空格的長度任意個(gè)連續(xù)的字符序列知識講解-2.字符串的特性(1)有限序列性字符串是一種線性表結(jié)構(gòu),數(shù)據(jù)元素個(gè)數(shù)有限(0個(gè)或多個(gè)字符)除第一個(gè)和最后一個(gè)元素外,其他元素都有一個(gè)唯一的前驅(qū)和后繼,可以用元素在字符串中的相對位置作為標(biāo)號來訪問每個(gè)元素。在用Python實(shí)現(xiàn)的字符串中,有正索引標(biāo)號和負(fù)索引標(biāo)號,如表所示?!咀⒁狻吭L問索引運(yùn)算符:“[]”正索引:第一個(gè)位置為0負(fù)索引:從末端開始編號,第一個(gè)位置為“-1”知識講解-2.字符串的特性(2)字符串的可比性【比較規(guī)則】(若字符全來自ASCII字符集)按ASCII碼值進(jìn)行比較,從左至右,依次比較兩個(gè)字符串中對應(yīng)位置上字符的ASCII碼值。“word”>“work”為True。(ord(“k”)>ord(“d”))“9”>“10”為True。(ord(“9”)>ord(“1”))對于含有非ASCII碼字符集的字符串,需要根椐編碼的方式講行比較。*討論方向:存儲內(nèi)容、存儲方式、內(nèi)容大小比較等問題與討論數(shù)組和字符串有那些相同點(diǎn)和不同點(diǎn)?
比較方向數(shù)據(jù)結(jié)構(gòu)存儲內(nèi)容存儲方式內(nèi)容大小比較訪問元素存儲空間不同不同不同相同數(shù)組數(shù)據(jù)元素類型相同一維/二維索引項(xiàng)對應(yīng)位置索引(正負(fù))-數(shù)組名固定不變字符串來自特定字符集(ASCII、GB2312等)享元模式(共同享有同一個(gè)對象)從左至右,對應(yīng)位置(一般標(biāo)準(zhǔn)為ASCII碼)索引(正負(fù))有限序列字符串的基本操作求子串字符串的連接常用函數(shù)和方法子串判斷知識講解1.子串判斷:in函數(shù)作用
格式:“字符串a(chǎn)in字符串S”方法1:方法2(無括號):逐個(gè)枚舉:in函數(shù)作用
in函數(shù)作用2:逐個(gè)枚舉2.求子串(切片)格式:字符串[位置i:位置j]s[i:j]表示取字符串S的索引下標(biāo)i至j-1范圍內(nèi)的子串3.字符串的連接格式:“字符串S1+字符串S2”字符串常用函數(shù)和方法函數(shù)和方法功能實(shí)例len(s)字符串長度x="Hello!"print(len(x))>>>6x.find(y)在x中找y出現(xiàn)的首字母下標(biāo)(找不到,則輸出-1)x="Hello!"y="llo"print(x.find(y))>>>2x.split(str=“”,num=string,count(str))以str分隔符切片x(若指定num,則分割成num個(gè))。切片結(jié)果存儲在列表中。x="IlikePython"list=x.split()print(list)>>>[‘I’,‘like’,‘Python’]#列表形式x.replace(old,new[,max])將old替換成new,替換不能超過x次x="isisisis"print(x.replace("is","was"))print(x.replace("is","was",3))>>>waswaswaswas
waswaswasisx.upper()小寫字母大寫字母x.upper()xlower()大寫字母小寫字母x.lower()返回自主學(xué)習(xí):回文字串例1回文串
上聯(lián):客上天然居,居然天上客
下聯(lián):人過大佛寺,寺佛大過人僧游云隱寺,寺隱云游僧鄰居愛我我愛居鄰,魚傍水活水傍魚?;匚奶攸c(diǎn):字符串左右對稱判斷方法:
找到中間位置;取出左邊,存入left;取出右邊right;
若left==right,則為回文串判斷方法:
找到中間位置;取出左邊,存入left;取出右邊right;
若left==right,則為回文串程序測試結(jié)果s=input("請輸入一個(gè)字符串:")length=len(s)#串的長度mid=length//2left=s[0:mid]#取左子串temp=s[-mid:]#取右子串right=""foriinrange(len(temp)):
right=right+temp[len(temp)-i-1]ifleft==right:print("Yes")else:print("No")>>>%Run'!!!!!.py'請輸入一個(gè)字符串:abcbaYes>>>%Run'!!!!!.py'請輸入一個(gè)字符串:abbaYes>>>%Run'!!!!!.py'請輸入一個(gè)字符串:心清可品茶,茶品可清心Yes>>>%Run'!!!!!.py'請輸入一個(gè)字符串:abcabNo方法1:字符串反轉(zhuǎn)[::-1]程序測試結(jié)果s=input("請輸入一個(gè)字符串:")s1=s[::-1]ifs==s1:print("Yes")else:print("No")>>>%Run'!!!!!.py'請輸入一個(gè)字符串:abcbaYes>>>%Run'!!!!!.py'請輸入一個(gè)字符串:abcabNo方法2:當(dāng)一個(gè)字符串中既有大小寫字母,又有數(shù)字等其他ASCII碼字符集字符時(shí),如何統(tǒng)計(jì)大寫字母、小寫字母以及數(shù)字字符的個(gè)數(shù)?問題與討論s=input("請輸入一個(gè)字符串:")num=0;min=1;MAX=0;other=0s1="";s2="";s3="";s4=""forcins:if"0"<=c<="9":num+=1s1=s1+celif"a"<=c<="z":min+=1s2=s2+celif"A"<=c<="Z":MAX+=1s3=s3+celse:other+=1s4=s4+cprint("數(shù)字有%d個(gè):%s,小寫字母有%d個(gè):%s,大寫字母有%d個(gè):%s,其他字符有%d個(gè):%s"%(num,s1,min,s2,MAX,s3,other,s4)例2機(jī)動車違章識別系統(tǒng)
日期
限行尾號車牌周一周二周三周四周五本地車站牌(某B)1和92和83和74和65和0外地車牌限行限行限行限行限行【注:】限行時(shí)間:7:00-9:00、16:00-18:30(工作日)車牌號碼車主姓名日期星期某E.X10AB李三2017/1/65某B.CD6AF何一2017/1/91某B.AB09X王立2017/1/101某B.2XAWE楊子2017/1/43某C.XXXX7陳順2017/1/54某B.XXXX8邵東2017/1/76表3.1.3部分車輛通行信息表只具有下列條件之一,即可判斷某車違章:
外地車牌且行駛時(shí)間在周一到周五;本地車牌且車牌數(shù)字尾號與限行數(shù)字尾號匹配。設(shè)計(jì)算法:
通過索引、字符串比較等,確定車輛城市代碼。
如果是本地車牌,則從右往左查找第一個(gè)數(shù)字(該車牌尾數(shù))
根據(jù)限行規(guī)定,與“星期”數(shù)據(jù)比較。讀程回答問題:1.以哪種方式存儲車牌?2.如何提取車牌中地域?qū)傩缘淖帜福?.用字符串相關(guān)操作,如何提取數(shù)字尾號?4.用數(shù)字尾號如何判斷是否違章?
程序程序測試結(jié)果importcsv#數(shù)據(jù)讀入f=open("車輛號碼.csv","r")f_csv=csv.reader(f)k=0forrowinf_csv:#row為行k=k+1ifk==1:#輸出文件中的第一行信息print(row[0],"",row[1])continuecar=row[0]#???name=row[1]#???w=row[3]#???week="12345"pos=0forletterincar:#找車牌所在地ifletter>="A"andletter<="Z":ifletter=="B":pos=1#???breakifpos==0andw!=6andw!=7:#外地車牌print(car,"",name)ifpos==1:i=len(car)whilei>=0:i=i-1ch=car[i]ifch>="0"andch<="9":breaknum=int(ch)ifi<0:continueelifnum==0:t=week[4]elifnum<=5:t=week[int(ch)-1]else:t=week[9-int(ch)]ift==w:print(car,"",name)f.close()車牌號碼車主姓名某E.X10AB李三某B.ABO9X王立某C.XXXX7陳順importcsv#數(shù)據(jù)讀入f=open("車輛號碼.csv","r")f_csv=csv.reader(f)k=0forrowinf_csv:k=k+1ifk==1:#輸出文件中的第一行信息print(row[0],"",row[1])continuecar=row[0]#???name=row[1]#???w=row[3]#???week="12345"
pos=0forletterincar:#找車牌所在地ifletter>="A"andletter<="Z":ifletter=="B":pos=1#???breakifpos==0andw!=6andw!=7:#外地車牌print(car,"",name)ifpos==1:i=len(car)whilei>=0:i=i-1ch=car[i]ifch>="0"andch<="9":breaknum=int(ch)ifi<0:continueelifnum==0:t=week[4]elifnum<=5:t=week[int(ch)-1]else:t=week[9-int(ch)]ift==w:print(car,"",name)isdigit()isnumeric()isdecimal()的區(qū)別python內(nèi)置函數(shù)(數(shù)字)判斷拓展鏈接正則表達(dá)式正則表達(dá)式是用一些特定的字符組成的一個(gè)“規(guī)則字符串"。它可以實(shí)現(xiàn)檢查一個(gè)字符串中是否含有某種子串、將匹配的子串替換或者從字符串中取出符合某個(gè)條件的子串等操作。例如,輸入一串字符后,查找是否出現(xiàn)過12位數(shù)的電話號碼(格式:xXXX-XXXXXXXKX,“x”代表一個(gè)數(shù)字)。不使用正則表達(dá)式的Python程序如下:deffindphone(text):foriinrange(0,len(text)):flag=Trueiftext[i].isdecimal()andi<len(text)-12:forjinrange(i+1,i+4):ifnottext[j].isdecimal():#判斷是否為數(shù)字flag=Falseiftext[i+4]!="-":flag=Falseforjinrange(i+5,i+13):ifnottext[j].isdecimal():flag=Falseifflag:returntext[i:i+13]else:returnFalsex=input("請輸入一串字符:")result=findphone(x)ifresult==False:print("沒有找到電話號碼")else:print("電話號碼為:",result)不使用正則表達(dá)式?。?!拓展鏈接正則表達(dá)式使用正則表達(dá)式!?。〕绦蜻\(yùn)行結(jié)果:請輸入一串字符:myphonenumberis話號碼為用正則表達(dá)式時(shí),可用“\d\d\d\d-\d\d\d\d\d\d\d\d”的規(guī)則字符串匹配12位電話號碼其中“d”表示一個(gè)0到9的數(shù)字字符。Python中,所有的正則表達(dá)式的函數(shù)都在re模塊中,使用前,需要導(dǎo)入re模塊。Python中的正則表達(dá)式通過字符與字符類、量詞、組與捕獲、斷言與標(biāo)記、條件匹配、標(biāo)志等規(guī)則,以及re模塊中的各種方法與函數(shù),能實(shí)現(xiàn)文本中的模式匹配、搜索功能、替換、分割等強(qiáng)大的功能。re模塊拓展:re模塊拓展
實(shí)踐與體驗(yàn)行程編碼行程編碼(RunLengthEncoding,簡稱RLE)是一種利用空間冗余度壓縮圖像的方法,它的主要技術(shù)是在數(shù)據(jù)圖像的編碼中尋找連續(xù)的重復(fù)數(shù)值,并用出現(xiàn)次數(shù)和顏色編號取代這些連續(xù)的值。對于計(jì)算機(jī)生成的圖形或二值圖像,行程編碼能有效減少存儲空間。例如,對于某二值圖像的顏色編號,利用行程編碼技術(shù)可以壓縮為:908130實(shí)踐內(nèi)容:利用輔助工具“顏色編號.py”,編寫“行程編碼”程序,得到計(jì)算機(jī)生成的圖形或二值圖像的“行程編碼”。實(shí)踐步驟:1.獲取某圖形或二值圖像的顏色編號。①利用“顏色編號.py”提取某圖形或二值圖像的顏色編號,存入“圖像編碼.txt”文件中。②利用Python的讀取文件功能,從“圖像編碼.txt”文件中獲取顏色編號,用字符串存儲。2.設(shè)計(jì)行程編碼的算法。從左往右掃描顏色編號,統(tǒng)計(jì)所有相同的顏色段,用顏色的個(gè)數(shù)和顏色值存儲,得到行程編碼,并寫入“行程編碼.txt”文件中。3.根據(jù)算法分析,編寫程序。結(jié)果呈現(xiàn):?思考與練習(xí)天干地支,簡稱為干支,源自中國遠(yuǎn)古時(shí)代對天象的觀測。甲、乙、丙、丁、戊、已、庚、辛、壬、癸稱為十天干,子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥稱為十二地支。十天干與十二地支按“陽干配陽支,陰干配陰支”兩兩相配,從甲子到癸亥,形成了六十個(gè)基本單位,古人以此作為年的序號,每六十年為一輪,叫“干支紀(jì)年法”。從網(wǎng)上查找“干支紀(jì)年法”的相關(guān)資料,輸入公元紀(jì)年,輸出對應(yīng)的天干地支。python格式化輸出(使用占位符):【選修1作業(yè)本】P13%s表示字符串輸出,%d表示整數(shù)輸出,%f表示浮點(diǎn)數(shù)輸出示例:>>>name="Lucy">>>age=19>>>print('%s的年齡是%d'%(name,age
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 職業(yè)培訓(xùn)學(xué)員管理制度
- 招聘校外培訓(xùn)管理制度
- 培訓(xùn)中心內(nèi)控管理制度
- 小學(xué)消防安全培訓(xùn)制度
- 培訓(xùn)學(xué)校工資增長制度
- 水電站二次系統(tǒng)優(yōu)化方案
- 獸醫(yī)站人員培訓(xùn)制度
- 三防崗位責(zé)任人培訓(xùn)制度
- 培訓(xùn)機(jī)房管理制度
- 眼科特檢培訓(xùn)管理制度
- 妊娠合并膽汁淤積綜合征
- 河南省安陽市滑縣2024-2025學(xué)年高二數(shù)學(xué)上學(xué)期期末考試試題文
- 新疆維吾爾自治區(qū)普通高校學(xué)生轉(zhuǎn)學(xué)申請(備案)表
- 內(nèi)鏡中心年終總結(jié)
- 客房服務(wù)員:高級客房服務(wù)員考試資料
- 園林苗木容器育苗技術(shù)
- GB/T 6974.5-2023起重機(jī)術(shù)語第5部分:橋式和門式起重機(jī)
- 陜西省2023-2024學(xué)年高一上學(xué)期新高考解讀及選科簡單指導(dǎo)(家長版)課件
- 兒科學(xué)熱性驚厥課件
- 《高職應(yīng)用數(shù)學(xué)》(教案)
- 漢堡規(guī)則中英文
評論
0/150
提交評論