Python語言程序設計基礎 課件 第3章 程序流程控制_第1頁
Python語言程序設計基礎 課件 第3章 程序流程控制_第2頁
Python語言程序設計基礎 課件 第3章 程序流程控制_第3頁
Python語言程序設計基礎 課件 第3章 程序流程控制_第4頁
Python語言程序設計基礎 課件 第3章 程序流程控制_第5頁
已閱讀5頁,還剩89頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第3章程序流程控制3.1條件表達式3.2選擇結構3.3循環(huán)結構與迭代3.4random庫的使用3.5程序流程控制的應用實例本章小結課后思考

3.1條

3.1.1關系運算符

Python語言中的關系運算符如表3-1所示,運算結果是True或False。

關系運算符不分優(yōu)先級,6個運算符(<、<=、>、>=、==?和?!=)屬于同一級。在這一點上,Python語言與其他語言不同(其他語言一般定義?<、<=、>?和?>=?為同一級,==?和?!=為同一級)。

【例3-1】

關系運算符使用示例。>>>a,b=30,50>>>0<a<b #表示a>0并且a<b,結果為True>>>a==b #表示a和b的值是否相等,結果為False>>>a>"AB" #數(shù)值不可與字符串比較大小,語句報錯

#notsupportedbetweeninstancesof'int'and'str'>>>"ABC">"ab" #字符串按對應字符的Unicode編碼比較,結果為False>>>"XY"<"xy" #字符串按對應字符的Unicode編碼比較,結果為True

3.1.2邏輯運算符

Python語言支持邏輯運算符,邏輯運算符只有3個,它們的優(yōu)先級(分3級)從高到低依次是:not、and、or。用邏輯運算符描述的表達式稱為邏輯表達式或布爾表達式。

nota:如果a為False,則返回1;否則返回0。

aandb:如果a為False,則返回a;否則返回b。

aorb:如果a為False,則返回b;否則返回a。

【例3-2】

邏輯運算符使用示例。

3.1.3構造條件表達式

使用各種運算符可以構建不同的表達式,例如:

3.2選

選擇結構是指程序運行到某個節(jié)點后,會根據(jù)一次判斷的結果來決定之后向哪一個分支方向執(zhí)行,也稱為分支結構。假設我們正在編寫一個程序,這個程序的任務是根據(jù)用戶輸入的天氣(晴天、雨天、雪天)來給出相應的建議。如果沒有選擇結構,我們可能會這樣寫代碼。weather=input("請輸入天氣:")print("今天是晴天,出門時請戴太陽鏡。")print("今天是雨天,出門時請帶傘。")print("今天是雪天,出門時請穿暖和一些。")

這段代碼的問題在于,無論用戶輸入的天氣是什么,它都會打印出所有的建議。這顯然是不合理的,因為我們只想程序給出與用戶輸入的天氣相對應的建議。

這就是需要選擇結構的原因。有了選擇結構,我們可以根據(jù)不同的條件執(zhí)行不同的代碼,使得程序的行為更加符合我們的預期。例如,上面的代碼可以改寫如下:

3.2.1單分支結構:if語句

單分支結構使用if語句,在條件為真時執(zhí)行操作,條件為假時不執(zhí)行操作。

if語句的語法格式為:

其中:

(1)條件表達式可以是任意的數(shù)值、字符、關系或邏輯表達式,或用其他數(shù)據(jù)類型表示的表達式。當它表示條件時,以True(數(shù)值為1)表示真,F(xiàn)alse(數(shù)值為0)表示假。

注意:條件表達式的結果一定是真或假,條件表達式后有“:”,表示執(zhí)行的語句要向右邊縮進。

(2)?<語句序列>稱為if語句的內嵌語句序列或子句序列,內嵌語句序列嚴格地以縮進方式表達,編輯器也會提示程序員開始書寫內嵌語句的位置,如果不再縮進,表示內嵌語句在上一行就寫完了。

