Python基礎(chǔ)教程--05第五章條件、循環(huán)和其他語(yǔ)句_第1頁(yè)
Python基礎(chǔ)教程--05第五章條件、循環(huán)和其他語(yǔ)句_第2頁(yè)
Python基礎(chǔ)教程--05第五章條件、循環(huán)和其他語(yǔ)句_第3頁(yè)
Python基礎(chǔ)教程--05第五章條件、循環(huán)和其他語(yǔ)句_第4頁(yè)
Python基礎(chǔ)教程--05第五章條件、循環(huán)和其他語(yǔ)句_第5頁(yè)
已閱讀5頁(yè),還剩60頁(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)介

1、第五章 條件、循環(huán)和其它PythonContents目錄print,import賦值魔法語(yǔ)句塊條件和條件語(yǔ)句循環(huán)列表推導(dǎo)式三人行小結(jié)printprint和和importimport0101 print的逗號(hào)輸出 import 導(dǎo)入模塊 導(dǎo)入函數(shù) 導(dǎo)入腳本運(yùn)行 腳本與命令行交互賦值魔法賦值魔法0202序列解包 x,y,z=1,2,3 values=1,2,3 函數(shù)返回值,允許返回多個(gè)值,要求賦值符號(hào)兩邊的變量數(shù)量一致 stu=name:Robin,girlfriend:Marion key,賦值 鏈?zhǔn)劫x值 tst=yst=1,2,3 增量賦值 y+=10語(yǔ)句塊語(yǔ)句塊0303語(yǔ)句塊 縮排 默認(rèn)是4

2、個(gè)空格 示例:條件和條件語(yǔ)句條件和條件語(yǔ)句0404布爾變量 false: False,0,空值(Null、空字符串,所有為空類型) 測(cè)試布爾值函數(shù)bool()條件執(zhí)行和if語(yǔ)句 name=raw_input(What is your name?) if name.endswith(Ray) print Hello, Mr. Rayelse 任意輸入三個(gè)英文單詞,按字典順序輸出。 elseif P71頁(yè)嵌套代碼塊 復(fù)合語(yǔ)句 嵌套語(yǔ)句條件運(yùn)算 關(guān)系運(yùn)算符 is:同一性運(yùn)算符 字符串和序列比較 布爾運(yùn)算符(and, or, not) 注意:連接比較 a=y=90分;B:90score=80;C:80

3、score=70;D:70score=60;E: score=90: printAelif 90score=80: print Belif 80score=70: print Celif 70score=60: print Delse: print E循環(huán)循環(huán)0505程序設(shè)計(jì)的3種基本結(jié)構(gòu) 順序結(jié)構(gòu) 是指程序流程按先后順序執(zhí)行,只有執(zhí)行了前一步,才能執(zhí)行后一步。例如火車在軌道上行駛,只有過(guò)了上一站點(diǎn)才能到達(dá)下一站點(diǎn)。 選擇結(jié)構(gòu) 又稱分支結(jié)構(gòu),是指程序流程可以分幾條路徑執(zhí)行。例如在一個(gè)十字路口處,可以選擇向東、南、西、北幾個(gè)方向行走。 循環(huán)結(jié)構(gòu) 又稱重復(fù)結(jié)構(gòu),是指程序流程重復(fù)執(zhí)行某一段代碼。例如

4、萬(wàn)米跑,圍著足球場(chǎng)跑道不停地跑,直到滿足條件時(shí)(25圈)才停下來(lái)。語(yǔ)句語(yǔ)句A語(yǔ)句語(yǔ)句B順序結(jié)構(gòu)順序結(jié)構(gòu)流程圖流程圖條件判斷條件判斷語(yǔ)句語(yǔ)句A真真語(yǔ)句語(yǔ)句B假假選擇結(jié)構(gòu)選擇結(jié)構(gòu)流程圖流程圖條件判斷條件判斷循環(huán)體循環(huán)體真真假假循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)流程圖流程圖3種基本結(jié)構(gòu)的流程圖種基本結(jié)構(gòu)的流程圖【問(wèn)題】 用戶輸入若干個(gè)分?jǐn)?shù),求所有分?jǐn)?shù)的平均分。每輸入一個(gè)分?jǐn)?shù)后詢問(wèn)是否繼續(xù)輸入下一個(gè)分?jǐn)?shù),回答“yes”就繼續(xù)輸入下一個(gè)分?jǐn)?shù),回答“no”就停止輸入分?jǐn)?shù)。分析:該問(wèn)題需要輸入若干分?jǐn)?shù)并求和,這是一個(gè)重復(fù)的過(guò)程,應(yīng)使用循環(huán)結(jié)構(gòu)解決。循環(huán)次數(shù)事先不確定,需根據(jù)應(yīng)答“yes”、“no”來(lái)決定循環(huán)是否繼續(xù)。 #qu

