大學(xué)Python學(xué)習(xí)課件第3講 條件表達(dá)式與分支結(jié)構(gòu)_第1頁
大學(xué)Python學(xué)習(xí)課件第3講 條件表達(dá)式與分支結(jié)構(gòu)_第2頁
大學(xué)Python學(xué)習(xí)課件第3講 條件表達(dá)式與分支結(jié)構(gòu)_第3頁
大學(xué)Python學(xué)習(xí)課件第3講 條件表達(dá)式與分支結(jié)構(gòu)_第4頁
大學(xué)Python學(xué)習(xí)課件第3講 條件表達(dá)式與分支結(jié)構(gòu)_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第3講條件表達(dá)式與分支結(jié)構(gòu)上海對外經(jīng)貿(mào)大學(xué)統(tǒng)計與信息學(xué)院第3講條件表達(dá)式與分支結(jié)構(gòu)上海對外經(jīng)貿(mào)大學(xué)內(nèi)容提要條件表達(dá)式分支控制語句單分支:if語句雙分支:if/else語句多分支:if/elif/else語句嵌套分支2022/11/162內(nèi)容提要條件表達(dá)式2022/11/102選擇結(jié)構(gòu)的基本問題【問題】如何判斷一個數(shù)是否為正數(shù)?FalseTrueX>0開始結(jié)束輸入x輸輸出“你輸入的是非正數(shù)”輸出“你輸入的是正數(shù)”3選擇結(jié)構(gòu)的基本問題【問題】如何判斷一個數(shù)是否為正數(shù)?Fals邏輯判斷與條件表達(dá)式選擇結(jié)構(gòu)程序根據(jù)條件表達(dá)式的值是True/非零/非空(字符串,列表,元組,集合),還是False/零/空(None,字符串,列表,元組,集合)做出決策,控制代碼塊的執(zhí)行由條件表達(dá)式的運算結(jié)果控制執(zhí)行的代碼塊邏輯判斷與條件表達(dá)式選擇結(jié)構(gòu)程序條件表達(dá)式典型的表達(dá)式一般由運算符和操作數(shù)/操作對象組成運算符:對操作數(shù)/操作對象進(jìn)行運算處理的符號操作數(shù)/操作對象:運算符處理的數(shù)據(jù)條件表達(dá)式中常用的運算符:算術(shù)運算符

:+,-,*,/,//,%,

**關(guān)系運算符

:>,<,==,

!=,<=,>=測試運算符:in,notin,is,isnot邏輯運算符:and,or,not5條件表達(dá)式典型的表達(dá)式一般由運算符和操作數(shù)/操作對象組成5回顧—算術(shù)運算2022/11/166運算符名稱說明例子+加正數(shù);一個數(shù)加上另一個數(shù);列表、元組、字符串的連接。+5表示一個正數(shù);2+3結(jié)果為5;"a"+"b"結(jié)果為"ab"。-減負(fù)數(shù);相反數(shù);一個數(shù)減去另一個數(shù);集合差集。-5表示一個負(fù)數(shù);5的相反數(shù)是-5;10-2結(jié)果為8;{1,2,3}-{2,5}結(jié)果為{1,3}。*乘兩個數(shù)相乘;被重復(fù)若干次的序列2*3得到6;"a"*3得到"aaa";。**冪x的y次冪2**3結(jié)果為8(即2*2*2)。/真除法x除以y5/3結(jié)果為1.6666666666666667。//求整商取商的整數(shù)部分;如果操作數(shù)中有實數(shù),結(jié)果為實數(shù)形式的整數(shù)5//3結(jié)果為1;5.0//3結(jié)果為1.0;5.999//3結(jié)果為1.0;15//4結(jié)果為3;-15//4結(jié)果為-4。%取模取除法的余數(shù)5%3結(jié)果為2;

5.0%3結(jié)果為2.0;15%4結(jié)果為3;-15%4結(jié)果為1。回顧—算術(shù)運算2022/11/106運算符名稱說明例子+加正表達(dá)式與表達(dá)式的值算術(shù)表達(dá)式及值算術(shù)運算符:+,-,*,/,//,%,

**運算結(jié)果是數(shù)值型算術(shù)表達(dá)式示例 3+2 7%3 3**2 7表達(dá)式與表達(dá)式的值算術(shù)表達(dá)式及值7回顧—布爾比較運算8運算符名稱說明例子<

