Python程序設(shè)計(jì)現(xiàn)代方法(第2版) 課件 第3、4章 字符串、流程控制_第1頁(yè)
Python程序設(shè)計(jì)現(xiàn)代方法(第2版) 課件 第3、4章 字符串、流程控制_第2頁(yè)
Python程序設(shè)計(jì)現(xiàn)代方法(第2版) 課件 第3、4章 字符串、流程控制_第3頁(yè)
Python程序設(shè)計(jì)現(xiàn)代方法(第2版) 課件 第3、4章 字符串、流程控制_第4頁(yè)
Python程序設(shè)計(jì)現(xiàn)代方法(第2版) 課件 第3、4章 字符串、流程控制_第5頁(yè)
已閱讀5頁(yè),還剩106頁(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)介

第3章字符串《Python程序設(shè)計(jì)現(xiàn)代方法(第2版)》學(xué)習(xí)目標(biāo)/Target

掌握字符串的定義方式,能夠準(zhǔn)確定義字符串

掌握字符串的索引和切片,能夠通過(guò)索引和切片獲取字符串的子串

掌握字符格式化方式,能夠通過(guò)%、format()和f-string格式化字符串學(xué)習(xí)目標(biāo)/Target

掌握字符串的處理函數(shù),能夠通過(guò)len()函數(shù)和ord函數(shù)實(shí)現(xiàn)特定功能

掌握字符串的處理方法,能夠根據(jù)需要選擇合適的方法處理字符串

熟悉字符串的運(yùn)算符,能夠通過(guò)+和*運(yùn)算符實(shí)現(xiàn)字符串的拼接和復(fù)制章節(jié)概述/Summary日常生活中經(jīng)常會(huì)看見(jiàn)一些文本類型的數(shù)據(jù),比如電子郵件、評(píng)論、個(gè)人資料等,這些數(shù)據(jù)的內(nèi)容形式比較復(fù)雜,包括字母、數(shù)字、標(biāo)點(diǎn)符號(hào)、特殊符號(hào)、漢字等,程序中使用字符串表示這些信息。本章將針對(duì)字符串的內(nèi)容進(jìn)行詳細(xì)講解。目錄/Contents01字符串的定義字符串的索引和切片字符串格式化實(shí)例:制作高鐵名片020304目錄/Contents05字符串運(yùn)算符字符串處理函數(shù)字符串處理方法0607實(shí)例:文本檢測(cè)程序08字符串的定義3.13.1字符串的定義字符串是一個(gè)有序的字符集合,它里面的字符默認(rèn)采用Unicode編碼,可以是字母、數(shù)字、標(biāo)點(diǎn)、特殊符號(hào)、中文等字符。需要說(shuō)明的是,Python中沒(méi)有字符類型,即便一個(gè)字符也屬于字符串。Python支持使用單引號(hào)、雙引號(hào)和三引號(hào)定義字符串,三引號(hào)可以是三單引號(hào)和三雙引號(hào),其中使用單引號(hào)、雙引號(hào)定義的字符串只能單行顯示,三引號(hào)定義的字符串支持多行顯示?!彩乱岳硐霝橐?,實(shí)行為果’

#使用單引號(hào)定義字符串“凡事以理想為因,實(shí)行為果”

#使用雙引號(hào)定義字符串

'''凡事以理想為因,實(shí)行為果'''

#使用三單引號(hào)定義字符串"""凡事以理想為因,

實(shí)行為果“”“

#使用三雙引號(hào)定義字符串3.1字符串的定義使用單引號(hào)或雙引號(hào)定義字符串時(shí),字符串的內(nèi)容不能包含單引號(hào)或雙引號(hào)。例如,英文語(yǔ)句Let‘slearnPython中有一個(gè)單引號(hào),如果此時(shí)仍然使用單引號(hào)定義包含該英文語(yǔ)句的字符串,則會(huì)出現(xiàn)錯(cuò)誤信息。