if條件語句的執(zhí)行順序是:首先計算條件表達式的值,若表達式的值為True,則執(zhí)行內嵌的語句序列,否則不做任何操作。

通過圖3-1可以簡單了解單分支結構中if語句的執(zhí)行過程。圖3-1if語句執(zhí)行過程

【例3-3】單分支結構示例。設計一個程序,要求用戶輸入兩個不同的整數(shù),如果第一個數(shù)大于第二個數(shù),則交換它們的值。無論是否交換,最后都輸出這兩個數(shù)的值。

3.2.2雙分支結構:if…else語句

雙分支結構使用if…else語句,在條件為真時執(zhí)行一個操作,在條件為假時執(zhí)行另一個操作。

if…else語句的語法格式為:

其執(zhí)行順序是:首先計算條件表達式的值,若條件表達式的值為True,則執(zhí)行<語句序列1>,否則執(zhí)行<語句序列2>。

if…else語句的執(zhí)行過程如圖3-2所示。圖3-2if…else語句的執(zhí)行過程

【例3-4】雙分支結構示例。設計一個程序,要求用戶輸入兩個不同的整數(shù),如果第一個數(shù)大于第二個數(shù),則交換它們的值。無論是否交換,最后都輸出這兩個數(shù)的值。運行結果一如下:

例3-4使用了二選一的選擇結構,也就是雙分支結構,分別處理“a>b”和“a<b”的兩種情況。讀者可以比較下例3-4與例3-3的區(qū)別。

學會了雙分支結構,就可以修改例2-18,對用戶的輸入做合法性檢查了。

運行結果二如下:

【例3-5】編寫程序,從鍵盤輸入三條邊的長度,判斷是否能構成一個三角形,如果能,則提示可以構成三角形,并計算三角形面積;如果不能,則提示不能構成三角形。

【分析】組成三角形的條件是任意兩邊之和大于第三邊。如果條件成立,則能構成三角形;當條件表達式中的多個條件必須全部成立時,條件之間使用and運算符連接起來。

3.2.3多分支結構:if…elif…else語句

多分支結構使用if…elif…else語句,根據(jù)不同的條件執(zhí)行不同的操作。

當條件表達式有多個值,實際處理的問題有多種條件時,就要用到多分支結構,多分支結構語句的執(zhí)行過程如圖3-3所示。

圖3-3多分支結構語句的執(zhí)行過程

if…elif…else語句的語法格式為:

if…elif…else語句的執(zhí)行順序是:首先計算<條件表達式1>的值,若其值為True,則執(zhí)行<語句序列1>;否則,繼續(xù)計算<條件表達式2>的值,若其值為True,則執(zhí)行<語句序列2>;依此類推,若所有條件表達式的值都為False,則執(zhí)行<語句序列n?+?1>。

注意:

(1)不管有幾個分支,程序在執(zhí)行了一個分支以后,其余分支就不再執(zhí)行。

(2)當多分支中有多個條件表達式同時滿足條件時,只執(zhí)行第一條與之匹配的語句。

【例3-6】多分支結構示例。設計一個成績等級評定程序,根據(jù)輸入的成績(0~100的整數(shù))輸出對應的等級:

90分及以上:優(yōu)秀;

80~89分:良好;

70~79分:中等;

60~69分:及格;

60分以下:不及格。

運行結果如下:

例3-6首先獲取用戶輸入的0~100分整數(shù)成績,然后按照從高到低的順序依次檢查:先判斷≥90分的“優(yōu)秀”情況,接著依次檢查≥80、≥70、≥60的區(qū)間,分別對應“良好”“中等”和“及格”,最后用else分支處理所有低于60分的“不及格”情況。這種降序排列的條件判斷方式確保每個分數(shù)只會匹配到符合條件的最高等級,避免了區(qū)間重疊問題。

3.2.4嵌套if語句

在上述的if選擇結構中,語句塊本身也可以是一段if語句,這樣就形成了if語句的嵌套結構,可以實現(xiàn)更復雜的條件判斷。