小于判斷x是否小于y,如果真返回True,假返回False。5<3返回False;3<5返回True;也可以被任意連接:3<5<7返回True。>

大于判斷x是否大于y5>3返回True。<=小于等于判斷x是否小于等于yx=3;y=5;x<=y返回True。>=大于等于判斷x是否大于等于yx=3;y=5;x>=y返回False。==等于比較對象是否相等x=3;y=3;x==y返回True;x="abc";y="Abc";x==y返回False;x="abc";y="abc";x==y返回True。!=不等于比較兩個對象是否不相等x=3;y=5;x!=y返回True。<

小于判斷x是否小于y,如果真返回True,假返回False。5<3返回False;3<5返回True;也可以被任意連接:3<5<7返回True?;仡櫋紶柋容^運算8運算符名稱說明例子<

小于判斷x是否小于表達(dá)式與表達(dá)式的值關(guān)系表達(dá)式及值關(guān)系運算符:>,<,==,

!=,<>,<=,>=進(jìn)行比較的對象可以是數(shù)值、字符串、列表、元組和字典運算結(jié)果是布爾值:True或False。關(guān)系表達(dá)式示例9表達(dá)式與表達(dá)式的值關(guān)系表達(dá)式及值9ord('a')返回ASCII碼chr(97)返回字符字符串的大小比較參照其ascii碼的大小ord('a')返回ASCII碼字符串的大小比較參照其asc表達(dá)式與表達(dá)式的值測試表達(dá)式及值測試運算符:in,

notin,

is,

isnot運算結(jié)果是布爾值:True或False測試表達(dá)式示例#a,b都引用同一對象,因而是相同的#a,b引用不同對象,雖然相等,但并不相同11成員測試同一性測試表達(dá)式與表達(dá)式的值測試表達(dá)式及值#a,b都引用同一對象,因而回顧—邏輯運算12運算符名稱說明例子not布爾“非”x為True,它返回False;x為False,它返回True。x=True;notx返回False。and布爾“與”x為False,xandy返回False,否則它返回y的計算值。x=False;y=True;xandy,由于x是False,返回False;yand4,返回4。or布爾“或”x是True,它返回True,否則它返回y的計算值。x=True;y=False;xory返回True;yor4,返回4。回顧—邏輯運算12運算符名稱說明例子not布爾“非”x為Tr表達(dá)式與表達(dá)式的值邏輯表達(dá)式及值邏輯運算符:and

or

not運算規(guī)則與結(jié)果如下:邏輯表達(dá)式示例:13思考:3and03or0AandB:若A的計算結(jié)果為True/非零數(shù)/非空(字符串、列表、元組、字典…),直接返回B的計算結(jié)果。若A的計算結(jié)果為False/0/None/空(字符串、列表、元組、字典…),直接返回A的計算結(jié)果。AorB:若A的計算結(jié)果為True/非零數(shù)/非空(字符串、列表、元組、字典…),直接返回A的計算結(jié)果。若A的計算結(jié)果為False/0/None/空(字符串、列表、元組、字典…),直接返回B的計算結(jié)果。notA:若A為False/0/None/空(字符串、列表、元組、字典…),返回True若A為True/非零數(shù)/非空(字符串、列表、元組、字典…),返回False表達(dá)式與表達(dá)式的值邏輯表達(dá)式及值13思考:3and0A復(fù)合條件表達(dá)式及值當(dāng)一個判斷需考慮兩個或兩個以上的條件時,需要對條件進(jìn)行合理的邏輯組合運算一個表達(dá)式中出現(xiàn)多種運算符時,按運算符的優(yōu)先級高低依次進(jìn)行運算。出現(xiàn)小括號()運算級別最高。**邏輯型<測試型<關(guān)系型<算術(shù)型<()復(fù)合條件表達(dá)式及值當(dāng)一個判斷需考慮兩個或兩個以上的條件時,需示例1-復(fù)合表達(dá)式構(gòu)造將下列說法表示為相應(yīng)的表達(dá)式成績score在90~100或50~60之間?年齡age在25歲~30歲之間且專業(yè)subject是計算機(jī)或是電子信息工程專業(yè)?25<=age<=30andsubjectin[‘計算機(jī)’,’電子信息工程’]思考題:第二個表達(dá)式換一種表達(dá)方式注意:表示兩者關(guān)系相等用“==”,而非“=”,初學(xué)者極易出錯25<=age<=30and(subject==‘計算機(jī)’orsubject==’電子信息工程’)90

