版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第3章字符串《Python程序設計現(xiàn)代方法(第2版)》學習目標/Target
掌握字符串的定義方式,能夠準確定義字符串
掌握字符串的索引和切片,能夠通過索引和切片獲取字符串的子串
掌握字符格式化方式,能夠通過%、format()和f-string格式化字符串學習目標/Target
掌握字符串的處理函數(shù),能夠通過len()函數(shù)和ord函數(shù)實現(xiàn)特定功能
掌握字符串的處理方法,能夠根據(jù)需要選擇合適的方法處理字符串
熟悉字符串的運算符,能夠通過+和*運算符實現(xiàn)字符串的拼接和復制章節(jié)概述/Summary日常生活中經(jīng)常會看見一些文本類型的數(shù)據(jù),比如電子郵件、評論、個人資料等,這些數(shù)據(jù)的內(nèi)容形式比較復雜,包括字母、數(shù)字、標點符號、特殊符號、漢字等,程序中使用字符串表示這些信息。本章將針對字符串的內(nèi)容進行詳細講解。目錄/Contents01字符串的定義字符串的索引和切片字符串格式化實例:制作高鐵名片020304目錄/Contents05字符串運算符字符串處理函數(shù)字符串處理方法0607實例:文本檢測程序08字符串的定義3.13.1字符串的定義字符串是一個有序的字符集合,它里面的字符默認采用Unicode編碼,可以是字母、數(shù)字、標點、特殊符號、中文等字符。需要說明的是,Python中沒有字符類型,即便一個字符也屬于字符串。Python支持使用單引號、雙引號和三引號定義字符串,三引號可以是三單引號和三雙引號,其中使用單引號、雙引號定義的字符串只能單行顯示,三引號定義的字符串支持多行顯示?!彩乱岳硐霝橐?,實行為果’
#使用單引號定義字符串“凡事以理想為因,實行為果”
#使用雙引號定義字符串
'''凡事以理想為因,實行為果'''
#使用三單引號定義字符串"""凡事以理想為因,
實行為果“”“
#使用三雙引號定義字符串3.1字符串的定義使用單引號或雙引號定義字符串時,字符串的內(nèi)容不能包含單引號或雙引號。例如,英文語句Let‘slearnPython中有一個單引號,如果此時仍然使用單引號定義包含該英文語句的字符串,則會出現(xiàn)錯誤信息。
3.1字符串的定義'Let'slearnPython''Let'slearnPython'^SyntaxError:unterminatedstringliteral(detectedatline131)運行代碼,結果如下所示:為了避免程序中出現(xiàn)這類問題,可以使用雙引號或三引號定義字符串。例如,將上述示例中定義字符串時使用的單引號分別修改為雙引號或三引號,改后的代碼如下:3.1字符串的定義"Let'slearnPython""""Let'slearnPython""“'''Let'slearnPython'''同理,若字符串包裹的內(nèi)容中包含雙引號,則可以使用單引號或三引號定義字符串
以確保Python解釋器能夠按預期對引號進行配對。除此之外,還可以利用反斜杠“\”對引號進行轉義,使Python解釋器將轉義后的引號作為普通字符對待。示例如下:3.1字符串的定義words='Let\'slearnPython'#使用反斜桿轉義字符串里面的單引號print(words)運行代碼,結果如下所示。Let'slearnPython有些情況下,反斜杠也會作為字符串的一部分,比如表示W(wǎng)indows系統(tǒng)下文件路徑的字符串“D:\PythonProject\Chapter01\next.py”中,由于\n特殊性,它會使\n連接的后面語句出現(xiàn)換行,示例如下:3.1字符串的定義運行代碼,結果如下所示。words='D:\PythonProject\Chapter01\next.py'print(words)D:\PythonProject\Chapter01ext.py3.1字符串的定義1盡管字符串的定義方式有很多,但是同一文件中應統(tǒng)一使用方式,避免多種方式混合使用。2如果在字符串中包含某種形式的引號,那么應優(yōu)先使用其他形式的引號定義字符串,而非使用轉義字符。3如果三引號定義的字符串沒有賦值給變量,那么它會被視為多行注釋。多學一招:轉義字符一些普通字符與反斜杠組合后將失去原有意義,產(chǎn)生新的含義。類似這樣的與反斜杠組合而成的、具有特殊意義的一串字符就是轉義字符。轉義字符通常用于表示一些無法直接顯示的字符,例如制表符、回車符等。轉義字符功能說明\b退格\n換行符\v垂直制表符\t水平制表符\r回車符\'單引號字符\"雙引號字符字符串的索引與切片3.23.2字符串的索引和切片Python中字符串可以包含多個字符,這些字符按一定順序排列,每個字符所在的位置有著固定的編號,以便用戶通過該編號訪問它們,這些位置編號被稱為索引或者下標。按照不同的方向,索引分為正向索引和逆向索引。正向索引的值從0開始,逆向索引的值從-1開始。3.2字符串的索引和切片通過索引可以其對應的單個字符,使用方式為“字符串[索引]”。words='精誠所至金石為開'char_one=words[1]#獲取索引為1的字符“誠”char_two=words[-7]#獲取索引為-7的字符“誠”3.2字符串的索引和切片通過切片從字符串中截取子串,切片的語法格式如下。字符串[起始索引:結束索引:步長]起始索引:表示截取字符的起始位置,取值可以是正向索引或逆向索引。結束索引:表示截取字符的結束位置,取值可以為正向索引或逆向索引。步長:表示每隔指定數(shù)量的字符截取一次字符串,取值可以是正負整數(shù),默認值為1。若步長為正整數(shù),則會按照從左到右的順序取值;若步長為負整數(shù),則會按照從右到左的順序取值。需要注意的是,切片截取的子串包含起始索引對應的字符,但不包含結束索引對應字符。3.2字符串的索引和切片切片的示例如下:print(words[:5])#獲取從索引0到索引5之前的子串print(words[5:])#獲取從索引5到末尾的子串print(words[4:6])#獲取從索引4到索引6之前的子串print(words[::2])#獲取從索引0到末尾、步長為2的子串print(words[-4:-2])#獲取從索引-4到索引-2之前的子串print(words[-4:6])#獲取從索引-4到索引6之前的子串精誠所至金石為開金石精所金為金石金石運行結果3.2字符串的索引和切片值得一提的是,Python中的字符串與其他編程語言不同,它是不可變的,一旦定義完成后不能被修改。如果嘗試給某個索引對應的字符重新賦值時,則會出現(xiàn)語法錯誤信息。words[3]=','TypeError:'str'objectdoesnotsupportitemassignment運行代碼,結果如下:字符串格式3.33.3.1使用格式符%格式化字符串在使用格式符對字符串格式化時,Python會使用一個帶有格式符的字符串作為模板,這個格式符用于為真實值預留位置,并說明真實值應該呈現(xiàn)的格式。
"我叫%s"%"小明"使用一個元組將多個真實值傳遞給字符串模板,元組中的每個值對應著一個格式符。
"我叫%s,今年%d歲了"%("小明",18)Python還支持更多類型的格式符,每種格式符適用于不同的數(shù)據(jù)類型。格式符功能說明%c格式化單個字符及其ASCII碼%s格式化字符串%i或%d格式化有符號的十進制整數(shù)%o格式化有符號的八進制整數(shù)%x格式化有符號的十六進制整數(shù)%e格式化科學計數(shù)法表示的浮點數(shù),以e為底數(shù)%E格式化科學計數(shù)法表示的浮點數(shù),以E為底數(shù)%f格式化十進制表示的浮點數(shù)3.3.1使用格式符%格式化字符串當使用多個格式符對字符串進行格式化時,還可以通過字典傳值,這時需要先以“(name)”形式對變量進行命名,每個命名對應字典的一個鍵,示例如下:format_string="我叫%(name)s,今年%(age)d歲了"%{"name":"小明","age":18}print(format_string)運行代碼,結果如下所示。我叫小明,今年18歲了3.3.1使用格式符%格式化字符串3.3.2使用format()方法格式化字符串使用format()方法格式化字符串的語法格式如下:模板字符串.format(值0,值1,...)format_string="我叫{},今年18歲了".format("小明")print(format_string)我叫小明,今年18歲了示例代碼:運行結果:3.3.2使用format()方法格式化字符串如果模板字符串中有多個符號{},并且{}內(nèi)沒有指定任何值的序號,則默認{}內(nèi)的序號與值的順序是互相對應的,序號從0開始遞增,此時會按照從左到右的順序依次用值替換。3.3.2使用format()方法格式化字符串如果模板字符串的{}內(nèi)明確指定了值的序號,則需要按照序號使用相應的值進行替換。
3.3.2使用format()方法格式化字符串在format()方法中,模板字符串的{}內(nèi)除了參數(shù)序號以外,還可以加入其他控制信息,以便能定制更豐富的格式。{}內(nèi)加入控制信息的語法格式如下:{<值序號>:<格式控制標記>}格式控制標記包括<填充>、<對齊>、<寬度>、<,>、<.精度>、<類型>這六個字段,這些字段都是可選的,可以組合使用。3.3.2使用format()方法格式化字符串(1)<填充>字段是一個字符,默認使用空格填充。(2)<對齊>字段分別使用<、>和^三個符號表示左對齊、右對齊和居中對齊。(3)<寬度>字段用于指定值轉換字符串后字符串的寬度,如果設定的寬度值比字符串的實際長度小,則使用字符串的實際長度,否則就使用設定的寬度值。words="design"print("{:10}".format(words))#左對齊,填充空格至寬度為10print("{:>10}".format(words))#右對齊,填充空格至寬度為10print("{:@^10}".format(words))#居中對齊,填充@至寬度為10print("{:@^1}".format(words))#寬度小于words的實際長度designdesign@@design@@design運行結果3.3.2使用format()方法格式化字符串(4)<,>字段用于顯示數(shù)字類型的千位分隔符。
words=31415926print("{0:,}".format(words))#顯示千位分隔符運行代碼,結果如下所示。31,415,9263.3.2使用format()方法格式化字符串(5)<.精度>字段以小數(shù)點開頭,適用于浮點數(shù)和字符串,如果值是浮點數(shù),則精度表示小數(shù)部分輸出的有效位數(shù);如果值是字符串,精度表示輸出字符串的最大長度。
運行代碼,結果如下所示。words=3.1415926print("{:.5f}".format(words))#輸出浮點數(shù),保留5位小數(shù)words="design"print("{:.5}".format(words))#字符串的長度為53.14159desig3.3.2使用format()方法格式化字符串(6)<類型>字段用于控制整型和浮點型的值的格式規(guī)則。c:輸出整型對應的Unicode字符;d:輸出整型的十進制形式;o:輸出整型的八進制形式;x:輸出整型的十六進制形式;e:輸出浮點數(shù)對應的小寫字母e的指數(shù)形式;E:輸出浮點數(shù)對應的大寫字母E的指數(shù)形式;f:輸出浮點數(shù)的標準形式;%:輸出浮點數(shù)的百分比形式。針對整型的輸出格式針對浮點型的輸出格式3.3.2使用format()方法格式化字符串(6)<類型>字段用于控制整型和浮點型的值的格式規(guī)則。整型和浮點型輸出格式的示例如下:print("{:c}".format(97))
#輸出97對應的Unicode字符print("{:x}".format(11))#輸出十六進制形式的整數(shù)print("{:E}".format(1568.736))#輸出科學計數(shù)法形式的浮點數(shù)print("{:%}".format(0.80))#輸出浮點數(shù)的百分比形式ab1.568736E+0380.000000%運行結果3.3.3使用f-string格式化字符串f-string提供了一種更為簡潔的格式化字符串的方式,它在形式上以f或F引領字符串,在字符串中使用“{變量名}”標明被替換的真實值所在位置。f"{變量名}"或F"{變量名}"使用f-string格式化字符串,示例如下:name="小明"age=18format_string=f'我叫{name},今年{age}歲了'print(format_string)我叫小明,今年18歲了代碼運行結果:實例:制作高鐵名片3.43.4實例:制作高鐵名片近10年來,我國高鐵秉持“核心技術必須要把握在自己手里”的發(fā)展理念,實現(xiàn)了由“追趕者”到“領跑者”的角色轉換,在新時代跑出了中國速度,更創(chuàng)造了中國奇跡,成為代表中國形象的“亮麗名片”。3.4實例:制作高鐵名片2008年8月,我國第一條350公里/小時的高速鐵路—京津城際鐵路開通運營,此后高鐵在我國得到了飛速發(fā)展。2017年6月,以“復興號”命名的標準動車組成功研制生產(chǎn)并上線運營,標志著我國鐵路技術裝備達到了領跑世界的先進水平。2022年復興號智能動車組實現(xiàn)時速350公里自動駕駛。3.4實例:制作高鐵名片盡管我國高鐵起步較晚,但經(jīng)過幾代鐵路人接續(xù)奮斗,實現(xiàn)了從無到有、從追趕到并跑、再到領跑的歷史性變化,成功建設了世界上規(guī)模最大、現(xiàn)代化水平最高的高速鐵路網(wǎng)。放眼整個大地,我國高鐵跨越大江大河,穿越崇山峻嶺,通達四面八方,從林海雪原到江南水鄉(xiāng),從大漠戈壁到東海之濱,改寫著整個我國社會的時空格局,也提供著助力世界發(fā)展的中國智慧。3.4實例:制作高鐵名片本實例要求用戶輸入的型號、外號、動力來源、運營速度、投用時間這些基本信息,每個信息之間用“|”進行分隔,套用統(tǒng)一格式的模板制作成一張高鐵名片。高鐵名片模板的格式如下:3.4實例:制作高鐵名片本實例的實現(xiàn)思路分成以下兩步:(1)通過input()函數(shù)獲取復興號電力動車組的基本信息,并使用變量保存基本信息;(2)通過f-string將占位符標注到指定的位置。字符串運算符3.53.5字符串運算符Python中有些運算符適用于字符串,以便對字符串執(zhí)行一些簡單的操作。運算符功能說明+連接運算符兩側的字符串,返回一個連接后的新字符串*復制指定次數(shù)的字符串,返回一個復制后的新字符串>,<,==,!=,>=,<=按照ASCII值的大小比較字符串里面的字符in,notin檢測字符串中是否存在或不存在某個子串3.5字符串運算符下面是字符串操作符的部分示例,具體如下:result_one='寶劍鋒從磨礪出'+','+'梅花香自苦寒來’print(result_one)result_two='加油!'*3print(result_two)result_thr='Python'>='python'print(result_thr)result_fou='梅花'in'梅花香自苦寒來’print(result_fou)寶劍鋒從磨礪出,梅花香自苦寒來加油!加油!加油!FalseTrue運行結果如下:3.5字符串運算符值得一提的是,雖然通過“+”運算符可以連接多個字符串,但是效率非常低,這是因為Python中字符串屬于不可變類型,在不斷連接字符串的時候會生成新字符串,每生成一個新字符串就需要申請一次內(nèi)存空間,內(nèi)存操作過于頻繁。因此Python不建議使用“+”運算符連接字符串,后續(xù)3.7節(jié)會講到一些其他的字符串連接方法。字符串處理函數(shù)3.63.6字符串處理函數(shù)Python針對字符串提供了一些內(nèi)置函數(shù),使用這些內(nèi)置函數(shù)可以便捷地對字符串進行處理。函數(shù)功能說明len()返回字符串的長度,或返回其他組合數(shù)據(jù)類型的元素個數(shù)ord()返回單字符對應的ASCII值3.6字符串處理函數(shù)words_one="敏而好學,不恥下問"word_length=len(words_one)print(word_length)words_two="人生苦短,我用Python"word_length=len(words_two)#計算字符串的長度print(word_length)word='a'print(ord(word))#返回單字符的ASCII值使用函數(shù)處理字符串的示例代碼如下:字符串處理方法3.73.7.1字符串大小寫轉換的方法函數(shù)功能說明upper()將字符串中的字母全部轉換為大寫字母,返回轉換后的新字符串lower()將字符串中的字母全部轉換為小寫字母,返回轉換后的新字符串capitalize()將字符串中的首字母轉換為大寫形式,其余字母轉換為小寫形式,返回轉換后的新字符串title()將字符串中每個單詞的首字母轉換為大寫形式,其余字母轉換為小寫形式,返回轉換后的新字符串在一些特定情況下會對英文單詞的大小寫形式有著特殊的要求。例如,專有名詞的簡稱必須是全字母大寫,如CBA、CCTV等。Python提供了一些用于大小寫轉換的方法,具體如下:
3.7.1字符串大小寫轉換的方法字符串的大小寫轉換方法的使用示例:string='interestIStheBESTteacher'upper_str=string.upper()#所有字母轉換為大寫字母lower_str=string.lower()#所有字母轉換為小寫字母cap_str=string.capitalize()#首字母轉換為大寫字母#每個單詞的首字母轉換為大寫字母,其余字母轉換成小寫字母title_str=string.title()print(f'全部轉換為大寫字母:{upper_str}')print(f'全部轉換為小寫字母:{lower_str}')print(f'首字母轉換為大寫字母:{cap_str}')print(f'單詞首字母轉換為大寫字母:{title_str}')3.7.2查找與替換字符串的方法1.
find()方法find()方法用于查找字符串中是否包含子串,既可以在整個字符串中查找,也可以在指定范圍內(nèi)查找。若找到子串則返回子串首次出現(xiàn)的索引,否則返回-1。find(sub,start=None,end=None)words='與其臨淵羨魚,不如退而結網(wǎng)。'result_one=words.find('魚’)print(result_one)result_two=words.find('魚',6)print(result_two)示例代碼:3.7.2查找與替換字符串的方法2.
replace()方法replace()方法用于將當前字符串中的指定子串替換成新的子串,可以指定替代次數(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ù)指定分隔符對字符串進行分割,分割后返回一個列表,該列表中保存了多個字符串。split(sep=None,maxsplit=-1)參數(shù)sep表示分隔符,默認值為空格,也可被設置為其他字符,例如空格、換行(\n)、制表符(\t)等;參數(shù)maxsplit表示分割的次數(shù),默認值是-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()方法用于將某個字符串作為連接符,通過連接符拼接可迭代對象的每個元素,并返回一個新的字符串??傻鷮ο罂梢允亲址?、列表、元組、集合、字典。join(iterable)2.
join()方法3.7.3分割與拼接字符串的方法symbol='**'string='Python'new_str=symbol.join(string)#通過symbol拼接字符串中的每個字符print(new_str)#通過symbol拼接列表中的每個字符串new_str=symbol.join(['Let','us','learn','Python'])print(new_str)拼接字符串的示例如下:2.
join()方法實例:文本檢測程序3.83.8實例:文本檢測程序在互聯(lián)網(wǎng)發(fā)展的初期,違法違規(guī)亂象危害了網(wǎng)絡環(huán)境,侵犯了人民的正當權益。為了保障網(wǎng)絡安全,維護國家和人民的利益,大多數(shù)網(wǎng)絡平臺會采取不良詞語屏蔽的策略來營造一個風清氣正的網(wǎng)絡環(huán)境。我們都是形成網(wǎng)絡語言生態(tài)的一份子,保持網(wǎng)絡環(huán)境的健康純潔,需要我們每個人從自身做起。本實例要求實現(xiàn)文本檢測程序,該程序只要檢測到文本中出現(xiàn)“最優(yōu)秀”,就替換成“較優(yōu)秀”。文本內(nèi)容如下:我們擁有多年的品牌戰(zhàn)略規(guī)劃及標志設計、商標注冊經(jīng)驗;專業(yè)提供公司標志設計與商標注冊一條龍服務。我們擁有最優(yōu)秀且具有遠見卓識的設計師,使我們的策略分析嚴謹,設計充滿創(chuàng)意。我們有信心為您締造最優(yōu)秀的品牌形象設計服務,將您的企業(yè)包裝得更富價值。3.8實例:文本檢測程序2.7實例:毛遂自薦根據(jù)前面的描述可知,我們需要先準備一段文本,之后在這段文本中查找詞語“最優(yōu)秀”,將“最優(yōu)秀”替換為“較優(yōu)秀”,具體實現(xiàn)思路可以分成以下三步:(1)定義一個變量,用于保存文本的內(nèi)容。(2)通過find()方法從整個文本中查找詞語“最優(yōu)秀”。(3)通過replace()方法將該文本中的詞語“最優(yōu)秀”替換成“較優(yōu)秀”。本章小結本章主要介紹了字符串相關的知識,包括字符串的定義、字符串的索引與切片、字符串格式化、字符串運算符、字符串處理函數(shù)和方法。希望通過本章的學習,讀者可以掌握字符串的基本使用,能夠靈活運用字符串開發(fā)程序。本章小結第4章流程控制《Python程序設計現(xiàn)代方法(第2版)》學習目標/Target
了解程序流程圖的基本元素,能夠說出每種元素的功能
熟悉程序的基本結構,能夠歸納每個結構的執(zhí)行流程
掌握分支結構,能夠通過不同語句實現(xiàn)不同的分支結構
掌握循環(huán)結構,能夠通過不同語句實現(xiàn)不同的循環(huán)結構章節(jié)概述/Summary程序中語句默認的執(zhí)行順序是自上而下。流程控制是指在程序運行時,通過一些特定的指令更改程序中語句的執(zhí)行順序,使其產(chǎn)生跳躍、回溯等現(xiàn)象。本章將對流程控制的相關知識進行講解。目錄/Contents01程序表示方法分支結構循環(huán)結構實例:猜數(shù)字020304程序表示方法4.14.1.1程序流程圖程序流程圖是一種用圖形、流程線和文字說明描述程序基本操作和控制流程的方法,它是程序分析和過程描述的最基本方式。程序流程圖有7種基本元素,每種元素使用特定符號表示。
4.1.1程序流程圖一個基本的程序流程圖,示例如下:
4.1.2程序的基本結構順序結構是最簡單的一種基本結構。
1.順序結構4.1.2程序的基本結構分支結構又稱選擇結構,此種結構必定包含判斷條件,是一種根據(jù)判斷條件的結果選擇不同執(zhí)行路徑的結構。根據(jù)分支路徑的數(shù)量,分支結構分為單分支結構、雙分支結構和多分支結構。
2.分支結構雙分支結構單分支結構4.1.2程序的基本結構循環(huán)結構又稱重復結構,此結構同樣包含判斷條件,是一種根據(jù)判斷條件的結果選擇是否重復執(zhí)行代碼段的結構。根據(jù)判斷條件的觸發(fā)方式,循環(huán)結構可分為條件循環(huán)和遍歷循環(huán)。
3.循環(huán)結構分支結構4.24.2.1判斷條件判斷條件可以是能產(chǎn)生布爾值的任意元素,包括數(shù)據(jù)、變量,以及由變量或數(shù)據(jù)與運算符按照一定規(guī)則連接而成的表達式,若它的布爾值為True,表示判斷條件成立;若布爾值為False,表示判斷條件不成立。Python中比較簡單的判斷條件是數(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))#查看浮點數(shù)0.0的布爾值print(bool(''))#查看空字符串的布爾值print(bool('Python'))#查看字符串'Python'的布爾值使用bool()函數(shù)查看部分數(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])#對變量a的值取反print(nota)#判斷變量a的值是否大于等于5并且b的值等于Falseprint(a>=5&b==False)#判斷變量a的值是否大于等于5或者b的值等于Falseprint(a>=5orb==False)Python還常將數(shù)據(jù)或變量與比較運算符或成員運算符構成更復雜的判斷條件。4.2.2
單分支結構:if語句if語句用于形成單分支結構,其語法格式如下:if判斷條件:
代碼段下面使用if語句實現(xiàn)判斷當天是否為工作日的程序。
day=input("今天是工作日嗎(請輸入整數(shù)1~7)?")ifdayin'12345':print("今天是工作日!")ifdayin'67':print("今天非工作日!")4.2.3雙分支結構:if-else語句if-else語句用于形成雙分支結構,其語法格式如下:if判斷條件:
代碼段1else:
代碼段2day=input("今天是工作日嗎(請輸入整數(shù)1~7)?")ifdayin'12345':print("今天是工作日!")else:print("今天非工作日!")使用if-else語句實現(xiàn)判斷當天是否為工作日的程序。4.2.3雙分支結構:if-else語句如果if-else語句的代碼段只包含簡單的表達式或語句,那么該語句可濃縮為更簡潔的表達方式,類似于其他編程語言中三目運算符的寫法。
表達式1if判斷條件else表達式2使用if-else語句實現(xiàn)判斷當天是否為工作日的程序。day=input("今天是工作日嗎(請輸入整數(shù)1~7)?")result="今天是工作日!"ifdayin'12345'else"今天非工作日!"print(result)4.2.4多分支結構:if-elif-else語句if-elif-else語句用于形成多分支結構,其語法格式如下:if判斷條件1:
代碼段1elif判斷條件2:
代碼段2……elif判斷條件n:
代碼段nelse:
代碼段n+1if-elif-else語句的執(zhí)行流程圖4.2.4多分支結構:if-elif-else語句使用if-elif-else語句判斷當天是否為工作日的程序。
day=input("今天是工作日嗎(請輸入整數(shù)1~7)?")ifdayin'12345':print("今天是工作日!")elifdayin'67':print("今天非工作日!")else:print("輸入有誤!")4.2.4多分支結構:if-elif-else語句多分支結構中判斷條件較多,各分支為互斥關系,每個多分支結構中只有一段代碼會被執(zhí)行,但判斷條件可能存在包含關系,此時需要注意判斷條件的先后順序。
4.2.5分支嵌套分支結構的內(nèi)部可以包含分支結構,此種情況稱為分支嵌套。if判斷條件1:
#外層分支
代碼段1
if判斷條件2:
#內(nèi)層分支
代碼段2 ...
代碼段3...分支嵌套流程圖4.2.5分支嵌套使用分支嵌套優(yōu)化4.2.4節(jié)的程序,具體代碼如下:day=input("今天是工作日嗎(請輸入整數(shù)1~7)?")ifdayin'1234567':ifdayin'12345':print("今天是工作日!")else:print("今天非工作日!")else:print("輸入有誤!")循環(huán)結構4.34.3.1條件循環(huán):while語句while語句用于實現(xiàn)條件循環(huán),條件循環(huán)主要根據(jù)條件決定是否進入循環(huán),執(zhí)行循環(huán)內(nèi)的代碼段,但無法確定可能執(zhí)行的次數(shù)。while循環(huán)條件:
代碼段n=int(input("請輸入一個整數(shù):"))fact=1i=1whilei<=n: fact=fact*i i=i+1print("n!={}".format(fact))例如,使用while語句實現(xiàn)計算n的階乘。4.3.1條件循環(huán):while語句Python的while語句也支持使用關鍵字else產(chǎn)生分支。
while循環(huán)條件:
代碼段1else:
代碼段2n=int(input("請輸入一個整數(shù):"))fact=1i=1whilei<=n:fact=fact*ii=i+1else:print("計算完成,循環(huán)正常結束")print("n!={}".format(fact))例如,使用while語句實現(xiàn)計算n的階乘。4.3.1條件循環(huán):while語句若while語句的循環(huán)條件總是成立,則循環(huán)將一直執(zhí)行,這種情況被稱為無限循環(huán),也叫做死循環(huán)。初學者在使用while循環(huán)時很容易忘記更改循環(huán)因子i的值,例如遺漏上述代碼中更改循環(huán)因子的語句“i=i+1”,此時將無法結束循環(huán)。4.3.2遍歷循環(huán):for語句Python中for語句用于實現(xiàn)遍歷循環(huán),遍歷循環(huán)指在循環(huán)中完成對目標對象的遍歷,其中遍歷指逐一訪問目標對象中的數(shù)據(jù),例如逐個訪問字符串中的字符。for臨時變量in目標對象:
代碼段使用for語句遍歷字符串,并逐個輸出字符串中的字符。
string="人人為我,我為人人"forcinstring:print(c)4.3.2遍歷循環(huán):for語句for語句還經(jīng)常與range()函數(shù)搭配使用,用于控制循環(huán)中代碼段的執(zhí)行次數(shù)。range()函數(shù)用于生成一個可迭代對象,該對象包含一組連續(xù)的或者有規(guī)律的整數(shù)。range(start=0,stop,step=1])start:表示起始值,若不指定該參數(shù),則默認的起始值是0。stop:表示結束值,但不包括stop。step:表示步長,該參數(shù)可以省略,此時步長默認為1,例如range(0,5)等價于range(0,5,1)。4.3.2遍歷循環(huán):for語句需要說明的是,如果直接輸出range()函數(shù)返回的可迭代對象,則無法顯示該對象中包含的所有整數(shù),不過可以先將該對象轉換為列表后進行輸出,這樣便可以清晰地了解該對象中的整數(shù)情況。4.3.2遍歷循環(huán):for語句例如,使用for語句搭配range()函數(shù),輸出字符串中的每個字符。string="人人為我,我為人人"foriinrange(len(string)):#通過range()函數(shù)生成整數(shù)列表print(string[i])4.3.2遍歷循環(huán):for語句for臨時變量in目標對象:
代碼段1else:
代碼段2與while語句類似,for語句也能與關鍵字else搭配使用。
string="人人為我,我為人人"foriinrange(len(string)):print(string[i])else:print("循環(huán)正常結束")使用for語句搭配else,輸出字符串中的每個字符。4.3.3實例:天天向上的力量一年有365天,以第1天的能力值為基數(shù),記作1.0。當一個人好好學習一天,能力值相比前一天提高9‰;當一個人一天沒有學習,他會受到遺忘因素的影響導致能力值下降,能力值相比前一天下降9‰。請問,一個人努力一年的能力值,是放任一年的能力值的多少倍呢?4.3.3實例:天天向上的力量本實例的實現(xiàn)思路可以分成以下步驟:定義兩個變量,分別用于保存努力的能力值和放任的能力值,它們的初始值都為1.0。通過while語句實現(xiàn)循環(huán)結構,該結構用于重復計算一個人努力days天后的能力值和放任days天后的能力值。由于days的取值范圍為1~365,所以這里可以將days的初始值設置為365,循環(huán)結構的循環(huán)條件設置為days大于0。在循環(huán)內(nèi)部計算努力的能力值和放任的能力值。4.3.4循環(huán)嵌套1.
while循環(huán)嵌套while循環(huán)嵌套是指while語句嵌套while語句或for語句。while語句中嵌套while語句的語法格式如下: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)嵌套輸出一個由*構成的直角三角形。
i=1whilei<6:#外層循環(huán),用于控制圖形的行數(shù)j=0whilej<i:#內(nèi)層循環(huán),用于控制每行*的數(shù)量
print("*",end='')#輸出*,指定*后面的結束標注是空j+=1print()#每輸出完一行*便換行i+=14.3.4循環(huán)嵌套2.
for循環(huán)嵌套for循環(huán)嵌套是指for語句中嵌套了while或for語句。for臨時變量in目標對象:#外層循環(huán)
代碼段1
for臨時變量in目標對象
#內(nèi)層循環(huán)
代碼段2
......4.3.4循環(huán)嵌套2.
for循環(huán)嵌套下面使用for循環(huán)嵌套輸出一個由*構成的直角三角形。
foriinrange(1,6):forjinrange(i):print("*",end='')print()4.3.5循環(huán)控制1.
break關鍵字break用于跳出它所在的循環(huán)結構,該語句通常與if語句結合使用。
while循環(huán)條件: [代
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 關于金屬材料服務協(xié)議合同模板
- 國內(nèi)金融租賃合同金額
- 2024-2025學年新教材高中政治第2單元認識社會與價值選擇第4課第1框人的認識從何而來練習含解析部編版必修4
- 腦梗死手術后病人的護理
- 2024熱水工程合同書范本
- 2024ui設計外包文檔ui設計外包合同范本
- 專題13 習作訓練(講義+試題) -2023年四升五語文暑假銜接課(統(tǒng)編版)
- 2024廣告服務合同范本
- 2024建筑工程設計居間合同范本
- 2024建筑工程拆遷房屋合同格式工程
- 初中語文教學中生本理念的實踐分析
- 最新患者用藥情況監(jiān)測
- 試樁施工方案 (完整版)
- ESTIC-AU40使用說明書(中文100版)(共138頁)
- 河北省2012土建定額說明及計算規(guī)則(含定額總說明)解讀
- 中工商計算公式匯總.doc
- 深圳市建筑裝飾工程消耗量標準(第三版)2003
- 《初中英語課堂教學學困生轉化個案研究》開題報告
- 鋼筋桁架樓承板施工方案
- 恒溫箱PLC控制系統(tǒng)畢業(yè)設計
- 176033山西《裝飾工程預算定額》定額說明及計算規(guī)則
評論
0/150
提交評論