【例3-7】根據(jù)用戶輸入的年齡和駕駛經(jīng)驗,決定是否給予駕駛許可。

【分析】在這個例子中,我們需要根據(jù)兩個條件(年齡和駕駛經(jīng)驗)來做出決定,這就需要使用嵌套的if語句。

【參考代碼】#3-7.pyage=int(input("年齡:"))experience=int(input("駕齡="))ifage>=18:ifexperience>=1:print("可以獲得駕駛許可")else:print("駕駛經(jīng)驗不足,不能獲得駕駛許可")else:print("年齡不足,不能獲得駕駛許可")

【例3-8】編寫一個程序,輸入一個三位正整數(shù),找出并輸出該數(shù)字三個位上的數(shù)字中最小的那個數(shù)字。例如,輸入375,輸出3;輸入555,輸出5。

【分析】在這個例子中,我們可以分解成兩步作答:第一步,通過整除和取余運算分離出三位數(shù)的百位、十位和個位數(shù)字;第二步,先用嵌套if比較百位和十位得到較小值,再將該值與個位比較,最終確定最小值?!緟⒖即a】運行結果如下:

在使用嵌套if語句時,需要注意縮進的正確性,因為在Python中,縮進是用來表示代碼塊的。

3.2.5結構化模式匹配matchcase(switchcase)

模式由序列、映射、基本數(shù)據(jù)類型以及類實例構成。模式匹配使得程序能夠從復雜的數(shù)據(jù)類型中提取信息,根據(jù)數(shù)據(jù)結構實現(xiàn)分支,并基于不同的數(shù)據(jù)形式完成特定的動作。

matchcase語句的語法格式如下:

match語句接受一個表達式,并將其值與以一個或多個case語句塊形式給出的一系列模式進行比較。具體來說,模式匹配的操作如下:

(1)給定具有特定類型和結構的數(shù)據(jù)(subject)。

(2)針對subject在match語句中求值。

(3)從上到下對subject與case語句中的每個模式進行比較,直到確認匹配到一個模式,執(zhí)行與被確認匹配的模式相關聯(lián)的動作。如果沒有確認到一個完全的匹配:如果提供了使用通配符_的最后一個case語句,則它將被用作已匹配模式;不存在使用通配符的case語句,則整個match代碼塊不執(zhí)行任何操作。

【例3-9】matchcase語句示例一。

【例3-10】matchcase語句示例二。3.3.1for循環(huán)

for循環(huán)在Python中主要用于遍歷序列(如列表、元組、字符串)或其他可迭代對象,一般語法結構如下:

其中,for和in都是關鍵字,iterable是迭代器,一個迭代器描述一個值序列,比如字符串、列表、元組、字典或者其他任何可迭代的對象。item為循環(huán)變量,是值序列中的當前元素。在每次迭代中,變量item會依次取得iterable中的一個元素,然后執(zhí)行循環(huán)體內的代碼塊。3.3循環(huán)結構與迭代

1.字符串作為迭代器

字符串被視為字符的集合,因此它是一個可迭代對象。當使用for循環(huán)遍歷一個字符串時,循環(huán)會按順序迭代字符串中的每個字符。例如:

執(zhí)行上述代碼,可以得到輸出:hello。在for循環(huán)的循環(huán)體print語句中,s作為變量,可以按順序取到”hello”中的每一個字符,反復執(zhí)行語句“print(s,end="")”,就輸出了每一個字符,并在每次表達式輸出后以兩個空格結束。

【例3-11】

編寫程序,輸入一個字符串和一個要查找的字符,統(tǒng)計該字符在字符串中出現(xiàn)的次數(shù)?!具\行結果】2.?range()內置函數(shù)生成迭代序列

range()是Python中用于生成整數(shù)序列的內置函數(shù),通常用于for循環(huán)中。它有三種形式:

(1)

