Python基礎教程--05第五章條件、循環(huán)和其他語句_第1頁
Python基礎教程--05第五章條件、循環(huán)和其他語句_第2頁
Python基礎教程--05第五章條件、循環(huán)和其他語句_第3頁
Python基礎教程--05第五章條件、循環(huán)和其他語句_第4頁
Python基礎教程--05第五章條件、循環(huán)和其他語句_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

2、個空格 示例:條件和條件語句條件和條件語句0404布爾變量 false: False,0,空值(Null、空字符串,所有為空類型) 測試布爾值函數bool()條件執(zhí)行和if語句 name=raw_input(What is your name?) if name.endswith(Ray) print Hello, Mr. Rayelse 任意輸入三個英文單詞,按字典順序輸出。 elseif P71頁嵌套代碼塊 復合語句 嵌套語句條件運算 關系運算符 is:同一性運算符 字符串和序列比較 布爾運算符(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程序設計的3種基本結構 順序結構 是指程序流程按先后順序執(zhí)行,只有執(zhí)行了前一步,才能執(zhí)行后一步。例如火車在軌道上行駛,只有過了上一站點才能到達下一站點。 選擇結構 又稱分支結構,是指程序流程可以分幾條路徑執(zhí)行。例如在一個十字路口處,可以選擇向東、南、西、北幾個方向行走。 循環(huán)結構 又稱重復結構,是指程序流程重復執(zhí)行某一段代碼。例如

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

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

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

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

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

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

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

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

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

13、的個之間所有的素數,并統計素數的個數。數。【例】求以下表達式的值,其中n值從鍵盤輸入。參考值:當n = 11時,s = 1.833333 。ns321132112111【分析】(1)以上問題屬于數學中的級數求和問題,是使用循環(huán)結構解決的一類常見問題。(2)級數求和問題編程的重點在于通過觀察表達式的規(guī)律,分析每次循環(huán)都要完成的事件。通常將這些事件進行局部分解,稱為“通式”。 該題的通式有以下幾個:(1)分母的通式:(2)變量i的通式:(3)當前項的通式:(4)求和的通式:mu = mu + ii = i + 1item = 1.0 / musu = su + itemi=1mu = 0s = 0

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

15、+ 33 。【分析】(1)本題需要對100 999范圍內的所有數一一進行判斷。(2)本題的變量 i 既是循環(huán)變量,同時也是被判斷的數。(3)每次循環(huán)過程中需要用 if 語句進行條件判斷。因此本題也是循環(huán)嵌套選擇的結構。提問:變量 i 是一個三位整數,例如 i = 123(1)請寫出分離 i 的百位數的表達式。(2)請寫出分離 i 的十位數的表達式。(3)請寫出分離 i 的個位數的表達式。i = 100print(所有的水仙花數是:)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語句,通過序列索引進行迭代。 【分析】(1)以上列表score有8個元素,這些元素的序列索引范圍是“0 7”。(2)本題用到成員測試運算符“in”,如果成員在序列中,測試結果為“True”,否則為“False”。(3)本題用到計算序列長度的內建函數len( )。(4)本題用到內建函數range( ),range( )函數的完整語法要求提供2個或3個整型參數:range(start, end, step) score = 70, 90, 78, 85, 97, 94, 65, 80print 所有的分數值是

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

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

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

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

溫馨提示

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

評論

0/150

提交評論