3.1字符串的定義'Let'slearnPython''Let'slearnPython'^SyntaxError:unterminatedstringliteral(detectedatline131)運(yùn)行代碼,結(jié)果如下所示:為了避免程序中出現(xiàn)這類問(wèn)題,可以使用雙引號(hào)或三引號(hào)定義字符串。例如,將上述示例中定義字符串時(shí)使用的單引號(hào)分別修改為雙引號(hào)或三引號(hào),改后的代碼如下:3.1字符串的定義"Let'slearnPython""""Let'slearnPython""“'''Let'slearnPython'''同理,若字符串包裹的內(nèi)容中包含雙引號(hào),則可以使用單引號(hào)或三引號(hào)定義字符串

以確保Python解釋器能夠按預(yù)期對(duì)引號(hào)進(jìn)行配對(duì)。除此之外,還可以利用反斜杠“\”對(duì)引號(hào)進(jìn)行轉(zhuǎn)義,使Python解釋器將轉(zhuǎn)義后的引號(hào)作為普通字符對(duì)待。示例如下:3.1字符串的定義words='Let\'slearnPython'#使用反斜桿轉(zhuǎn)義字符串里面的單引號(hào)print(words)運(yùn)行代碼,結(jié)果如下所示。Let'slearnPython有些情況下,反斜杠也會(huì)作為字符串的一部分,比如表示W(wǎng)indows系統(tǒng)下文件路徑的字符串“D:\PythonProject\Chapter01\next.py”中,由于\n特殊性,它會(huì)使\n連接的后面語(yǔ)句出現(xiàn)換行,示例如下:3.1字符串的定義運(yùn)行代碼,結(jié)果如下所示。words='D:\PythonProject\Chapter01\next.py'print(words)D:\PythonProject\Chapter01ext.py3.1字符串的定義1盡管字符串的定義方式有很多,但是同一文件中應(yīng)統(tǒng)一使用方式,避免多種方式混合使用。2如果在字符串中包含某種形式的引號(hào),那么應(yīng)優(yōu)先使用其他形式的引號(hào)定義字符串,而非使用轉(zhuǎn)義字符。3如果三引號(hào)定義的字符串沒(méi)有賦值給變量,那么它會(huì)被視為多行注釋。多學(xué)一招:轉(zhuǎn)義字符一些普通字符與反斜杠組合后將失去原有意義,產(chǎn)生新的含義。類似這樣的與反斜杠組合而成的、具有特殊意義的一串字符就是轉(zhuǎn)義字符。轉(zhuǎn)義字符通常用于表示一些無(wú)法直接顯示的字符,例如制表符、回車符等。轉(zhuǎn)義字符功能說(shuō)明\b退格\n換行符\v垂直制表符\t水平制表符\r回車符\'單引號(hào)字符\"雙引號(hào)字符字符串的索引與切片3.23.2字符串的索引和切片Python中字符串可以包含多個(gè)字符,這些字符按一定順序排列,每個(gè)字符所在的位置有著固定的編號(hào),以便用戶通過(guò)該編號(hào)訪問(wèn)它們,這些位置編號(hào)被稱為索引或者下標(biāo)。按照不同的方向,索引分為正向索引和逆向索引。正向索引的值從0開(kāi)始,逆向索引的值從-1開(kāi)始。3.2字符串的索引和切片通過(guò)索引可以其對(duì)應(yīng)的單個(gè)字符,使用方式為“字符串[索引]”。words='精誠(chéng)所至金石為開(kāi)'char_one=words[1]#獲取索引為1的字符“誠(chéng)”char_two=words[-7]#獲取索引為-7的字符“誠(chéng)”3.2字符串的索引和切片通過(guò)切片從字符串中截取子串,切片的語(yǔ)法格式如下。字符串[起始索引:結(jié)束索引:步長(zhǎng)]起始索引:表示截取字符的起始位置,取值可以是正向索引或逆向索引。結(jié)束索引:表示截取字符的結(jié)束位置,取值可以為正向索引或逆向索引。步長(zhǎng):表示每隔指定數(shù)量的字符截取一次字符串,取值可以是正負(fù)整數(shù),默認(rèn)值為1。若步長(zhǎng)為正整數(shù),則會(huì)按照從左到右的順序取值;若步長(zhǎng)為負(fù)整數(shù),則會(huì)按照從右到左的順序取值。需要注意的是,切片截取的子串包含起始索引對(duì)應(yīng)的字符,但不包含結(jié)束索引對(duì)應(yīng)字符。3.2字符串的索引和切片切片的示例如下:print(words[:5])#獲取從索引0到索引5之前的子串print(words[5:])#獲取從索引5到末尾的子串print(words[4:6])#獲取從索引4到索引6之前的子串print(words[::2])#獲取從索引0到末尾、步長(zhǎng)為2的子串print(words[-4:-2])#獲取從索引-4到索引-2之前的子串print(words[-4:6])#獲取從索引-4到索引6之前的子串精誠(chéng)所至金石為開(kāi)金石精所金為金石金石運(yùn)行結(jié)果3.2字符串的索引和切片值得一提的是,Python中的字符串與其他編程語(yǔ)言不同,它是不可變的,一旦定義完成后不能被修改。如果嘗試給某個(gè)索引對(duì)應(yīng)的字符重新賦值時(shí),則會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤信息。words[3]=','TypeError:'str'objectdoesnotsupportitemassignment運(yùn)行代碼,結(jié)果如下:字符串格式3.33.3.1使用格式符%格式化字符串在使用格式符對(duì)字符串格式化時(shí),Python會(huì)使用一個(gè)帶有格式符的字符串作為模板,這個(gè)格式符用于為真實(shí)值預(yù)留位置,并說(shuō)明真實(shí)值應(yīng)該呈現(xiàn)的格式。

"我叫%s"%"小明"使用一個(gè)元組將多個(gè)真實(shí)值傳遞給字符串模板,元組中的每個(gè)值對(duì)應(yīng)著一個(gè)格式符。

"我叫%s,今年%d歲了"%("小明",18)Python還支持更多類型的格式符,每種格式符適用于不同的數(shù)據(jù)類型。格式符功能說(shuō)明%c格式化單個(gè)字符及其ASCII碼%s格式化字符串%i或%d格式化有符號(hào)的十進(jìn)制整數(shù)%o格式化有符號(hào)的八進(jìn)制整數(shù)%x格式化有符號(hào)的十六進(jìn)制整數(shù)%e格式化科學(xué)計(jì)數(shù)法表示的浮點(diǎn)數(shù),以e為底數(shù)%E格式化科學(xué)計(jì)數(shù)法表示的浮點(diǎn)數(shù),以E為底數(shù)%f格式化十進(jìn)制表示的浮點(diǎn)數(shù)3.3.1使用格式符%格式化字符串當(dāng)使用多個(gè)格式符對(duì)字符串進(jìn)行格式化時(shí),還可以通過(guò)字典傳值,這時(shí)需要先以“(name)”形式對(duì)變量進(jìn)行命名,每個(gè)命名對(duì)應(yīng)字典的一個(gè)鍵,示例如下:format_string="我叫%(name)s,今年%(age)d歲了"%{"name":"小明","age":18}print(format_string)運(yùn)行代碼,結(jié)果如下所示。我叫小明,今年18歲了3.3.1使用格式符%格式化字符串3.3.2使用format()方法格式化字符串使用format()方法格式化字符串的語(yǔ)法格式如下:模板字符串.format(值0,值1,...)format_string="我叫{},今年18歲了".format("小明")print(format_string)我叫小明,今年18歲了示例代碼:運(yùn)行結(jié)果:3.3.2使用format()方法格式化字符串如果模板字符串中有多個(gè)符號(hào){},并且{}內(nèi)沒(méi)有指定任何值的序號(hào),則默認(rèn){}內(nèi)的序號(hào)與值的順序是互相對(duì)應(yīng)的,序號(hào)從0開(kāi)始遞增,此時(shí)會(huì)按照從左到右的順序依次用值替換。3.3.2使用format()方法格式化字符串如果模板字符串的{}內(nèi)明確指定了值的序號(hào),則需要按照序號(hào)使用相應(yīng)的值進(jìn)行替換。

3.3.2使用format()方法格式化字符串在format()方法中,模板字符串的{}內(nèi)除了參數(shù)序號(hào)以外,還可以加入其他控制信息,以便能定制更豐富的格式。{}內(nèi)加入控制信息的語(yǔ)法格式如下:{<值序號(hào)>:<格式控制標(biāo)記>}格式控制標(biāo)記包括<填充>、<對(duì)齊>、<寬度>、<,>、<.精度>、<類型>這六個(gè)字段,這些字段都是可選的,可以組合使用。3.3.2使用format()方法格式化字符串(1)<填充>字段是一個(gè)字符,默認(rèn)使用空格填充。(2)<對(duì)齊>字段分別使用<、>和^三個(gè)符號(hào)表示左對(duì)齊、右對(duì)齊和居中對(duì)齊。(3)<寬度>字段用于指定值轉(zhuǎn)換字符串后字符串的寬度,如果設(shè)定的寬度值比字符串的實(shí)際長(zhǎng)度小,則使用字符串的實(shí)際長(zhǎng)度,否則就使用設(shè)定的寬度值。words="design"print("{:10}".format(words))#左對(duì)齊,填充空格至寬度為10print("{:>10}".format(words))#右對(duì)齊,填充空格至寬度為10print("{:@^10}".format(words))#居中對(duì)齊,填充@至寬度為10print("{:@^1}".format(words))#寬度小于words的實(shí)際長(zhǎng)度designdesign@@design@@design運(yùn)行結(jié)果3.3.2使用format()方法格式化字符串(4)<,>字段用于顯示數(shù)字類型的千位分隔符。

words=31415926print("{0:,}".format(words))#顯示千位分隔符運(yùn)行代碼,結(jié)果如下所示。31,415,9263.3.2使用format()方法格式化字符串(5)<.精度>字段以小數(shù)點(diǎn)開(kāi)頭,適用于浮點(diǎn)數(shù)和字符串,如果值是浮點(diǎn)數(shù),則精度表示小數(shù)部分輸出的有效位數(shù);如果值是字符串,精度表示輸出字符串的最大長(zhǎng)度。

運(yùn)行代碼,結(jié)果如下所示。words=3.1415926print("{:.5f}".format(words))#輸出浮點(diǎn)數(shù),保留5位小數(shù)words="design"print("{:.5}".format(words))#字符串的長(zhǎng)度為53.14159desig3.3.2使用format()方法格式化字符串(6)<類型>字段用于控制整型和浮點(diǎn)型的值的格式規(guī)則。c:輸出整型對(duì)應(yīng)的Unicode字符;d:輸出整型的十進(jìn)制形式;o:輸出整型的八進(jìn)制形式;x:輸出整型的十六進(jìn)制形式;e:輸出浮點(diǎn)數(shù)對(duì)應(yīng)的小寫字母e的指數(shù)形式;E:輸出浮點(diǎn)數(shù)對(duì)應(yīng)的大寫字母E的指數(shù)形式;f:輸出浮點(diǎn)數(shù)的標(biāo)準(zhǔn)形式;%:輸出浮點(diǎn)數(shù)的百分比形式。針對(duì)整型的輸出格式針對(duì)浮點(diǎn)型的輸出格式3.3.2使用format()方法格式化字符串(6)<類型>字段用于控制整型和浮點(diǎn)型的值的格式規(guī)則。整型和浮點(diǎn)型輸出格式的示例如下:print("{:c}".format(97))

#輸出97對(duì)應(yīng)的Unicode字符print("{:x}".format(11))#輸出十六進(jìn)制形式的整數(shù)print("{:E}".format(1568.736))#輸出科學(xué)計(jì)數(shù)法形式的浮點(diǎn)數(shù)print("{:%}".format(0.80))#輸出浮點(diǎn)數(shù)的百分比形式ab1.568736E+0380.000000%運(yùn)行結(jié)果3.3.3使用f-string格式化字符串f-string提供了一種更為簡(jiǎn)潔的格式化字符串的方式,它在形式上以f或F引領(lǐng)字符串,在字符串中使用“{變量名}”標(biāo)明被替換的真實(shí)值所在位置。f"{變量名}"或F"{變量名}"使用f-string格式化字符串,示例如下:name="小明"age=18format_string=f'我叫{name},今年{age}歲了'print(format_string)我叫小明,今年18歲了代碼運(yùn)行結(jié)果:實(shí)例:制作高鐵名片3.43.4實(shí)例:制作高鐵名片近10年來(lái),我國(guó)高鐵秉持“核心技術(shù)必須要把握在自己手里”的發(fā)展理念,實(shí)現(xiàn)了由“追趕者”到“領(lǐng)跑者”的角色轉(zhuǎn)換,在新時(shí)代跑出了中國(guó)速度,更創(chuàng)造了中國(guó)奇跡,成為代表中國(guó)形象的“亮麗名片”。3.4實(shí)例:制作高鐵名片2008年8月,我國(guó)第一條350公里/小時(shí)的高速鐵路—京津城際鐵路開(kāi)通運(yùn)營(yíng),此后高鐵在我國(guó)得到了飛速發(fā)展。2017年6月,以“復(fù)興號(hào)”命名的標(biāo)準(zhǔn)動(dòng)車組成功研制生產(chǎn)并上線運(yùn)營(yíng),標(biāo)志著我國(guó)鐵路技術(shù)裝備達(dá)到了領(lǐng)跑世界的先進(jìn)水平。2022年復(fù)興號(hào)智能動(dòng)車組實(shí)現(xiàn)時(shí)速350公里自動(dòng)駕駛。3.4實(shí)例:制作高鐵名片盡管我國(guó)高鐵起步較晚,但經(jīng)過(guò)幾代鐵路人接續(xù)奮斗,實(shí)現(xiàn)了從無(wú)到有、從追趕到并跑、再到領(lǐng)跑的歷史性變化,成功建設(shè)了世界上規(guī)模最大、現(xiàn)代化水平最高的高速鐵路網(wǎng)。放眼整個(gè)大地,我國(guó)高鐵跨越大江大河,穿越崇山峻嶺,通達(dá)四面八方,從林海雪原到江南水鄉(xiāng),從大漠戈壁到東海之濱,改寫著整個(gè)我國(guó)社會(huì)的時(shí)空格局,也提供著助力世界發(fā)展的中國(guó)智慧。3.4實(shí)例:制作高鐵名片本實(shí)例要求用戶輸入的型號(hào)、外號(hào)、動(dòng)力來(lái)源、運(yùn)營(yíng)速度、投用時(shí)間這些基本信息,每個(gè)信息之間用“|”進(jìn)行分隔,套用統(tǒng)一格式的模板制作成一張高鐵名片。高鐵名片模板的格式如下:3.4實(shí)例:制作高鐵名片本實(shí)例的實(shí)現(xiàn)思路分成以下兩步:(1)通過(guò)input()函數(shù)獲取復(fù)興號(hào)電力動(dòng)車組的基本信息,并使用變量保存基本信息;(2)通過(guò)f-string將占位符標(biāo)注到指定的位置。字符串運(yùn)算符3.53.5字符串運(yùn)算符Python中有些運(yùn)算符適用于字符串,以便對(duì)字符串執(zhí)行一些簡(jiǎn)單的操作。運(yùn)算符功能說(shuō)明+連接運(yùn)算符兩側(cè)的字符串,返回一個(gè)連接后的新字符串*復(fù)制指定次數(shù)的字符串,返回一個(gè)復(fù)制后的新字符串>,<,==,!=,>=,<=按照ASCII值的大小比較字符串里面的字符in,notin檢測(cè)字符串中是否存在或不存在某個(gè)子串3.5字符串運(yùn)算符下面是字符串操作符的部分示例,具體如下:result_one='寶劍鋒從磨礪出'+','+'梅花香自苦寒來(lái)’print(result_one)result_two='加油!'*3print(result_two)result_thr='Python'>='python'print(result_thr)result_fou='梅花'in'梅花香自苦寒來(lái)’print(result_fou)寶劍鋒從磨礪出,梅花香自苦寒來(lái)加油!加油!加油!FalseTrue運(yùn)行結(jié)果如下:3.5字符串運(yùn)算符值得一提的是,雖然通過(guò)“+”運(yùn)算符可以連接多個(gè)字符串,但是效率非常低,這是因?yàn)镻ython中字符串屬于不可變類型,在不斷連接字符串的時(shí)候會(huì)生成新字符串,每生成一個(gè)新字符串就需要申請(qǐng)一次內(nèi)存空間,內(nèi)存操作過(guò)于頻繁。因此Python不建議使用“+”運(yùn)算符連接字符串,后續(xù)3.7節(jié)會(huì)講到一些其他的字符串連接方法。字符串處理函數(shù)3.63.6字符串處理函數(shù)Python針對(duì)字符串提供了一些內(nèi)置函數(shù),使用這些內(nèi)置函數(shù)可以便捷地對(duì)字符串進(jìn)行處理。函數(shù)功能說(shuō)明len()返回字符串的長(zhǎng)度,或返回其他組合數(shù)據(jù)類型的元素個(gè)數(shù)ord()返回單字符對(duì)應(yīng)的ASCII值3.6字符串處理函數(shù)words_one="敏而好學(xué),不恥下問(wèn)"word_length=len(words_one)print(word_length)words_two="人生苦短,我用Python"word_length=len(words_two)#計(jì)算字符串的長(zhǎng)度print(word_length)word='a'print(ord(word))#返回單字符的ASCII值使用函數(shù)處理字符串的示例代碼如下:字符串處理方法3.73.7.1字符串大小寫轉(zhuǎn)換的方法函數(shù)功能說(shuō)明upper()將字符串中的字母全部轉(zhuǎn)換為大寫字母,返回轉(zhuǎn)換后的新字符串lower()將字符串中的字母全部轉(zhuǎn)換為小寫字母,返回轉(zhuǎn)換后的新字符串capitalize()將字符串中的首字母轉(zhuǎn)換為大寫形式,其余字母轉(zhuǎn)換為小寫形式,返回轉(zhuǎn)換后的新字符串title()將字符串中每個(gè)單詞的首字母轉(zhuǎn)換為大寫形式,其余字母轉(zhuǎn)換為小寫形式,返回轉(zhuǎn)換后的新字符串在一些特定情況下會(huì)對(duì)英文單詞的大小寫形式有著特殊的要求。例如,專有名詞的簡(jiǎn)稱必須是全字母大寫,如CBA、CCTV等。Python提供了一些用于大小寫轉(zhuǎn)換的方法,具體如下:

3.7.1字符串大小寫轉(zhuǎn)換的方法字符串的大小寫轉(zhuǎn)換方法的使用示例:string='interestIStheBESTteacher'upper_str=string.upper()#所有字母轉(zhuǎn)換為大寫字母lower_str=string.lower()#所有字母轉(zhuǎn)換為小寫字母cap_str=string.capitalize()#首字母轉(zhuǎn)換為大寫字母#每個(gè)單詞的首字母轉(zhuǎn)換為大寫字母,其余字母轉(zhuǎn)換成小寫字母title_str=string.title()print(f'全部轉(zhuǎn)換為大寫字母:{upper_str}')print(f'全部轉(zhuǎn)換為小寫字母:{lower_str}')print(f'首字母轉(zhuǎn)換為大寫字母:{cap_str}')print(f'單詞首字母轉(zhuǎn)換為大寫字母:{title_str}')3.7.2查找與替換字符串的方法1.

find()方法find()方法用于查找字符串中是否包含子串,既可以在整個(gè)字符串中查找,也可以在指定范圍內(nèi)查找。若找到子串則返回子串首次出現(xiàn)的索引,否則返回-1。find(sub,start=None,end=None)words='與其臨淵羨魚(yú),不如退而結(jié)網(wǎng)。'result_one=words.find('魚(yú)’)print(result_one)result_two=words.find('魚(yú)',6)print(result_two)示例代碼:3.7.2查找與替換字符串的方法2.

replace()方法replace()方法用于將當(dāng)前字符串中的指定子串替換成新的子串,可以指定替代次數(shù),并返回替換后的新字符串。replace(old,new,count=-1)string='AllthingsAredifficultbeforetheyAreeasy.'new_string=string.replace('Are','are')#不指定替換次數(shù)print(new_string)new_string=string.replace('Are','are',1)#指定替換次數(shù)print(new_string)示例代碼:3.7.3分割與拼接字符串的方法split()方法用于根據(jù)指定分隔符對(duì)字符串進(jìn)行分割,分割后返回一個(gè)列表,該列表中保存了多個(gè)字符串。split(sep=None,maxsplit=-1)參數(shù)sep表示分隔符,默認(rèn)值為空格,也可被設(shè)置為其他字符,例如空格、換行(\n)、制表符(\t)等;參數(shù)maxsplit表示分割的次數(shù),默認(rèn)值是-1,代表不限制分割次數(shù)。1.

split()方法3.7.3分割與拼接字符串的方法分割字符串的示例如下:string='AllthingsAredifficultbeforetheyAreeasy.'new_str=string.split()#根據(jù)空格分割字符串print(new_str)new_str=string.split(sep='A')#根據(jù)字符'A'分割字符串print(new_str)#根據(jù)字符'A'分割字符串,分割兩次new_str=string.split(sep='A',maxsplit=2)print(new_str)1.

split()方法3.7.3分割與拼接字符串的方法join()方法用于將某個(gè)字符串作為連接符,通過(guò)連接符拼接可迭代對(duì)象的每個(gè)元素,并返回一個(gè)新的字符串??傻鷮?duì)象可以是字符串、列表、元組、集合、字典。join(iterable)2.

join()方法3.7.3分割與拼接字符串的方法symbol='**'string='Python'new_str=symbol.join(string)#通過(guò)symbol拼接字符串中的每個(gè)字符print(new_str)#通過(guò)symbol拼接列表中的每個(gè)字符串new_str=symbol.join(['Let','us','learn','Python'])print(new_str)拼接字符串的示例如下:2.

join()方法實(shí)例:文本檢測(cè)程序3.83.8實(shí)例:文本檢測(cè)程序在互聯(lián)網(wǎng)發(fā)展的初期,違法違規(guī)亂象危害了網(wǎng)絡(luò)環(huán)境,侵犯了人民的正當(dāng)權(quán)益。為了保障網(wǎng)絡(luò)安全,維護(hù)國(guó)家和人民的利益,大多數(shù)網(wǎng)絡(luò)平臺(tái)會(huì)采取不良詞語(yǔ)屏蔽的策略來(lái)營(yíng)造一個(gè)風(fēng)清氣正的網(wǎng)絡(luò)環(huán)境。我們都是形成網(wǎng)絡(luò)語(yǔ)言生態(tài)的一份子,保持網(wǎng)絡(luò)環(huán)境的健康純潔,需要我們每個(gè)人從自身做起。本實(shí)例要求實(shí)現(xiàn)文本檢測(cè)程序,該程序只要檢測(cè)到文本中出現(xiàn)“最優(yōu)秀”,就替換成“較優(yōu)秀”。文本內(nèi)容如下:我們擁有多年的品牌戰(zhàn)略規(guī)劃及標(biāo)志設(shè)計(jì)、商標(biāo)注冊(cè)經(jīng)驗(yàn);專業(yè)提供公司標(biāo)志設(shè)計(jì)與商標(biāo)注冊(cè)一條龍服務(wù)。我們擁有最優(yōu)秀且具有遠(yuǎn)見(jiàn)卓識(shí)的設(shè)計(jì)師,使我們的策略分析嚴(yán)謹(jǐn),設(shè)計(jì)充滿創(chuàng)意。我們有信心為您締造最優(yōu)秀的品牌形象設(shè)計(jì)服務(wù),將您的企業(yè)包裝得更富價(jià)值。3.8實(shí)例:文本檢測(cè)程序2.7實(shí)例:毛遂自薦根據(jù)前面的描述可知,我們需要先準(zhǔn)備一段文本,之后在這段文本中查找詞語(yǔ)“最優(yōu)秀”,將“最優(yōu)秀”替換為“較優(yōu)秀”,具體實(shí)現(xiàn)思路可以分成以下三步:(1)定義一個(gè)變量,用于保存文本的內(nèi)容。(2)通過(guò)find()方法從整個(gè)文本中查找詞語(yǔ)“最優(yōu)秀”。(3)通過(guò)replace()方法將該文本中的詞語(yǔ)“最優(yōu)秀”替換成“較優(yōu)秀”。本章小結(jié)本章主要介紹了字符串相關(guān)的知識(shí),包括字符串的定義、字符串的索引與切片、字符串格式化、字符串運(yùn)算符、字符串處理函數(shù)和方法。希望通過(guò)本章的學(xué)習(xí),讀者可以掌握字符串的基本使用,能夠靈活運(yùn)用字符串開(kāi)發(fā)程序。本章小結(jié)第4章流程控制《Python程序設(shè)計(jì)現(xiàn)代方法(第2版)》學(xué)習(xí)目標(biāo)/Target

了解程序流程圖的基本元素,能夠說(shuō)出每種元素的功能

熟悉程序的基本結(jié)構(gòu),能夠歸納每個(gè)結(jié)構(gòu)的執(zhí)行流程

掌握分支結(jié)構(gòu),能夠通過(guò)不同語(yǔ)句實(shí)現(xiàn)不同的分支結(jié)構(gòu)

掌握循環(huán)結(jié)構(gòu),能夠通過(guò)不同語(yǔ)句實(shí)現(xiàn)不同的循環(huán)結(jié)構(gòu)章節(jié)概述/Summary程序中語(yǔ)句默認(rèn)的執(zhí)行順序是自上而下。流程控制是指在程序運(yùn)行時(shí),通過(guò)一些特定的指令更改程序中語(yǔ)句的執(zhí)行順序,使其產(chǎn)生跳躍、回溯等現(xiàn)象。本章將對(duì)流程控制的相關(guān)知識(shí)進(jìn)行講解。目錄/Contents01程序表示方法分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)實(shí)例:猜數(shù)字020304程序表示方法4.14.1.1程序流程圖程序流程圖是一種用圖形、流程線和文字說(shuō)明描述程序基本操作和控制流程的方法,它是程序分析和過(guò)程描述的最基本方式。程序流程圖有7種基本元素,每種元素使用特定符號(hào)表示。

4.1.1程序流程圖一個(gè)基本的程序流程圖,示例如下:

4.1.2程序的基本結(jié)構(gòu)順序結(jié)構(gòu)是最簡(jiǎn)單的一種基本結(jié)構(gòu)。

1.順序結(jié)構(gòu)4.1.2程序的基本結(jié)構(gòu)分支結(jié)構(gòu)又稱選擇結(jié)構(gòu),此種結(jié)構(gòu)必定包含判斷條件,是一種根據(jù)判斷條件的結(jié)果選擇不同執(zhí)行路徑的結(jié)構(gòu)。根據(jù)分支路徑的數(shù)量,分支結(jié)構(gòu)分為單分支結(jié)構(gòu)、雙分支結(jié)構(gòu)和多分支結(jié)構(gòu)。

2.分支結(jié)構(gòu)雙分支結(jié)構(gòu)單分支結(jié)構(gòu)4.1.2程序的基本結(jié)構(gòu)循環(huán)結(jié)構(gòu)又稱重復(fù)結(jié)構(gòu),此結(jié)構(gòu)同樣包含判斷條件,是一種根據(jù)判斷條件的結(jié)果選擇是否重復(fù)執(zhí)行代碼段的結(jié)構(gòu)。根據(jù)判斷條件的觸發(fā)方式,循環(huán)結(jié)構(gòu)可分為條件循環(huán)和遍歷循環(huán)。

3.循環(huán)結(jié)構(gòu)分支結(jié)構(gòu)4.24.2.1判斷條件判斷條件可以是能產(chǎn)生布爾值的任意元素,包括數(shù)據(jù)、變量,以及由變量或數(shù)據(jù)與運(yùn)算符按照一定規(guī)則連接而成的表達(dá)式,若它的布爾值為True,表示判斷條件成立;若布爾值為False,表示判斷條件不成立。Python中比較簡(jiǎn)單的判斷條件是數(shù)據(jù)或保存了數(shù)據(jù)的變量,任何數(shù)據(jù)都有布爾值,其中None、任意形式為0的數(shù)據(jù)、任意空組合數(shù)據(jù)類型的數(shù)據(jù),它們的布爾值均為False,其他數(shù)據(jù)的布爾值為True。4.2.1判斷條件print(bool(80))#查看整數(shù)80的布爾值print(bool(0.0))#查看浮點(diǎn)數(shù)0.0的布爾值print(bool(''))#查看空字符串的布爾值print(bool('Python'))#查看字符串'Python'的布爾值使用bool()函數(shù)查看部分?jǐn)?shù)據(jù)的布爾值,具體示例如下:4.2.1判斷條件a,b=10,30print(a>=5)#判斷變量a的值是否大于等于5print(b==False)#判斷變量b的值是否等于False#判斷變量a的值是否存在于列表[1,2,3,4,5]中print(ain[1,2,3,4,5])#判斷變量b的值是否不存在于列表[1,2,3,4,5]中print(bnotin[1,2,3,4,5])#對(duì)變量a的值取反print(nota)#判斷變量a的值是否大于等于5并且b的值等于Falseprint(a>=5&b==False)#判斷變量a的值是否大于等于5或者b的值等于Falseprint(a>=5orb==False)Python還常將數(shù)據(jù)或變量與比較運(yùn)算符或成員運(yùn)算符構(gòu)成更復(fù)雜的判斷條件。4.2.2

單分支結(jié)構(gòu):if語(yǔ)句if語(yǔ)句用于形成單分支結(jié)構(gòu),其語(yǔ)法格式如下:if判斷條件:

代碼段下面使用if語(yǔ)句實(shí)現(xiàn)判斷當(dāng)天是否為工作日的程序。

day=input("今天是工作日嗎(請(qǐng)輸入整數(shù)1~7)?")ifdayin'12345':print("今天是工作日!")ifdayin'67':print("今天非工作日!")4.2.3雙分支結(jié)構(gòu):if-else語(yǔ)句if-else語(yǔ)句用于形成雙分支結(jié)構(gòu),其語(yǔ)法格式如下:if判斷條件:

代碼段1else:

代碼段2day=input("今天是工作日嗎(請(qǐng)輸入整數(shù)1~7)?")ifdayin'12345':print("今天是工作日!")else:print("今天非工作日!")使用if-else語(yǔ)句實(shí)現(xiàn)判斷當(dāng)天是否為工作日的程序。4.2.3雙分支結(jié)構(gòu):if-else語(yǔ)句如果if-else語(yǔ)句的代碼段只包含簡(jiǎn)單的表達(dá)式或語(yǔ)句,那么該語(yǔ)句可濃縮為更簡(jiǎn)潔的表達(dá)方式,類似于其他編程語(yǔ)言中三目運(yùn)算符的寫法。

表達(dá)式1if判斷條件else表達(dá)式2使用if-else語(yǔ)句實(shí)現(xiàn)判斷當(dāng)天是否為工作日的程序。day=input("今天是工作日嗎(請(qǐng)輸入整數(shù)1~7)?")result="今天是工作日!"ifdayin'12345'else"今天非工作日!"print(result)4.2.4多分支結(jié)構(gòu):if-elif-else語(yǔ)句if-elif-else語(yǔ)句用于形成多分支結(jié)構(gòu),其語(yǔ)法格式如下:if判斷條件1:

代碼段1elif判斷條件2:

代碼段2……elif判斷條件n:

代碼段nelse:

代碼段n+1if-elif-else語(yǔ)句的執(zhí)行流程圖4.2.4多分支結(jié)構(gòu):if-elif-else語(yǔ)句使用if-elif-else語(yǔ)句判斷當(dāng)天是否為工作日的程序。

day=input("今天是工作日嗎(請(qǐng)輸入整數(shù)1~7)?")ifdayin'12345':print("今天是工作日!")elifdayin'67':print("今天非工作日!")else:print("輸入有誤!")4.2.4多分支結(jié)構(gòu):if-elif-else語(yǔ)句多分支結(jié)構(gòu)中判斷條件較多,各分支為互斥關(guān)系,每個(gè)多分支結(jié)構(gòu)中只有一段代碼會(huì)被執(zhí)行,但判斷條件可能存在包含關(guān)系,此時(shí)需要注意判斷條件的先后順序。

4.2.5分支嵌套分支結(jié)構(gòu)的內(nèi)部可以包含分支結(jié)構(gòu),此種情況稱為分支嵌套。if判斷條件1:

#外層分支

代碼段1

if判斷條件2:

#內(nèi)層分支

代碼段2 ...

代碼段3...分支嵌套流程圖4.2.5分支嵌套使用分支嵌套優(yōu)化4.2.4節(jié)的程序,具體代碼如下:day=input("今天是工作日嗎(請(qǐng)輸入整數(shù)1~7)?")ifdayin'1234567':ifdayin'12345':print("今天是工作日!")else:print("今天非工作日!")else:print("輸入有誤!")循環(huán)結(jié)構(gòu)4.34.3.1條件循環(huán):while語(yǔ)句while語(yǔ)句用于實(shí)現(xiàn)條件循環(huán),條件循環(huán)主要根據(jù)條件決定是否進(jìn)入循環(huán),執(zhí)行循環(huán)內(nèi)的代碼段,但無(wú)法確定可能執(zhí)行的次數(shù)。while循環(huán)條件:

代碼段n=int(input("請(qǐng)輸入一個(gè)整數(shù):"))fact=1i=1whilei<=n: fact=fact*i i=i+1print("n!={}".format(fact))例如,使用while語(yǔ)句實(shí)現(xiàn)計(jì)算n的階乘。4.3.1條件循環(huán):while語(yǔ)句Python的while語(yǔ)句也支持使用關(guān)鍵字else產(chǎn)生分支。

while循環(huán)條件:

代碼段1else:

代碼段2n=int(input("請(qǐng)輸入一個(gè)整數(shù):"))fact=1i=1whilei<=n:fact=fact*ii=i+1else:print("計(jì)算完成,循環(huán)正常結(jié)束")print("n!={}".format(fact))例如,使用while語(yǔ)句實(shí)現(xiàn)計(jì)算n的階乘。4.3.1條件循環(huán):while語(yǔ)句若while語(yǔ)句的循環(huán)條件總是成立,則循環(huán)將一直執(zhí)行,這種情況被稱為無(wú)限循環(huán),也叫做死循環(huán)。初學(xué)者在使用while循環(huán)時(shí)很容易忘記更改循環(huán)因子i的值,例如遺漏上述代碼中更改循環(huán)因子的語(yǔ)句“i=i+1”,此時(shí)將無(wú)法結(jié)束循環(huán)。4.3.2遍歷循環(huán):for語(yǔ)句Python中for語(yǔ)句用于實(shí)現(xiàn)遍歷循環(huán),遍歷循環(huán)指在循環(huán)中完成對(duì)目標(biāo)對(duì)象的遍歷,其中遍歷指逐一訪問(wèn)目標(biāo)對(duì)象中的數(shù)據(jù),例如逐個(gè)訪問(wèn)字符串中的字符。for臨時(shí)變量in目標(biāo)對(duì)象:

代碼段使用for語(yǔ)句遍歷字符串,并逐個(gè)輸出字符串中的字符。

string="人人為我,我為人人"forcinstring:print(c)4.3.2遍歷循環(huán):for語(yǔ)句for語(yǔ)句還經(jīng)常與range()函數(shù)搭配使用,用于控制循環(huán)中代碼段的執(zhí)行次數(shù)。range()函數(shù)用于生成一個(gè)可迭代對(duì)象,該對(duì)象包含一組連續(xù)的或者有規(guī)律的整數(shù)。range(start=0,stop,step=1])start:表示起始值,若不指定該參數(shù),則默認(rèn)的起始值是0。stop:表示結(jié)束值,但不包括stop。step:表示步長(zhǎng),該參數(shù)可以省略,此時(shí)步長(zhǎng)默認(rèn)為1,例如range(0,5)等價(jià)于range(0,5,1)。4.3.2遍歷循環(huán):for語(yǔ)句需要說(shuō)明的是,如果直接輸出range()函數(shù)返回的可迭代對(duì)象,則無(wú)法顯示該對(duì)象中包含的所有整數(shù),不過(guò)可以先將該對(duì)象轉(zhuǎn)換為列表后進(jìn)行輸出,這樣便可以清晰地了解該對(duì)象中的整數(shù)情況。4.3.2遍歷循環(huán):for語(yǔ)句例如,使用for語(yǔ)句搭配range()函數(shù),輸出字符串中的每個(gè)字符。string="人人為我,我為人人"foriinrange(len(string)):#通過(guò)range()函數(shù)生成整數(shù)列表print(string[i])4.3.2遍歷循環(huán):for語(yǔ)句for臨時(shí)變量in目標(biāo)對(duì)象:

代碼段1else:

代碼段2與while語(yǔ)句類似,for語(yǔ)句也能與關(guān)鍵字else搭配使用。

string="人人為我,我為人人"foriinrange(len(string)):print(string[i])else:print("循環(huán)正常結(jié)束")使用for語(yǔ)句搭配else,輸出字符串中的每個(gè)字符。4.3.3實(shí)例:天天向上的力量一年有365天,以第1天的能力值為基數(shù),記作1.0。當(dāng)一個(gè)人好好學(xué)習(xí)一天,能力值相比前一天提高9‰;當(dāng)一個(gè)人一天沒(méi)有學(xué)習(xí),他會(huì)受到遺忘因素的影響導(dǎo)致能力值下降,能力值相比前一天下降9‰。請(qǐng)問(wèn),一個(gè)人努力一年的能力值,是放任一年的能力值的多少倍呢?4.3.3實(shí)例:天天向上的力量本實(shí)例的實(shí)現(xiàn)思路可以分成以下步驟:定義兩個(gè)變量,分別用于保存努力的能力值和放任的能力值,它們的初始值都為1.0。通過(guò)while語(yǔ)句實(shí)現(xiàn)循環(huán)結(jié)構(gòu),該結(jié)構(gòu)用于重復(fù)計(jì)算一個(gè)人努力days天后的能力值和放任days天后的能力值。由于days的取值范圍為1~365,所以這里可以將days的初始值設(shè)置為365,循環(huán)結(jié)構(gòu)的循環(huán)條件設(shè)置為days大于0。在循環(huán)內(nèi)部計(jì)算努力的能力值和放任的能力值。4.3.4循環(huán)嵌套1.

while循環(huán)嵌套while循環(huán)嵌套是指while語(yǔ)句嵌套while語(yǔ)句或for語(yǔ)句。while語(yǔ)句中嵌套while語(yǔ)句的語(yǔ)法格式如下:while循環(huán)條件1:

#外層循環(huán)

代碼段1

while循環(huán)條件2:

#內(nèi)層循環(huán)

代碼段2

......4.3.4循環(huán)嵌套1.

while循環(huán)嵌套下面使用while循環(huán)嵌套輸出一個(gè)由*構(gòu)成的直角三角形。

i=1whilei<6:#外層循環(huán),用于控制圖形的行數(shù)j=0whilej<i:#內(nèi)層循環(huán),用于控制每行*的數(shù)量

print("*",end='')#輸出*,指定*后面的結(jié)束標(biāo)注是空j+=1print()#每輸出完一行*便換行i+=14.3.4循環(huán)嵌套2.

for循環(huán)嵌套for循環(huán)嵌套是指for語(yǔ)句中嵌套了while或for語(yǔ)句。for臨時(shí)變量in目標(biāo)對(duì)象:#外層循環(huán)

代碼段1

for臨時(shí)變量in目標(biāo)對(duì)象

#內(nèi)層循環(huán)

代碼段2

......4.3.4循環(huán)嵌套2.

for循環(huán)嵌套下面使用for循環(huán)嵌套輸出一個(gè)由*構(gòu)成的直角三角形。

foriinrange(1,6):forjinrange(i):print("*",end='')print()4.3.5循環(huán)控制1.

break關(guān)鍵字break用于跳出它所在的循環(huán)結(jié)構(gòu),該語(yǔ)句通常與if語(yǔ)句結(jié)合使用。

while循環(huán)條件: [代

溫馨提示

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