range(stop)。range(stop)生成從0到stop-1的整數(shù)序列。例如,range(5)表示序列0,1,2,3,4。當stop≤0時序列為空。

(2)

range(start,stop)。range(start,stop)生成從start到stop-1的整數(shù)序列。例如,range(3,8)表示序列3,4,5,6,7。當start≥stop時序列為空。

(3)

range(start,stop,step)。range(start,stop,step)生成從start到stop-1的整數(shù)序列,步長為step。例如,range(0,10,2)表示序列0,2,4,6,8。再如,執(zhí)行代碼:

【例3-12】編寫程序,輸入一個正整數(shù)

n,計算并輸出從1到n之間所有奇數(shù)的和與所有偶數(shù)的和。

輸出結果:

上述示例設計了一個“奇偶分離求和器”程序,通過range()函數(shù)和for循環(huán)實現(xiàn)從1到n的整數(shù)序列處理。程序首先獲取用戶輸入的正整數(shù)n,初始化奇數(shù)和(odd_sum)與偶數(shù)和(even_sum)兩個累加器變量。核心部分使用range(1,n+1)生成1到n的連續(xù)整數(shù)序列,通過for循環(huán)遍歷每個數(shù)字,利用取余運算符%判斷奇偶性:當num%2==1時為奇數(shù),累加到odd_sum;否則為偶數(shù),累加到even_sum。循環(huán)結束后分別輸出奇數(shù)和與偶數(shù)和的結果。

3.3.2while循環(huán)

for循環(huán)主要用于已知迭代次數(shù)的場景,特別適合遍歷序列(如字符串、range對象)或集合中的元素。然而,在循環(huán)的初值和終值并不明確,但有清晰的循環(huán)條件時,采用while循環(huán)會更方便。while循環(huán)會一直執(zhí)行循環(huán)體內的代碼,直到指定的條件不再為真。while循環(huán)的一般語法結構如下:

這里的condition是一個條件表達式,它決定了循環(huán)是否繼續(xù)執(zhí)行。執(zhí)行while循環(huán)時,先求條件表達式condition的值,只要condition的值為True,循環(huán)就會繼續(xù);當condition變?yōu)镕alse時,循環(huán)停止。請注意,為避免無限循環(huán),while循環(huán)體中必須包含能使條件變?yōu)镕alse的更新語句。例如,執(zhí)行代碼:

得到輸出結果:01234。上述示例中,我們使用while循環(huán)來打印從0到4的數(shù)字。count變量作為計數(shù)器,初始值為0。每次循環(huán)迭代時,先打印當前的count值,然后將其增加1。當count的值達到5時,條件count<5不再為真,循環(huán)結束。這里計數(shù)器更新語句count+=1必須放在循環(huán)體內,否則會導致無限循環(huán)。顯然,while循環(huán)能實現(xiàn)for循環(huán)能實現(xiàn)的所有計算?!纠?-13】編寫程序,輸入一個正整數(shù)n,利用while循環(huán)計算并輸出從1到n之間所有奇數(shù)的和與所有偶數(shù)的和。

3.3.3break語句

在編寫循環(huán)程序時,我們常常需要改變循環(huán)的正常執(zhí)行流程:在某些條件下提前終止整個循環(huán),或者在某些情況下跳過當前迭代,直接進入下一次循環(huán)。這正是break和continue語句的用武之地。它們就像是循環(huán)中的“交通指揮”,幫助我們在特定條件下改變程序的執(zhí)行方向。

break語句用于立即終止當前循環(huán),跳出循環(huán)體,繼續(xù)執(zhí)行循環(huán)后面的代碼。

例如,執(zhí)行下面代碼:

當i的值達到3時,break語句會被執(zhí)行,for循環(huán)立刻被終止,因此只會打印出1和2。

【例3-14】編寫一個程序,輸入一個大于1的整數(shù)n,判斷n是否為素數(shù)。