5、es4_1.pyendFlag=yessum=0.0count=0while endFlag0=y: x=input(請(qǐng)輸入一個(gè)分?jǐn)?shù): ) sum=sum + x count=count + 1 endFlag=raw_input(繼續(xù)輸入嗎(yes or no)? ) print n平均分是: , sum / count循環(huán)結(jié)構(gòu)設(shè)計(jì)問(wèn)題【問(wèn)題】用戶輸入一個(gè)列表,求出列表中所有正偶數(shù)之和。分析:由于不知道用戶輸入的具體數(shù)據(jù)及個(gè)數(shù),因此需要在循環(huán)結(jié)構(gòu)中進(jìn)行判斷和累加。#ques4_1.pyli=input(請(qǐng)輸入一個(gè)列表:)sum=0for x in li: if x0 and x%2=0: s

6、um+=xprint sum=,sum程序輸入及運(yùn)行結(jié)果:請(qǐng)輸入一個(gè)列表:2, 3, 4, -5, 6, 12sum= 24循環(huán)結(jié)構(gòu)概述 循環(huán)結(jié)構(gòu)是一種重復(fù)執(zhí)行的程序結(jié)構(gòu)。實(shí)際應(yīng)用中,常會(huì)碰到一些需要重復(fù)執(zhí)行的步驟,如級(jí)數(shù)求和、統(tǒng)計(jì)報(bào)表等等。例如: (1)計(jì)算 1 + 2 + 3 + + 100,這是一個(gè)級(jí)數(shù)求和問(wèn)題,需要重復(fù)執(zhí)行100次,對(duì)100個(gè)數(shù)依次進(jìn)行累加。 (2)假設(shè)1個(gè)班級(jí)中有n名同學(xué),統(tǒng)計(jì)男同學(xué)和女同學(xué)各有多少名。該問(wèn)題的求解需要重復(fù)執(zhí)行n次,對(duì)每1個(gè)同學(xué)依次進(jìn)行判斷,同時(shí)統(tǒng)計(jì)男同學(xué)和女同學(xué)的人數(shù)。(3)給定2個(gè)整數(shù),求它們的最大公約數(shù)和最小公倍數(shù)。例如:給定6和9,求最大公約數(shù)

7、時(shí),循環(huán)過(guò)程從6依次遞減至1,當(dāng)循環(huán)到3時(shí),判斷得6和9都能被3整除,于是終止循環(huán),求得最大公約數(shù)是3.;求最小公倍數(shù)時(shí),循環(huán)過(guò)程從9依次遞增至54,當(dāng)循環(huán)到18時(shí),判斷得18同時(shí)能被6和9整除,于是終止循環(huán),求得最小公倍數(shù)是18。Python提供了兩種基本的循環(huán)結(jié)構(gòu)語(yǔ)句while語(yǔ)句、for語(yǔ)句。while語(yǔ)句while 表達(dá)式:循環(huán)體表達(dá)式表達(dá)式循環(huán)體循環(huán)體真真(非零非零)假假(零零)while 表達(dá)式:循環(huán)體else:else子句(1)while語(yǔ)句是一個(gè)語(yǔ)句是一個(gè)條件循環(huán)語(yǔ)句條件循環(huán)語(yǔ)句,即首先計(jì)算表,即首先計(jì)算表達(dá)式,根據(jù)表達(dá)式值的真、假來(lái)決定是否繼續(xù)循環(huán)。達(dá)式,根據(jù)表達(dá)式值的真、假