<=

score

<=

100

or

50

<=

score

<=60示例1-復(fù)合表達(dá)式構(gòu)造將下列說法表示為相應(yīng)的表達(dá)式25<=a3.1分支結(jié)構(gòu)控制語句Python的分支控制語句,即根據(jù)表達(dá)式的判斷結(jié)果,選擇運行程序的其中一個分支。Python的分支結(jié)構(gòu)控制語句有以下幾種形式:單分支:if語句雙分支:if/else語句多分支:if/elif/else語句2022/11/16163.1分支結(jié)構(gòu)控制語句Python的分支控制語句,即根據(jù)單分支if語句單分支if語句結(jié)構(gòu)先判斷條件表達(dá)式值的真或假如果判斷的結(jié)果為真(非零、非空),則執(zhí)行語句體中的操作;如果為假(零、空),則不執(zhí)行語句體中的操作。其語法形式如下所示,注意冒號和縮進(jìn):if表達(dá)式:語句體2022/11/1617單分支if語句單分支if語句結(jié)構(gòu)先判斷條件表達(dá)式值的真或假2【例3-1】從鍵盤輸入圓的半徑,如果半徑大于等于0,則計算并輸出圓的面積和周長。程序代碼:2022/11/1618【例3-1】從鍵盤輸入圓的半徑,如果半徑大于等于0,則計算并【例3-1】續(xù)程序測試:運行程序,請首先輸入一個大于等于0的半徑,如5,觀察程序的運行結(jié)果。再次運行程序,請輸入一個小于0的半徑,如-1,觀察程序的運行結(jié)果。程序運行結(jié)果:2022/11/1619【例3-1】續(xù)程序測試:2022/11/1019思考3-1:如果程序編寫如下,會產(chǎn)生怎樣的結(jié)果。2022/11/1620觀察eg3_1.py和si3_1.py程序運行結(jié)果的異同思考:對于單分支結(jié)構(gòu)的程序,如何設(shè)計測試數(shù)據(jù)以驗證程序流程上沒有錯誤。思考3-1:如果程序編寫如下,會產(chǎn)生怎樣的結(jié)果。2022/1if/else語句if/else語句是一種雙分支結(jié)構(gòu)。先判斷條件表達(dá)式值的真或假如果判斷的結(jié)果為真(非零、非空),則執(zhí)行語句體1中的操作;如果為假(零、空),則執(zhí)行語句體2中的操作。語句體1和語句體2,既可以包含多條語句,也可以只由一條語句組成。其語法形式如下所示,注意冒號和縮進(jìn):if表達(dá)式:語句體1else:

語句體22022/11/1621if/else語句if/else語句是一種雙分支結(jié)構(gòu)。202【例3-2】從鍵盤輸入年份t,如果年份t能被400整除,或者能被4整除但不能被100整除,則輸出“t年是閏年”,否則輸出“t年不是閏年”,t用輸入的年份代替。程序代碼:2022/11/1622【例3-2】從鍵盤輸入年份t,如果年份t能被400整除,或者【例3-2】續(xù)程序測試:運行程序,請首先輸入年份1996,觀察程序的運行結(jié)果。再次運行程序,請輸入年份2000,觀察程序的運行結(jié)果。再次運行程序,請輸入年份2003,觀察程序的運行結(jié)果。程序運行結(jié)果:2022/11/1623思考只給一個年份值進(jìn)行測試能否說明程序流程無誤。在用復(fù)雜的條件表達(dá)式進(jìn)行判斷時,應(yīng)該怎樣設(shè)計測試數(shù)據(jù),以驗證你的程序流程是正確的?!纠?-2】續(xù)程序測試:2022/11/1023思考if/elif/else語句if/elif/else語句是一種多分支結(jié)構(gòu)。先判斷表達(dá)式1的真或假如果表達(dá)式1的結(jié)果為真(非零、非空),則執(zhí)行語句體1中的操作;如果為假(零、空),則繼續(xù)判斷表達(dá)式2的真或假如果表達(dá)式2的結(jié)果為真(非零、非空),則執(zhí)行語句體2中的操作;如果為假(零、空),則繼續(xù)判斷表達(dá)式3的真或假,……。語句體1,語句體2,……,語句體n,既可以包含多條語句,也可以只由一條語句組成。2022/11/1624if/elif/else語句if/elif/else語句是一if/elif/else語句的語法形式if表達(dá)式1:語句體1elif表達(dá)式2:

語句體2……elif表達(dá)式n-1:語句體n-1else:語句體n2022/11/1625if/elif/else語句的語法形式if表達(dá)式1:20【例3-3】從鍵盤輸入訂貨量。根據(jù)訂貨量大小,價格(假設(shè)給定價格為10)給以不同的折扣,計算應(yīng)付貨款(應(yīng)付貨款=訂貨量×價格×(1-折扣))。訂貨量500以下,折扣為3%;訂貨量500及以上,1000以下,折扣5%;訂貨量1000及以上,2000以下,折扣8%;訂貨量2000及以上,折扣10%。分析:設(shè)定價格變量Price=10訂貨量變量Quantity依照上述標(biāo)準(zhǔn)進(jìn)行判斷得到折扣值。注意,還需要考慮訂貨量小于0的情況。2022/11/1626【例3-3】從鍵盤輸入訂貨量。根據(jù)訂貨量大小,價格(假設(shè)給定【例3-3】續(xù)2022/11/1627【例3-3】續(xù)2022/11/1027【例3-3】續(xù)程序測試:運行程序,請首先輸入訂貨量-100,觀察程序的運行結(jié)果。再次運行程序,請輸入訂貨量700,觀察程序的運行結(jié)果。程序運行結(jié)果:思考需要輸入多少個訂貨量測試數(shù)據(jù),才能驗證程序的每個分支都是正確的?2022/11/1628【例3-3】續(xù)程序測試:2022/11/1028選擇結(jié)構(gòu)嵌套在某一個分支的語句體中,又嵌套新的分支結(jié)構(gòu),這種情況稱為選擇結(jié)構(gòu)的嵌套。選擇結(jié)構(gòu)的嵌套形式因問題不同而千差萬別,因此分析透徹每一個分支的邏輯情況是編寫程序的基礎(chǔ)。2022/11/1629選擇結(jié)構(gòu)嵌套在某一個分支的語句體中,又嵌套新的分支結(jié)構(gòu),這種【例3-4】輸入客戶類型、貨品價格和訂貨量。根據(jù)客戶類型(大于5為新客戶,小于等于5老客戶)和訂貨量給予不同的折扣,計算應(yīng)付貨款:應(yīng)付貨款=訂貨量×價格×(1-折扣)。如果是新客戶:訂貨量800以下,沒有折扣;否則折扣為2%。如果是老客戶:訂貨量500以下,折扣為3%;訂貨量500及以上,1000以下,折扣5%;訂貨量1000及以上,2000以下,折扣8%;訂貨量2000及以上,折扣10%。請繪制流程圖,并編寫程序。2022/11/1630【例3-4】輸入客戶類型、貨品價格和訂貨量。2022/11/【例3-4】續(xù)分析:輸入數(shù)據(jù)后,應(yīng)首先對客戶類型、價格和訂貨量的輸入值進(jìn)行簡單判斷,是否大于0,大于0,才開始做應(yīng)付貨款的計算,否則提示輸入數(shù)據(jù)錯誤。2022/11/1631【例3-4】續(xù)分析:2022/11/1031【例3-4】續(xù)2022/11/1632【例3-4】續(xù)2022/11/1032【例3-4】續(xù)程序測試:運行程序,請首先輸入新客戶4,貨品價格10,訂貨量700,觀察程序的運行結(jié)果。再次運行程序,輸入老客戶6,貨品價格10,訂貨量700,觀察程序的運行結(jié)果。程序運行結(jié)果:思考需要輸入多少組測試數(shù)據(jù),才能驗證程序的每個分支都是正確的?利用列表數(shù)據(jù)結(jié)構(gòu)改寫程序,輸入若干個客戶的上述信息,統(tǒng)計新客戶人數(shù)和老客戶人數(shù),新客戶的平均折扣、平均訂貨量和平均應(yīng)付款額,老客戶的平均折扣、平均訂貨量和平均應(yīng)付款額。(學(xué)完列表后完成)2022/11/1633【例3-4】續(xù)程序測試:2022/11/10333.4小結(jié)條件表達(dá)式Python用于分支結(jié)構(gòu)的控制語句if、if/else、if/elif/else和選擇結(jié)構(gòu)嵌套。結(jié)合具體程序介紹了在測試分支結(jié)構(gòu)的程序時應(yīng)該如何設(shè)計測試數(shù)據(jù)。以及時發(fā)現(xiàn)不同于順序程序設(shè)計的邏輯錯誤。2022/11/16343.4小結(jié)條件表達(dá)式2022/11/1034課堂練習(xí)與課后作業(yè)課后作業(yè)1.從鍵盤接收一百分制成績(0~100,輸入均為整數(shù)),要求輸出其對應(yīng)的成績等級A~E。其中,90分(包含)以上為'A',80~89(均包含)分為'B',70~79(均包含)分為'C',60~69(均包含)分為'D',60分以下為'E'。(學(xué)號_exam3_1.py)2.生成支付寶支付的獎勵金:從鍵盤輸入消費金額,如果消費金額大于3元,則生成1個1至10元的隨機(jī)數(shù)獎勵,否則輸出“獎勵為0元!”。程序保存成學(xué)號_exam3_2.py。3.輸入消費總額,判斷客戶類型:如果消費總額>=10萬,為白金卡客戶;如果消費總額>=5萬小于10萬,金卡客戶;如果消費總額>=3萬小于5萬,銀卡;總金額<3萬,普卡。程序保存成學(xué)號_exam3_3.py。2022/11/1635課堂練習(xí)與課后作業(yè)課后作業(yè)2022/11/1035課堂練習(xí)與課后作業(yè)挑戰(zhàn)題:1.輸入一個時間(小時:分鐘:秒),輸出該時間經(jīng)過5分30秒后的時間。2.利用選擇結(jié)構(gòu)嵌套,實現(xiàn)某企業(yè)為職工發(fā)放獎金的程序:

(1)如果是入職超過5年:銷售業(yè)績<5000元的員工,獎金比例為0;銷售業(yè)績>=5000元的員工,獎金比例為0.05;銷售業(yè)績>=10000元的員工,獎金比例為0.1;銷售業(yè)績>=

15000元的員工,獎金比例為0.15。(2)如果是入職小于5年:銷售比例>4000的員工,獎金比例為0.045;否則為0.01。輸入入職年限、銷售業(yè)績計算獎金并輸出。2022/11/1636課堂練習(xí)與課后作業(yè)挑戰(zhàn)題:2022/11/10362022/11/16372022/11/1037第3講條件表達(dá)式與分支結(jié)構(gòu)上海對外經(jīng)貿(mào)大學(xué)統(tǒng)計與信息學(xué)院第3講條件表達(dá)式與分支結(jié)構(gòu)上海對外經(jīng)貿(mào)大學(xué)內(nèi)容提要條件表達(dá)式分支控制語句單分支:if語句雙分支:if/else語句多分支:if/elif/else語句嵌套分支2022/11/1639內(nèi)容提要條件表達(dá)式2022/11/102選擇結(jié)構(gòu)的基本問題【問題】如何判斷一個數(shù)是否為正數(shù)?FalseTrueX>0開始結(jié)束輸入x輸輸出“你輸入的是非正數(shù)”輸出“你輸入的是正數(shù)”40選擇結(jié)構(gòu)的基本問題【問題】如何判斷一個數(shù)是否為正數(shù)?Fals邏輯判斷與條件表達(dá)式選擇結(jié)構(gòu)程序根據(jù)條件表達(dá)式的值是True/非零/非空(字符串,列表,元組,集合),還是False/零/空(None,字符串,列表,元組,集合)做出決策,控制代碼塊的執(zhí)行由條件表達(dá)式的運算結(jié)果控制執(zhí)行的代碼塊邏輯判斷與條件表達(dá)式選擇結(jié)構(gòu)程序條件表達(dá)式典型的表達(dá)式一般由運算符和操作數(shù)/操作對象組成運算符:對操作數(shù)/操作對象進(jìn)行運算處理的符號操作數(shù)/操作對象:運算符處理的數(shù)據(jù)條件表達(dá)式中常用的運算符:算術(shù)運算符

:+,-,*,/,//,%,

**關(guān)系運算符

:>,<,==,

!=,<=,>=測試運算符:in,notin,is,isnot邏輯運算符:and,or,not42條件表達(dá)式典型的表達(dá)式一般由運算符和操作數(shù)/操作對象組成5回顧—算術(shù)運算2022/11/1643運算符名稱說明例子+加正數(shù);一個數(shù)加上另一個數(shù);列表、元組、字符串的連接。+5表示一個正數(shù);2+3結(jié)果為5;"a"+"b"結(jié)果為"ab"。-減負(fù)數(shù);相反數(shù);一個數(shù)減去另一個數(shù);集合差集。-5表示一個負(fù)數(shù);5的相反數(shù)是-5;10-2結(jié)果為8;{1,2,3}-{2,5}結(jié)果為{1,3}。*乘兩個數(shù)相乘;被重復(fù)若干次的序列2*3得到6;"a"*3得到"aaa";。**冪x的y次冪2**3結(jié)果為8(即2*2*2)。/真除法x除以y5/3結(jié)果為1.6666666666666667。//求整商取商的整數(shù)部分;如果操作數(shù)中有實數(shù),結(jié)果為實數(shù)形式的整數(shù)5//3結(jié)果為1;5.0//3結(jié)果為1.0;5.999//3結(jié)果為1.0;15//4結(jié)果為3;-15//4結(jié)果為-4。%取模取除法的余數(shù)5%3結(jié)果為2;

5.0%3結(jié)果為2.0;15%4結(jié)果為3;-15%4結(jié)果為1?;仡櫋阈g(shù)運算2022/11/106運算符名稱說明例子+加正表達(dá)式與表達(dá)式的值算術(shù)表達(dá)式及值算術(shù)運算符:+,-,*,/,//,%,

**運算結(jié)果是數(shù)值型算術(shù)表達(dá)式示例 3+2 7%3 3**2 44表達(dá)式與表達(dá)式的值算術(shù)表達(dá)式及值7回顧—布爾比較運算45運算符名稱說明例子<

小于判斷x是否小于y,如果真返回True,假返回False。5<3返回False;3<5返回True;也可以被任意連接:3<5<7返回True。>

大于判斷x是否大于y5>3返回True。<=小于等于判斷x是否小于等于yx=3;y=5;x<=y返回True。>=大于等于判斷x是否大于等于yx=3;y=5;x>=y返回False。==等于比較對象是否相等x=3;y=3;x==y返回True;x="abc";y="Abc";x==y返回False;x="abc";y="abc";x==y返回True。!=不等于比較兩個對象是否不相等x=3;y=5;x!=y返回True。<

小于判斷x是否小于y,如果真返回True,假返回False。5<3返回False;3<5返回True;也可以被任意連接:3<5<7返回True。回顧—布爾比較運算8運算符名稱說明例子<

小于判斷x是否小于表達(dá)式與表達(dá)式的值關(guān)系表達(dá)式及值關(guān)系運算符:>,<,==,

!=,<>,<=,>=進(jìn)行比較的對象可以是數(shù)值、字符串、列表、元組和字典運算結(jié)果是布爾值:True或False。關(guān)系表達(dá)式示例46表達(dá)式與表達(dá)式的值關(guān)系表達(dá)式及值9ord('a')返回ASCII碼chr(97)返回字符字符串的大小比較參照其ascii碼的大小ord('a')返回ASCII碼字符串的大小比較參照其asc表達(dá)式與表達(dá)式的值測試表達(dá)式及值測試運算符:in,

notin,

is,

isnot運算結(jié)果是布爾值:True或False測試表達(dá)式示例#a,b都引用同一對象,因而是相同的#a,b引用不同對象,雖然相等,但并不相同48成員測試同一性測試表達(dá)式與表達(dá)式的值測試表達(dá)式及值#a,b都引用同一對象,因而回顧—邏輯運算49運算符名稱說明例子not布爾“非”x為True,它返回False;x為False,它返回True。x=True;notx返回False。and布爾“與”x為False,xandy返回False,否則它返回y的計算值。x=False;y=True;xandy,由于x是False,返回False;yand4,返回4。or布爾“或”x是True,它返回True,否則它返回y的計算值。x=True;y=False;xory返回True;yor4,返回4?;仡櫋壿嬤\算12運算符名稱說明例子not布爾“非”x為Tr表達(dá)式與表達(dá)式的值邏輯表達(dá)式及值邏輯運算符:and

or

not運算規(guī)則與結(jié)果如下:邏輯表達(dá)式示例:50思考:3and03or0AandB:若A的計算結(jié)果為True/非零數(shù)/非空(字符串、列表、元組、字典…),直接返回B的計算結(jié)果。若A的計算結(jié)果為False/0/None/空(字符串、列表、元組、字典…),直接返回A的計算結(jié)果。AorB:若A的計算結(jié)果為True/非零數(shù)/非空(字符串、列表、元組、字典…),直接返回A的計算結(jié)果。若A的計算結(jié)果為False/0/None/空(字符串、列表、元組、字典…),直接返回B的計算結(jié)果。notA:若A為False/0/None/空(字符串、列表、元組、字典…),返回True若A為True/非零數(shù)/非空(字符串、列表、元組、字典…),返回False表達(dá)式與表達(dá)式的值邏輯表達(dá)式及值13思考:3and0A復(fù)合條件表達(dá)式及值當(dāng)一個判斷需考慮兩個或兩個以上的條件時,需要對條件進(jìn)行合理的邏輯組合運算一個表達(dá)式中出現(xiàn)多種運算符時,按運算符的優(yōu)先級高低依次進(jìn)行運算。出現(xiàn)小括號()運算級別最高。**邏輯型<測試型<關(guān)系型<算術(shù)型<()復(fù)合條件表達(dá)式及值當(dāng)一個判斷需考慮兩個或兩個以上的條件時,需示例1-復(fù)合表達(dá)式構(gòu)造將下列說法表示為相應(yīng)的表達(dá)式成績score在90~100或50~60之間?年齡age在25歲~30歲之間且專業(yè)subject是計算機(jī)或是電子信息工程專業(yè)?25<=age<=30andsubjectin[‘計算機(jī)’,’電子信息工程’]思考題:第二個表達(dá)式換一種表達(dá)方式注意:表示兩者關(guān)系相等用“==”,而非“=”,初學(xué)者極易出錯25<=age<=30and(subject==‘計算機(jī)’orsubject==’電子信息工程’)90

<=

score

<=

100

or

50

<=

score

<=60示例1-復(fù)合表達(dá)式構(gòu)造將下列說法表示為相應(yīng)的表達(dá)式25<=a3.1分支結(jié)構(gòu)控制語句Python的分支控制語句,即根據(jù)表達(dá)式的判斷結(jié)果,選擇運行程序的其中一個分支。Python的分支結(jié)構(gòu)控制語句有以下幾種形式:單分支:if語句雙分支:if/else語句多分支:if/elif/else語句2022/11/16533.1分支結(jié)構(gòu)控制語句Python的分支控制語句,即根據(jù)單分支if語句單分支if語句結(jié)構(gòu)先判斷條件表達(dá)式值的真或假如果判斷的結(jié)果為真(非零、非空),則執(zhí)行語句體中的操作;如果為假(零、空),則不執(zhí)行語句體中的操作。其語法形式如下所示,注意冒號和縮進(jìn):if表達(dá)式:語句體2022/11/1654單分支if語句單分支if語句結(jié)構(gòu)先判斷條件表達(dá)式值的真或假2【例3-1】從鍵盤輸入圓的半徑,如果半徑大于等于0,則計算并輸出圓的面積和周長。程序代碼:2022/11/1655【例3-1】從鍵盤輸入圓的半徑,如果半徑大于等于0,則計算并【例3-1】續(xù)程序測試:運行程序,請首先輸入一個大于等于0的半徑,如5,觀察程序的運行結(jié)果。再次運行程序,請輸入一個小于0的半徑,如-1,觀察程序的運行結(jié)果。程序運行結(jié)果:2022/11/1656【例3-1】續(xù)程序測試:2022/11/1019思考3-1:如果程序編寫如下,會產(chǎn)生怎樣的結(jié)果。2022/11/1657觀察eg3_1.py和si3_1.py程序運行結(jié)果的異同思考:對于單分支結(jié)構(gòu)的程序,如何設(shè)計測試數(shù)據(jù)以驗證程序流程上沒有錯誤。思考3-1:如果程序編寫如下,會產(chǎn)生怎樣的結(jié)果。2022/1if/else語句if/else語句是一種雙分支結(jié)構(gòu)。先判斷條件表達(dá)式值的真或假如果判斷的結(jié)果為真(非零、非空),則執(zhí)行語句體1中的操作;如果為假(零、空),則執(zhí)行語句體2中的操作。語句體1和語句體2,既可以包含多條語句,也可以只由一條語句組成。其語法形式如下所示,注意冒號和縮進(jìn):if表達(dá)式:語句體1else:

語句體22022/11/1658if/else語句if/else語句是一種雙分支結(jié)構(gòu)。202【例3-2】從鍵盤輸入年份t,如果年份t能被400整除,或者能被4整除但不能被100整除,則輸出“t年是閏年”,否則輸出“t年不是閏年”,t用輸入的年份代替。程序代碼:2022/11/1659【例3-2】從鍵盤輸入年份t,如果年份t能被400整除,或者【例3-2】續(xù)程序測試:運行程序,請首先輸入年份1996,觀察程序的運行結(jié)果。再次運行程序,請輸入年份2000,觀察程序的運行結(jié)果。再次運行程序,請輸入年份2003,觀察程序的運行結(jié)果。程序運行結(jié)果:2022/11/1660思考只給一個年份值進(jìn)行測試能否說明程序流程無誤。在用復(fù)雜的條件表達(dá)式進(jìn)行判斷時,應(yīng)該怎樣設(shè)計測試數(shù)據(jù),以驗證你的程序流程是正確的。【例3-2】續(xù)程序測試:2022/11/1023思考if/elif/else語句if/elif/else語句是一種多分支結(jié)構(gòu)。先判斷表達(dá)式1的真或假如果表達(dá)式1的結(jié)果為真(非零、非空),則執(zhí)行語句體1中的操作;如果為假(零、空),則繼續(xù)判斷表達(dá)式2的真或假如果表達(dá)式2的結(jié)果為真(非零、非空),則執(zhí)行語句體2中的操作;如果為假(零、空),則繼續(xù)判斷表達(dá)式3的真或假,……。語句體1,語句體2,……,語句體n,既可以包含多條語句,也可以只由一條語句組成。2022/11/1661if/elif/else語句if/elif/else語句是一if/elif/else語句的語法形式if表達(dá)式1:語句體1elif表達(dá)式2:

語句體2……elif表達(dá)式n-1:語句體n-1else:語句體n2022/11/1662if/elif/else語句的語法形式if表達(dá)式1:20【例3-3】從鍵盤輸入訂貨量。根據(jù)訂貨量大小,價格(假設(shè)給定價格為10)給以不同的折扣,計算應(yīng)付貨款(應(yīng)付貨款=訂貨量×價格×(1-折扣))。訂貨量500以下,折扣為3%;訂貨量500及以上,1000以下,折扣5%;訂貨量1000及以上,2000以下,折扣8%;訂貨量2000及以上,折扣10%。分析:設(shè)定價格變量Price=10訂貨量變量Quantity依照上述標(biāo)準(zhǔn)進(jìn)行判斷得到折扣值。注意,還需要考慮訂貨量小于0的情況。2022/11/1663【例3-3】從鍵盤輸入訂貨量。根據(jù)訂貨量大小,價格(假設(shè)給定【例3-3】續(xù)2022/11/1664【例3-3】續(xù)2022/11/1027【例3-3】續(xù)程序測試:運行程序,請首先輸入訂貨量-100,觀察程序的運行結(jié)果。再次運行程序,請輸入訂貨量700,觀察程序的運行結(jié)果。程序運行結(jié)果:思考需要輸入多少個訂貨量測試數(shù)據(jù),才能驗證程序的每個分支都是正確的?2022/11/1665【例3-3】續(xù)程序測試:2022/11/1028選擇結(jié)構(gòu)嵌套在某一個分支的語句體中,又嵌套新的分支結(jié)構(gòu),這種情況稱為選擇結(jié)構(gòu)的嵌套。選擇結(jié)構(gòu)的嵌套形式因問題不同而千差萬別,因此分析透徹每一個分支的邏輯情況是編寫程序的基礎(chǔ)。2022/11/1666選擇結(jié)構(gòu)嵌套在某一個分支的語句體中,又嵌套新的分支結(jié)構(gòu),這種【例3-4】輸入客戶類型、貨品價格和訂貨量。根據(jù)客戶類型(大于5為新客戶,小于等于5老客戶)和訂貨量給予不同的折扣,計算應(yīng)付貨款:應(yīng)付貨款=訂貨量×價格×(1-折扣)。如果是新客戶:訂貨量800以下,沒有折扣;否則折扣為2%。如果是老客戶:訂貨量

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論