【例3-15】神秘數(shù)字猜猜樂。編寫一個猜數(shù)字游戲程序:程序隨機生成一個1~100的整數(shù)作為神秘數(shù)字,玩家有最多7次猜測機會,每次猜測后,提示玩家“太大”“太小”或“恭喜猜中!”,如果猜中或用盡機會,顯示神秘數(shù)字并結束游戲。

【分析】該猜數(shù)字游戲的實現(xiàn)采用whileTrue循環(huán)配合break語句構建游戲主框架。

首先通過random.randint()生成1~100的隨機整數(shù)作為神秘數(shù)字,設置最大嘗試次數(shù)為7,初始化當前嘗試次數(shù)為0。

游戲主循環(huán)中:

①每次循環(huán)遞增嘗試次數(shù)并獲取玩家輸入;

②第一層條件判斷檢查是否猜中,若猜中則顯示成功信息并用break立即結束游戲;

③第二層條件提供"太大/太小"的實時反饋;

④第三層條件在嘗試次數(shù)達到上限時顯示失敗信息并用break終止游戲。注意:我們使用兩個break語句,一個在猜中時跳出,另一個在機會用盡時跳出。

#神秘數(shù)字猜猜樂3-15.py importrandom

#游戲初始化secretr=random.randint(1,100)max_attempts=7attempt=0

print("===歡迎來到猜數(shù)字游戲===")print(f"你有{max_attempts}次機會猜出1~100之間的神秘數(shù)字")

#游戲主循環(huán)whileTrue:attempt+=1guess=int(input(f"第{attempt}次猜測:"))

#檢查猜測結果ifguess==secret:print(f"恭喜猜中了!神秘數(shù)字是{secret}")break#猜中游戲,退出循環(huán)

elifguess<secret:print("太小了!")else:print("太大了!")

#檢查嘗試次數(shù)ifattempt>=max_attempts:print(f"機會用盡!神秘數(shù)字是{secret}")break#機會用完,退出循環(huán))

輸出結果:

3.3.4continue語句

continue語句用于結束當前輪的循環(huán),程序跳轉到循環(huán)頭部,然后根據(jù)頭部的要求繼續(xù)循環(huán)。它通常用于在滿足特定條件時跳過一些不需要執(zhí)行的代碼。

【例3-16】continue語句示例。當?shù)兞縤的值為3時,continue語句會生效,程序跳過當前迭代的print(i)操作,立即開始下一次迭代。因此,其輸出中不包含數(shù)字3。

continue語句和break語句使用場景如下:

1.?break

(1)當需要在找到某個條件或值后立即退出循環(huán)時。

(2)當循環(huán)內的某個條件不再滿足繼續(xù)執(zhí)行的需求時。

2.?continue

(1)當需要忽略當前迭代中的剩余代碼,并立即開始下一次迭代時。

(2)當有一個特定的條件不希望執(zhí)行循環(huán)體中的某些代碼時。

注意事項如下:

(1)合理使用break和continue可以提高代碼的效率和可讀性。

(2)濫用這些語句可能會導致代碼邏輯混亂,因此建議只在必要時使用它們,并確保其使用有明確的意圖。

3.3.5循環(huán)的嵌套

在Python程序中,循環(huán)不僅可以單獨使用,還可以嵌套在其他循環(huán)內部,形成多級循環(huán)結構。嵌套循環(huán)允許創(chuàng)建復雜的邏輯,以處理矩陣、列表集合或執(zhí)行重復任務的不同階段。

嵌套循環(huán)的語法與普通循環(huán)類似,但嵌套循環(huán)是在另一個循環(huán)的內部開始的。

【例3-17】嵌套循環(huán)示例。

【例3-18】打印9?×?9乘法表。

運行結果:1×1=1--------------------2×1=22×2=4--------------------(部分輸出結果省略)--------------------9×1=99×2=189×3=279×4=369×5=459×6=549×7=639×8=729×9=81--------------------

注意事項如下:

(1)避免無限嵌套。確保嵌套循環(huán)有明確的退出條件,以避免創(chuàng)建無限循環(huán)。