8、來(lái)決定是否繼續(xù)循環(huán)。 (2)while語(yǔ)句的語(yǔ)法與語(yǔ)句的語(yǔ)法與if語(yǔ)句類似,要使用語(yǔ)句類似,要使用縮進(jìn)縮進(jìn)來(lái)來(lái)分隔子句。分隔子句。(3)while語(yǔ)句的條件表達(dá)式不需要用括號(hào)括起來(lái),語(yǔ)句的條件表達(dá)式不需要用括號(hào)括起來(lái),但是表達(dá)式后面必須有但是表達(dá)式后面必須有冒號(hào)冒號(hào)。(4)使用)使用while語(yǔ)句編程通常會(huì)遇到兩種題型,一種語(yǔ)句編程通常會(huì)遇到兩種題型,一種是循環(huán)次數(shù)事先確定的問(wèn)題;一種是循環(huán)次數(shù)事先不是循環(huán)次數(shù)事先確定的問(wèn)題;一種是循環(huán)次數(shù)事先不確定的問(wèn)題。確定的問(wèn)題。說(shuō)明:說(shuō)明:while語(yǔ)句用于有限循環(huán)【分析】該問(wèn)題使用循環(huán)結(jié)構(gòu)解決,由于不確定用戶即將輸入幾個(gè)正整數(shù),因此屬于不確定循環(huán)次數(shù)

9、的問(wèn)題?!纠烤幊虖逆I盤輸入若干正整數(shù),求所有輸入整數(shù)之和。當(dāng)輸入整數(shù)為負(fù)數(shù)時(shí),結(jié)束該操作。#Exp4_1.pyprint 請(qǐng)輸入若干正整數(shù)進(jìn)行求和操作,當(dāng)輸入負(fù)數(shù)時(shí)結(jié)束: s = 0 x = input(請(qǐng)輸入一個(gè)整數(shù): )while x = 0: s = s + x x = input(請(qǐng)輸入一個(gè)整數(shù): )print 整數(shù)之和=, s程序:程序:【例】編程從鍵盤輸入若干個(gè)字符,一邊輸入一邊輸出,當(dāng)輸入“#”字符時(shí)終止該操作?!痉治觥浚?)本題使用循環(huán)結(jié)構(gòu)解決,每次循環(huán)從鍵盤輸入一個(gè)字符,直到輸入為“#”字符時(shí)停止循環(huán)。(2)由于輸入的字符個(gè)數(shù)無(wú)法確定,因此循環(huán)次數(shù)不確定。 是是否否a =

10、raw_input(請(qǐng)輸入字符,如果輸入 # 號(hào)則結(jié)束輸入操作: )while a != #: #判斷輸入的是否是井號(hào)print 您輸入的字符是:, a #打印輸入的字符#以下語(yǔ)句是再次輸入一個(gè)新的字符a = raw_input(請(qǐng)輸入字符,如果輸入 # 號(hào)則結(jié)束輸入操作: )else:print 輸入結(jié)束提問(wèn):提問(wèn):(1)循環(huán)結(jié)束后,變量 a 中的值是什么?(2)如果循環(huán)體中沒(méi)有下面這條語(yǔ)句會(huì)怎么樣?a =raw_ input(請(qǐng)輸入字符,如果輸入 # 號(hào)則結(jié)束輸入操作: )while語(yǔ)句解決確定循環(huán)次數(shù)的問(wèn)題【例】 編程計(jì)算1+2+3+100 的值。分析:本題使用循環(huán)結(jié)構(gòu)解決,每循環(huán)一次累

11、加一個(gè)整數(shù)值,整數(shù)的取值范圍為1100。由于整數(shù)的范圍是確定的,因此循環(huán)次數(shù)也是確定的。程序:#Exp4_3.pyi, s = 1, 0while i = 100 :s = s + ii += 1print 1+2+3+.+100 = , s框圖:分析:本題使用循環(huán)結(jié)構(gòu)解決,每循環(huán)一次輸出一個(gè)列表元素值,由于列表定義后,其長(zhǎng)度是已知的,因此循環(huán)次數(shù)也是確定的?!纠?編程依次輸出列表中個(gè)元素的值。while語(yǔ)句解決確定循環(huán)次數(shù)的問(wèn)題#Exp4_4.pya_list = a, b, mpilgrim, z, examplea_len = len(a_list)i = 0while i a_len

12、: print 列表的第, i+1, 個(gè)元素是:, a_listi i += 1上機(jī)作業(yè)上機(jī)作業(yè): :1.1.計(jì)算,參考值:計(jì)算,參考值: S=1.718282 S=1.71828211111*21*2*31*2*3*50S 2.2.編程求斐波拉契數(shù)列的前編程求斐波拉契數(shù)列的前2020項(xiàng),已知該數(shù)列項(xiàng),已知該數(shù)列的第一、二項(xiàng)分別是的第一、二項(xiàng)分別是0 0、1 1,從第三項(xiàng)開(kāi)始,每,從第三項(xiàng)開(kāi)始,每一項(xiàng)都是前兩項(xiàng)之和。例如:一項(xiàng)都是前兩項(xiàng)之和。例如:0, 1, 1, 2, 3, 0, 1, 1, 2, 3, 5, 8, 135, 8, 133.3.求求1 1100100之間所有的素?cái)?shù),并統(tǒng)計(jì)素?cái)?shù)