(2)保持可讀性。隨著嵌套層次的增加,代碼的可讀性可能會降低??紤]使用函數(shù)或循環(huán)控制語句來提高代碼的清晰度。

(3)性能考慮。嵌套循環(huán)可能會導致性能問題,尤其是在處理大數(shù)據(jù)集時。應確保循環(huán)邏輯盡可能高效。

在嵌套循環(huán)中,break和continue語句只影響最內層的循環(huán)。如果需要從外層循環(huán)中跳出,可以使用標簽(在支持的Python版本中)或重新組織代碼結構。

3.4random庫的使用

首先,在Python中,若需要使用他人預先寫好的一些功能,需要導入相對應的庫,這樣才能夠使用其中的函數(shù)。在Python中,導入庫使用import關鍵字。此處,我們需要導入random庫。

在導入random庫后,我們可以通過使用random庫中已經(jīng)預定義好的函數(shù)來完成一系列操作。

若要生成一個指定范圍內的隨機整數(shù),我們可以使用random.randint()函數(shù)。該函數(shù)接受兩個參數(shù),表示隨機數(shù)的范圍,包括最小值和最大值。

【例3-19】生成0到100之間的隨機整數(shù)。

如果需要生成一個指定范圍內的隨機浮點數(shù),可以使用random.uniform()函數(shù)。該函數(shù)接受兩個參數(shù),表示隨機數(shù)的范圍,包括最小值和最大值。

【例3-20】生成一個0到10(包括0和10)之間的隨機浮點數(shù)。

【例3-21】random()函數(shù)應用示例?!纠?-22】choice()函數(shù)示例。【例3-23】seed()函數(shù)應用示例。

3.5程序流程控制的應用實例

【例3-24】請編寫一個程序,接受用戶輸入的字符串a,并輸出其逆序后的結果。例如:a="olleh",則輸出hello。

【分析】我們可以使用循環(huán)結構來遍歷字符串,并將字符逆序存儲到另一個變量中。具體來說,我們可以從字符串的末尾開始逐個取出字符,并將其加到另一個變量中,從而實現(xiàn)字符的逆序輸出?!緟⒖即a】

通過使用for循環(huán)和range函數(shù),我們可以實現(xiàn)從字符串末尾開始逐個取出字符的操作。需要注意range函數(shù)的參數(shù)設置,起始索引為字符串長度減一,結束索引為?-1,步長為?-1,這樣可以實現(xiàn)倒序遍歷字符串的目的。在for循環(huán)中,我們使用加號操作符將逆序后的字符依次拼接到新的字符串中。這種方法在Python中是可行的,但需要注意,字符串拼接操作可能會導致性能損耗,尤其是當字符串很長時。

【例3-25】假設有多位顧客對一個產品的星級評價記錄如下:[1,5,6,4,2,3,1,2]。

(1)請編寫一個程序,打印出所有低于4星的評價。

(2)請編寫一個程序,在循環(huán)中跳過所有5星及以上的評價并打印出其余評價。

需要在一行中輸出,每個輸出之間使用空格分隔。

【分析】對于問題(1),可以使用for循環(huán)遍歷列表中的每個評價,然后使用if語句檢查是否小于4星,如果是,則打印出來。對于問題(2),同樣可以使用for循環(huán)遍歷列表,在循環(huán)中使用continue語句跳過所有大于等于5星的評價,然后打印出其余評價。

【參考代碼】

當程序執(zhí)行到continue語句時,會立即跳過本次循環(huán)中continue之后的代碼,并開始下一次循環(huán),這樣可以在滿足特定條件時跳過某些操作(在本例中即跳過所有5星及以上的評價),從而達到控制循環(huán)執(zhí)行的目的。此外,本題還要求在一行中輸出,并且每個輸出之間使用空格進行分隔,可通過設置print函數(shù)的end參數(shù)為""實現(xiàn)?!纠?-26】編寫一個程序來計算自然對數(shù)e的近似值,要求其誤差小于10-10。自然對數(shù)e可以通過級數(shù)展開來近似計算,常用的級數(shù)展開式為:。