13、的個(gè)之間所有的素?cái)?shù),并統(tǒng)計(jì)素?cái)?shù)的個(gè)數(shù)。數(shù)?!纠壳笠韵卤磉_(dá)式的值,其中n值從鍵盤輸入。參考值:當(dāng)n = 11時(shí),s = 1.833333 。ns321132112111【分析】(1)以上問(wèn)題屬于數(shù)學(xué)中的級(jí)數(shù)求和問(wèn)題,是使用循環(huán)結(jié)構(gòu)解決的一類常見(jiàn)問(wèn)題。(2)級(jí)數(shù)求和問(wèn)題編程的重點(diǎn)在于通過(guò)觀察表達(dá)式的規(guī)律,分析每次循環(huán)都要完成的事件。通常將這些事件進(jìn)行局部分解,稱為“通式”。 該題的通式有以下幾個(gè):(1)分母的通式:(2)變量i的通式:(3)當(dāng)前項(xiàng)的通式:(4)求和的通式:mu = mu + ii = i + 1item = 1.0 / musu = su + itemi=1mu = 0s = 0

14、.0n = input(請(qǐng)輸入n值: ) #或用書上的代碼while i = n: #判斷是否計(jì)算到表達(dá)式的最后一項(xiàng)mu = mu + i #求分母的通式i += 1 # i 自增的通式item = 1.0 / mu #求當(dāng)前項(xiàng)的通式su = su + item #求和的通式 print sum = , su #循環(huán)結(jié)束后,打印總和程序:提問(wèn):(1)變量 i、mu、su 的初值只能是 1、0、0.0 嗎?(2)循環(huán)體內(nèi)語(yǔ)句的先后順序可以隨意調(diào)換嗎?【例】輸出“水仙花數(shù)”。所謂水仙花數(shù)是指1個(gè)3位的十進(jìn)制數(shù),其各位數(shù)字的立方和等于該數(shù)本身。例如:153是水仙花數(shù),因?yàn)?53 = 13 + 53

15、+ 33 。【分析】(1)本題需要對(duì)100 999范圍內(nèi)的所有數(shù)一一進(jìn)行判斷。(2)本題的變量 i 既是循環(huán)變量,同時(shí)也是被判斷的數(shù)。(3)每次循環(huán)過(guò)程中需要用 if 語(yǔ)句進(jìn)行條件判斷。因此本題也是循環(huán)嵌套選擇的結(jié)構(gòu)。提問(wèn):變量 i 是一個(gè)三位整數(shù),例如 i = 123(1)請(qǐng)寫出分離 i 的百位數(shù)的表達(dá)式。(2)請(qǐng)寫出分離 i 的十位數(shù)的表達(dá)式。(3)請(qǐng)寫出分離 i 的個(gè)位數(shù)的表達(dá)式。i = 100print(所有的水仙花數(shù)是:)while i score = 70, 90, 78, 85, 97, 94, 65, 80 score70, 90, 78, 85, 97, 94, 65, 80

16、 aver = sum(score) / 8.0 aver82.375 方法二:使用for語(yǔ)句,通過(guò)序列索引進(jìn)行迭代。 【分析】(1)以上列表score有8個(gè)元素,這些元素的序列索引范圍是“0 7”。(2)本題用到成員測(cè)試運(yùn)算符“in”,如果成員在序列中,測(cè)試結(jié)果為“True”,否則為“False”。(3)本題用到計(jì)算序列長(zhǎng)度的內(nèi)建函數(shù)len( )。(4)本題用到內(nèi)建函數(shù)range( ),range( )函數(shù)的完整語(yǔ)法要求提供2個(gè)或3個(gè)整型參數(shù):range(start, end, step) score = 70, 90, 78, 85, 97, 94, 65, 80print 所有的分?jǐn)?shù)值是