【分析】這是一個級數(shù)計算的問題,當x=1時,這個級數(shù)變?yōu)椋海诿恳粋€子項中僅有分母發(fā)生變化。第n項時,分母為n!。要求誤差小于10-10,意味著我們需要保留足夠多的級數(shù)項,直到誤差小于10-10為止。【參考代碼】

#3-26.py#初始化e的近似值e_approx=1.0

#初始化級數(shù)項的值term=1.0

#初始化級數(shù)項的指數(shù)n=1

#計算直到誤差小于10的-10次方為止whileabs(term)>1e-10:#計算下一個級數(shù)項term/=n#加上下一個級數(shù)項到e的近似值e_approx+=term#更新級數(shù)項的指數(shù)n+=1

#輸出結果print("e的近似值為:",e_approx)運行結果:

上述例子中,通過使用while循環(huán)來計算e的近似值,直到級數(shù)項小于10-10為止。在每次的迭代中,都對級數(shù)項term進行更新,并更新n以計算下一個級數(shù)項。在此處,我們使用了科學計數(shù)法1e-10的形式來表示10-10,在Python中常用科學計數(shù)法來表示非常大或非常小的數(shù)字,其表示方法為使用字母e或E表示乘以10的次冪,如1e5表示1乘以10的5次方,即100000。請大家思考是否可以使用for循環(huán)實現(xiàn)計算e的近似值。

【例3-27】編寫一個程序,接受用戶輸入的一個正整數(shù),然后將該整數(shù)分解質因數(shù),并按照升序輸出。

【分析】因為2是最小的質數(shù),所以2可以作為我們開始嘗試的可能的質因數(shù)。接下來,我們使用一個循環(huán)從2開始來逐個數(shù)字嘗試是否是用戶輸入的正整數(shù)的因數(shù),直到該數(shù)字大于用戶輸入的正整數(shù)為止。在每次循環(huán)中,我們檢查當前的數(shù)字是否能整除用戶輸入的正整數(shù),如果是,則當前的數(shù)字是用戶輸入的正整數(shù)的一個質因數(shù)。我們打印出這個質因數(shù),并將用戶輸入的正整數(shù)更新為除去已找到的因數(shù)后的商。如果用戶輸入的正整數(shù)不等于1,則表示我們還沒有找到全部的質因數(shù),那么我們輸出一個乘號作為分隔,并繼續(xù)嘗試下一個數(shù)作為因數(shù)。這樣,最終輸出的結果就是將輸入的整數(shù)按照質因數(shù)分解的形式進行了因數(shù)分解?!緟⒖即a】

【例3-28】編寫一個程序,根據(jù)輸入的HTTP狀態(tài)碼匹配對應的含義并輸出。如果輸入的狀態(tài)碼是400,則輸出“Badrequest”;如果輸入的狀態(tài)碼是401,則輸出“Unauthorized”;如果輸入的狀態(tài)碼是403,則輸出“Forbidden”;如果輸入的狀態(tài)碼是404,則輸出“Notfound”;對于其他任何狀態(tài)碼,則輸出“Unknownstatuscode”。

【分析】根據(jù)輸入的HTTP狀態(tài)碼匹配對應的含義并輸出相應的信息。為了實現(xiàn)這個目標,我們可以使用matchcase結構,它可以更清晰地進行模式匹配和條件判斷。首先,我們接受用戶輸入的HTTP狀態(tài)碼,并將其存儲在一個變量中。然后,我們使用matchcase結構來匹配該狀態(tài)碼。這是Python3.10中新增的語法,可用于更清晰地進行模式匹配和條件判斷,在此前的Python版本中都是使用if…elif…else結構來實現(xiàn)類似的功能。

【參考代碼】運行結果:

【例3-29】編寫一個程序,接受

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論