17、:print score #打印列表sum = 0#以下for語(yǔ)句的 i 是迭代項(xiàng),內(nèi)建函數(shù)len(score)的執(zhí)行結(jié)果是 8#內(nèi)建函數(shù)range(8) 返回一個(gè)列表0, 1, 2, 3, 4, 5 6,7#運(yùn)算符 in 是判斷迭代項(xiàng) i 是否還在列表0, 1,2 3, 4, 5, 6 7中for i in range(len(score):sum += scorei #循環(huán)體對(duì)列表元素求和aver = sum / 8.0 #循環(huán)之后,求平均值print naver = , aver程序:方法三:使用for語(yǔ)句,通過(guò)序列項(xiàng)運(yùn)算。 score = 70, 90, 78, 85, 97, 94,

18、 65, 80print 所有的分?jǐn)?shù)值是:print score #打印列表sum = 0#以下for語(yǔ)句使用運(yùn)算符in判斷迭代項(xiàng) i 是否在列表score中for i in score:sum += i #循環(huán)體對(duì)列表元素求和aver = sum / 8.0 #循環(huán)之后,求平均值print naver = , aver程序:循環(huán)的嵌套是指在一個(gè)循環(huán)中又包含另外一個(gè)完整的循環(huán),即循環(huán)體中又包含循環(huán)語(yǔ)句。while循環(huán)和for循環(huán)可以相互嵌套。 循環(huán)嵌套的執(zhí)行過(guò)程是:一次外循環(huán)對(duì)應(yīng)著完整的一輪內(nèi)循環(huán)。利用for語(yǔ)句實(shí)現(xiàn)雙層循環(huán)嵌套【例】使用for循環(huán)的嵌套結(jié)構(gòu)打印9-9乘法表 【分析】9-9乘法

19、表由9行組成,每行的列數(shù)有規(guī)律地遞增。通過(guò)觀察可以看出,表達(dá)式“X * Y = Z”中的X是內(nèi)循環(huán)變量j的取值,Y是外循環(huán)變量i的取值,Z是X乘以Y的結(jié)果。 for i in range(1, 10, 1): #控制行for j in range(1, i+1, 1): #控制列print i, *, j, =, i*j, tprint n #每行末尾的換行程序:【課堂練習(xí)】使用for循環(huán)的嵌套結(jié)構(gòu)編程,打印以下圖形。 (1)矩形(2)直角三角形(3)正三角形 Python提供了一條提前結(jié)束循環(huán)的語(yǔ)句break語(yǔ)句。 當(dāng)在循環(huán)過(guò)程中,某個(gè)條件被觸發(fā)(一般通過(guò)if語(yǔ)句檢查),需要立即停止循環(huán)時(shí)使

20、用。break語(yǔ)句可以用在while和for循環(huán)中。 break語(yǔ)句 【例】求200以內(nèi)能被17整除的最大正整數(shù)。 【分析】這個(gè)查找過(guò)程將以遞減的方式遍歷200至1之間的整數(shù),當(dāng)找到第1個(gè)能被17整除的數(shù)時(shí),循環(huán)過(guò)程立即停止,后續(xù)還沒(méi)有遍歷的數(shù)將無(wú)需再進(jìn)行判斷,因此可以使用break語(yǔ)句將循環(huán)提前終止。 for i in range(200, 1, -1):if i % 17 = 0:breakprint(200以內(nèi)能被17整除的最大數(shù)是:, i) 程序: continute語(yǔ)句 continue語(yǔ)句的作用是終止當(dāng)前循環(huán),并忽略continue之后的語(yǔ)句,然后回到循環(huán)的頂端,繼續(xù)執(zhí)行下一次循環(huán)?!纠?求200以內(nèi)能被17整除的所有正整數(shù),并統(tǒng)計(jì)滿足條件的數(shù)的個(gè)數(shù)。#Exp4_17_2.pys=0print 200以內(nèi)能被17整除的所有數(shù)是:for i in range(1, 201, 1):if i%17!= 0: conti

溫馨提示

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