




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
項目一Python開發初體驗textbook教材Python程序設計項目式教程孫海洋
編著
電子工業出版社ISBN:9787121477546Contents目錄01.Python速覽02.搭建開發環境03.輸入/輸出—矩形面積04.認識數據類型—數值和字符串05.標準庫使用—圓周長和面積06.項目小結PartOnePython速覽了解Python起源及特點了解Python名字由來和LOGO熟記Python官網網址掌握Python語言的主要特點了解Python兩個版本及其區別Python起源Python的起源Python的設計者GuidovanRossum(吉多·范羅蘇姆),于1956年出生于荷蘭,1982年畢業于阿姆斯特丹大學(荷蘭文:UniversiteitvanAmsterdam,縮寫為UvA),并獲得了數學和計算機科學雙碩士學位。在1989年圣誕節期間為了打發無聊的時光,Guido設計并開發出了Python這種腳本解釋型語言,并于1991年公開發行了Python的第一個版本。Python的誕生Guido當時非常喜歡看由“巨蟒劇團”出演的電視劇“飛翔的馬戲團”(即MontyPython'sFlyingCircus),是“巨蟒劇團”(MontyPython)的粉絲。于是,Guido便以劇團的名稱把編程語言命名為Python。雖然Python命名本意與動物蟒蛇并無關聯,但是,依然把一對“雙蟒蛇”作為了該語言的官方()LOGO。Python起源Python主要特點1.簡潔Python的語法相較于其它語言來說簡潔明了,易于理解和學習,使得開發者可以快速上手并編寫出高質量的代碼。我們分別使用Java、Python等編程語言輸出“Hello”的程序對比如下所示。Python主要特點2.面向對象Python是完全面向對象的語言,所有事物都視為對象,包括數值、字符串、函數等。這使得代碼組織和重用更為靈活和高效。3.強大的開發庫Python擁有豐富的標準庫和大量第三方庫,提供了廣泛的功能和工具。4.解釋型語言Python是解釋型語言,代碼在運行時由解釋器逐行解釋執行。5.其他特點Python屬于高級語言,具有良好的可移植性及安全性。Python版本01Python2.xPython2.x是Python語言的一個重要版本,它支持許多Python3.x的特性,但已經停止維護。02Python3.xPython3.x是Python語言的最新版本,它包含了許多新特性和改進,是Python開發的首選版本。03Python2.x與Python3.x的差異Python2.x和Python3.x在語法、庫和API等方面存在一些差異,Python官方已于2020年1月1日宣布不再維護Python2版本,各個第三方庫也逐漸放棄支持Python2,本教材主要講解Python3。課堂小測1.以下關于Python的說法正確的是()A.Python與C語言一樣是面向過程的程序設計語言B.Python與面向對象語言C++一樣同屬于編譯型語言C.良好的可移植性是Python區別于其他編程語言的主要特點D.print2+3是Python2的正確語法,其輸出結果為5PartTwo搭建開發環境培養通過官網下載安裝Python3并配置環境變量的能力掌握使用IDLE交互式開發Python的能力掌握使用文本編輯源程序文件開發Python的能力掌握通過Anaconda安裝JupyterNotebook的能力了解PyCharm、Spyder等集成開發環境的安裝和使用安裝配置Python3下載地址:/downloads/下載Python301打開鏈接后,選擇相應的Python版本,下載安裝,如圖1-1所示。02安裝Python3假設安裝在了C:\Python\目錄下,則在安裝目錄C:\Python\Doc下有Python幫助文檔,如圖1-2所示。圖1-1安裝包下載界面圖1-2幫助文檔安裝配置Python303設置環境變量以Win10操作系統為例,搜索環境變量,單擊“編輯系統環境變量”(圖1-3所示)→點擊“環境變量”按鈕(圖1-4所示)→打開“系統變量”對話框→選中“Path”→單擊“編輯”按鈕→單擊“新建”按鈕→輸入Python安裝目錄“C:\Python\”→單擊“確定”按鈕→單擊“確定”按鈕,如圖1-5所示。圖1-3搜索環境變量圖1-4打開環境變量圖1-5配置環境變量Python解釋器自帶IDLEIDLE是Python解釋器自帶的集成開發環境,提供了基本的代碼編輯和調試功能。IDLE簡介安裝并配置好環境變量后,通過計算機左下角“開始”找到剛安裝好的Python,打開IDLE(IntegratedDevelopmentandLearningEnvironment),進入交互式編程界面,在提示符>>>后輸入要執行的命令,然后按回車鍵解釋執行,如圖1-6所示。IDLE使用IDLE提供了代碼編輯、運行、調試等功能,可以滿足初學者的基本開發需求。IDLE功能圖1-6交互式環境開發文本編輯.py源程序并解釋執行假設在D:\Python_WorkSpace\Chapter1目錄下新建一個記事本文件print_test.txt,編輯兩條Python輸出語句并保存,如圖1-7所示。01創建記事本文件把文件后綴名由.txt修改為.py文件,如圖1-8所示。02修改為Python源文件后綴打開“命令提示符”(點擊Win+R,然后在提示框輸入cmd),先鍵入d:并回車進入D盤,再使用cd命令更改目錄到D:\Python_WorkSpace\Chapter1下,然后調用Python解釋器解釋執行文件print_test.py,輸出運行結果,如圖1-9所示。03解釋執行.py源文件圖1-7記事本文件圖1-8修改為.py后綴圖1-9執行源文件Python開發環境初識驗證代碼IDE種類0103所有案例代碼均在JupyterNotebook中驗證通過,確保學習順利。PyCharm、JupyterNotebook、Spyder等是常用的PythonIDE。02參考相關資料安裝IDE,本教材采用Anaconda安裝JupyterNotebook。安裝IDEPartThree輸入/輸出—矩形面積【任務描述】從鍵盤輸入矩形的長和寬,計算其面積并輸出。【任務分析】該任務涉及數值輸入操作,變量及輸出操作。掌握print輸出函數的原型及調用掌握input輸入函數的原型及調用掌握int、float及eval的使用和差別掌握type查看類型函數的使用變量及類型查看函數type保留字(關鍵字):指在編程語言中已經定義過的字,編程者不能再將這些字作為自定義標識符使用。保留字通常與Python版本有關。Python3.8.5版本,其保留字共有35個。變量:是有名字(標識符)的內存空間,且其中存儲和表示的值可以改變。變量及類型查看函數type變量類型:Python中變量本身無類型,也無須用類型關鍵字指定,其類型是由其值的類型決定的,可使用type()函數查看變量或數據的類型。type函數使用示例如下。變量名(標識符)命名規則:由大小寫英文字母(A~Z,a~z)、數字(0~9)、下畫線(_)和漢字或其組合構成,但不能以數字開頭。例如,Class_5、_a、姓名等都是Python合法的標識符;而5a、a@、¥等都是錯誤的標識符。另外,Python標識符對大小寫敏感,即A和a為不同的標識符。標識符不能與保留字相同。print函數使用value:輸出各數據項的值,以逗號間隔。sep:可選,輸出各value值的間隔符,默認空格,也可顯式指定,如逗號sep=','。end:可選,輸出所有value后的結束符,默認換行,也可顯式指定,如空格end=''。參數解析print函數使用1.未顯式指定輸出數據項的間隔符,默認為空格。2.顯式指定各輸出數據項的間隔符。3.未顯式指定各數據項輸出完畢后的結束符,默認為換行。4.既指定數據項的輸出間隔符,又指定結束符。input函數使用prompt:可選,通常為增強代碼可讀性的輸入提示信息。參數解析注:不管輸入的是字符串、數值還是其他類型,該函數均返回其對應的字符串類型。input函數使用1.從鍵盤上輸入一句話,直接保存到變量s中2.使用input()輸入數值,返回值保存到變量中,使用type()函數查看其返回值類型。3.input函數把輸入的數據均以字符串類型返回,如果輸入的為數值,則可通過強制類型轉換把數值字符串轉換為整型數int或浮點數float;或使用更通用的eval()函數從數值字符串中提取出相應的數值。課堂小測以下關于Python的說法中錯誤的是()A.可使用type()查看某數據或變量的類型B.不管輸入的是整型、浮點型還是字符串型,input函數均返回字符串型C.a=input('輸入整數:'),若輸入3.14,則a為“3.14”D.a=int(input('輸入整數:')),若輸入3.14,則a為3PartFour認識數據類型—數值和字符串掌握常見算術運算符的使用掌握print的格式化輸出方式掌握數值類型的數據掌握字符串類型的表示和使用數值類型及print格式化輸出Python語言的數據類型主要有數值、字符串、列表、元組、集合和字典等數值型數據通常包括:整數和浮點數type函數可以查看數值類型運算符描述舉例+加法5+2.15=7.15-減法5-3=2*乘法2*3=6/除法11/4=2.75//相除取商11//4=2%相除取余11%4=3**冪次方2**10=1024常見運算符數值類型及print格式化輸出print調用格式:print(格式控制%(輸出項列表))格式控制部分為字符串,當輸出項數多于一個時,必須用()括起來,各輸出項之間用逗號隔開。python中有許多格式控制符,如十進制常用%d或%i,八進制用%o,浮點數用%f等等,詳細可見書中列舉。Python字符串起止邊界Python語言中字符串數據的起止邊界既可以是單引號也可以是雙引號。但若字符串本身含有單引號或雙引號,那么起止邊界不能直接含有起止邊界符,以免報錯。通常有如下兩種解決方案。引號形式不同字符串內容中的引號形式與起止邊界不同,確保字符串正確解析轉義字符表示字符串內容中的引號以轉義字符形式表示,單、雙引號均可作為起止邊界。PartFive標準庫使用—圓周長和面積【任務描述】輸入圓的半徑,計算并輸出其周長和面積,分別保留兩位和三位小數。【任務分析】該任務需使用標準庫math中的圓周率,以及保留小數位數的print輸出格式控制方法。了解常見的標準庫和第三方庫掌握標準庫的兩種調用方式模塊的兩種訪問方式在Python中,可以直接使用import模塊名導入模塊直接導入使用from語句可以導入模塊中的特定函數或類,可以使用from模塊名import屬性名或from模塊名import函數名使用from語句0102調用方式一:模塊名.屬性名或模塊名.函數名()調用方式二:屬性名或函數名()print格式化輸出格式化輸出使用print函數進行格式化輸出,如print("圓周長:{:.2f}".format(a)),其中{:.2f}表示保留兩位小數。字符串格式化使用字符串格式化進行輸出,如print("圓周長:%s"%(a)),其中%s表示字符串。f-string格式化使用f-string進行格式化輸出,如print(f"圓周長:{a:.2f}"),其中:.2f表示保留兩位小數。注:%.nf:四舍五入保留小數點后n位。%.0f:四舍五入取整數部分。%f:通常默認保留小數點后6位,不夠補0。課堂小測以下代碼執行正確的是()A.frommathimportsqrtsqrt(-4)B.frommathimportsqrtmath.sqrt(4)C.importmathsqrt(4)D.importmathmath.sqrt(5)PartSix項目小結項目小結THANKS!項目二
簡易計算器———分支結構textbook教材Python程序設計項目化教程孫海洋
編著
電子工業出版社ISBN:9787121477546設計一個簡易計算器,根據輸入數字進行加(+)、減(-)、乘(*)、除(/)、相除取商(//)、相除取余(%)等進行相應的運算,并輸出其運算結果。項目描述Contents目錄01.判斷考試是否通過—if-else雙分支04.簡易計算器的項目實施02.判斷商品是否有促銷活動—if分支03.根據成績判斷等級—if-elif-else05A.項目小結PartOne判斷考試是否通過——if-else雙分支掌握if-else分支結構掌握if-else的執行流程能夠使用if-else解決實際問題if-else分支結構【任務描述】輸入一成績,判斷其是否及格,成績大于等于60分及格,小于60分不及格。了解if-else分支結構的語法格式注:if體和else體既可以是一條語句,也可以是多條語句,注意縮進。任務流程與實施if-else分支結構最重要的步驟就是畫出流程圖對于上述問題,我們可以畫出流程圖如下任務流程與實施若輸入成績58,則會進入B房間,輸出結果如下:若輸入成績96,則會進入A房間,輸出結果如下:PartTwo判斷商品是否有促銷活動—if分支掌握if分支結構掌握if分支結構的執行流程能夠使用if分支結構解決實際問題if分支結構一商店為提升工作日的銷售額,策劃了優惠促銷活動,星期一、二、四這三天,凡一次性購物總額在200元以上的,減免30元。幫顧客計算要付的金額。了解if分支結構的語法格式畫出流程圖:字符串格式化函數formatformat格式:string.format(數據項列表)
保留小數點后n位:'{:.nf}'.format(num)。任務實施若滿足條件則輸出:不滿足任意一個條件則輸出:PartThree根據成績判斷等級—if-elif-else掌握if-elif-else級聯多分支結構掌握if-elif-else級聯多分支結構的執行流程能夠使用級聯多分支結構解決實際問題if-elif-else級聯多分支結構輸入一成績,判斷其對應等級,90分及以上為優秀,大于等于80分且小于90分為良好,大于等于60分且小于80分為及格,小于60分為不及格。對于該任務,任務總共有四種情況,這屬于多分支情況,可使用if-elif-else級聯多分支實現。我們先寫出if-elif-else級聯多分支結構的語法格式說明:該結構中可含有1個或多個elif部分,else部分可省略。從前往后依次判斷各條件表達式的值,如果某個條件表達式成立,即為邏輯真,則執行其對應的語句組,并終止整個分支結構的執行。如果上述所有表達式均不成立,即均為邏輯假且含有else部分時,則執行對應的else部分語句組。執行流程與任務實施輸出結果如下:PartFour簡易計算器的項目實施項目實施運行結果如下:PartFive項目小結主要知識點總結知識點示例說明if分支結構if條件表達式:
語句組A隱式雙分支:執行語句組A和不執行該語句組A兩種情況if-else分支結構if條件表達式:
語句組A:else:
語句組B顯式雙分支:當條件表達式的值為邏輯真時,執行語句組A,否則執行語句組Bif-elif-else分支結構if條件表達式1:
語句組1elif條件表達式2:
語句組2…elif條件表達式n:
語句組nelse:
其他語句組該if-elif-else級聯多分支結構的執行流程是:
從前往后依次判斷各表達式的值,如果某表達式的值為真,則執行對應的分支語句組,并終止整個多分支結構。若所有表達式的值均為假,且含有else時,則執行對應的else語句組。
else部分可以省略易錯知識點總結縮進錯誤01這是由于縮進不當,造成邏輯混亂。對上述代碼進行修改:易錯知識點總結包含重復條件02條件的重復包含,雖然既無語法錯誤,也無運行時錯誤,且能得到正確結果,但為規范起見,本教材把這種邏輯不清晰的程序視為“錯誤”。對上述代碼進行修改:易錯知識點總結語義錯誤03a=5為賦值表達式,其結果非邏輯值,故錯誤。a==5為關系表達式,其值為邏輯值對上述代碼進行修改:THANKS!項目三
循環結構textbook教材Python程序設計項目化教程孫海洋
編著
電子工業出版社ISBN:9787121477546Contents目錄01.抓娃娃游戲—while循環02.猜數字謎游戲—循環流程控制04.項目小結03.模擬發紅包程序—for循環、列表PartOne
任務一抓娃娃游戲—while循環while循環結構【任務描述】抓娃娃游戲玩一局需要3元錢,根據充值卡中的金額判斷還能玩幾局。【任務分析】當(while)充值卡中的余額(balance)大于等于3元時,游戲一直進行(重復),同時每次支付3元,即balance-=3,直到balance小于3元時,游戲終止。while語句語法格式如下:執行流程:首先判斷循環控制表達式Exp_cntrl的值,當該表達式的值為邏輯真(True)時,會一直執行循環體(語句組A),直到表達式的值為邏輯假(False)時,結束循環體執行。流程圖如下:循環控制變量任務實施運行結果如下:參考代碼如下:鞏固案例【案例1】輸入任意一個十進制正整數,將其“反序”后輸出(若輸入:1234,則輸出:4321)把原數從最低位到最高位逐位分離→按照分離出的順序,用分離出的數字組成新的十進制整數逐步分離出當前n的最低位數字m為新數字,將剛分離的t作為低位,完成倒序去除已分離的低位,為下次分離做準備鞏固案例【案例2】計算并輸出1-3+5-7+…-99的值。符號位:每執行一次sign就變成原來的相反數數值位:實現奇數累加當前數據項:組建當前的數據保存在item中求和變量:將每一輪得出的數據累加到s中PartTwo任務二猜數字謎游戲—循環流程控制【任務描述】設計一個猜數字游戲,隨機生成1到100之間的一個整數,玩家總共有5次機會,每次輸入所猜數字,程序給出相應的提示信息(“再大一點”、“再小一點”或“$恭喜您猜中了$”),如果猜中了,提示“$恭喜您猜中了$”,“總共猜了*次”,游戲結束,否則游戲繼續;總共有5次機會,若均沒猜中,則提示“很遺憾,今天運氣不好!”并退出循環。任務描述【任務分析】該任務涉及循環結構,所以讓我們一起來學習一下break、continue以及while-else語句吧!break語句break語句語法格式執行流程在循環體中,當執行到break語句時,終止break所在層的循環,即“循環體內break后的語句組”部分將不再被執行,程序執行流程從“循環結構后的語句組”處,繼續往后執行。break語句【示例1】分析以下程序,輸出其運行結果。因為n<5,所以n的取值為0,1,2,3,4,執行5次后循環結構正常終止。但當n==4時,滿足條件,執行下面一行語句,然后執行break語句。在單層循環中,當執行到break時,立刻終止執行整個循環結構,直接跳出整個while語句,執行倒數第二行語句。continue語句語法格式執行流程在循環體中,當執行到continue語句時,本次循環體的執行流程將跳過“循環體內continue后的語句組”,繼續執行“循環判斷表達式”,即提前進入下一次的循環準備工作。continue語句continue語句【示例】分析以下程序,輸出其運行結果。如果n==
4,先執行下面一行語句,然后執行continue語句,然后跳過打印“第4天打卡”這句話,并不結束循環結構,接著判斷n<5是否依然為邏輯真。運行結果如下:while-else語句語法格式執行流程當循環條件表達式Exp_cntrl的邏輯值為假(False),即循環體執行正常結束時,如果含有else部分,則執行一次對應的else部分(語句組B)。如果循環執行非正常結束,則不會執行else部分。while-else循環結構與任務實施else部分可有可無while-else循環結構【示例1】分析以下程序,輸出其運行結果。先執行while循環,循環正常結束后執行else部分,這時整個while-else結構才執行結束,接著執行while-else結構后的部分。運行結果如下:注:若while循環中包含break,則不執行else部分。任務實施1.回到猜字謎游戲,第一步我們需要先導入random模塊,調用randint函數生成1到100之間的隨機整數作為謎底ans。2.輸入第一次所猜數字guess,次數cnt記為1。3.采用while-else循環結構,只要guess!=ans,循環即猜謎游戲就一直進行下去,當guess==ans時,猜中答案,即循環正常停止時,進入并執行else部分語句組(“恭喜您猜中了”)。任務實施運行結果如下:PartThree任務三模擬發紅包程序—for循環、列表【任務描述】輸入發放總金額及發放個數,隨機生成每個紅包的金額,并輸出。任務描述根據上述代碼,我們來逐個分析。首先,我們了解一下列表列表定義格式:列表名=[元素0,元素1,元素2,…,元素n-1]注意:列表的下標從0開始,各個元素可以是相同類型的,也可以是不同類型的,還可以是列表本身(列表嵌套)。range函數(1)僅給出結束位置:range(stop),對象range(0,stop)。該對象返回的序列是:0,1,…,stop-1,即stop為假尾巴,不被包含在其中(2)給出起、止位置:range(start,stop)。返回對象:start,start+1,start+2,…,stop-1。(3)起止及步長:range(start,stop,step)。從start到stop-1的區間內,按步長為step取若干樣點生成序列對象。【注意】:步長為正,表示遞增,start<stop;步長為負,表示遞減,start>stopfor循環結構我們先來了解一下for循環語法格式:可以是字符串、列表、元組等數據類型,也可以是range函數生成的序列對象等。執行流程:循環變量的取值范圍從序列或序列對象的首元素開始,依次取到尾元素,即for循環的執行次數等于“序列”的元素數量。for循環結構習題1:從鍵盤輸入一字符串,把其中的大寫字母變為小寫,小寫字母變為大寫,其他不變,輸出轉換后的字符串。分析:Python中沒有字符類型,單個字符如'a'也被當成字符串處理。遍歷原字符串中的每個子字符串s,然后對每個s進行判斷,做相應的大小寫轉換(轉小寫:str.lower()、轉大寫:str.upper()),并把轉換后的結果鏈接到定義的新字符串后面,循環結束后即為轉換后的字符串。for循環結構參考代碼:運行結果:for循環結構習題2:輸出斐波那契數列的前10項,已知數列的前兩項值為0和1,從第三項開始每一項都等于其相鄰前兩項之和。分析1:定義長度為10的列表ls,下標范圍是從0到9,其中0、1號位置分別為數列前兩項的值0和1,即ls=[0,1]。故只需計算出第3到第10項,并依次存放到列表的2到9號位置。for循環結構分析2:從第3項(i=2號位置)開始的每一項t都等于其相鄰的前兩項ls[i-1]和ls[i-2]之和,即t=ls[i-1]+ls[i-2]。然后調用列表的append方法,把t附加到列表ls的后面,即ls.append(t)。前兩項之和相加,若該位置下標為i,即ls[i]=ls[i-1]+ls[i-2]t參考代碼:運行結果:隨機數模塊random模塊導入:importrandom1.生成隨機浮點數(1)random()生成[0,1)之間的隨機浮點數(2)uniform(m,n)函數生成[m,n)或[m,n]之間的隨機浮點數2.生成隨機整數(1)randint(m,n)生成[m,n]之間的隨機整數【注意】包含起止邊界隨機數模塊random【示例1】生成5個10以內的隨機奇數。randrange(start,stop=None,step=1)類似range返回序列對象中的隨機整數值,不包含“假尾巴”stop,step為步長某次運行結果:參考代碼:隨機數模塊random3.從給定集合中隨機選取元素(1)choice(sequence)從指定非空序列中隨機選取元素4.隨機打亂原序列元素的存儲順序shuffle(x,random=None),返回None(2)sample(sequence,k)抽樣:從指定非空序列中隨機抽取
k個不重復的元素PartFour項目小結知識點回顧知識點示例說明while循環whileExp_cntrl:
循環體語句組當條件Exp_cntrl為邏輯真時,一直執行循環體,當條件為假時,循環結束。for循環for變量in序列:
循環體語句組循環的次數等于序列中元素的數量循環流程控制語句break終止并退出所在層循環。continue本次循環中,continue后的語句不再執行,提前進入下一次循環條件的判斷THANKS!項目四打印九九乘法表與星號陣textbook教材Python程序設計項目化教程孫海洋
編著
電子工業出版社ISBN:9787121477546任務描述【任務描述】打印九九乘法表,如下所示。【分析】該項目屬于打印輸出多行多列的情景,控制行數需使用一層循環,而每一行又有多列,控制每行的列數又需要一層循環,故屬于雙重循環,即循環的嵌套。接下來我們使用兩個案例來讓同學們了解循環的嵌套!Contents目錄01.輸出星號陣——循環嵌套02.輸出星號三角陣03.項目實施04.鞏固案例05.項目小結PartOne輸出星號陣——循環嵌套掌握循環嵌套結構能夠使用循環嵌套解決實際問題輸出星號陣【任務描述】編程輸出如下圖形。
********************【定義】在一個循環結構內,又嵌入另一個循環結構,稱為循環結構的嵌套或多重循環,常用的為二重循環。通常把外層的循環稱為外循環,內層的循環稱為內循環。while循環、for循環均可相互嵌套。分析:輸出該圖形,我們需要用到循環嵌套任務實施參考代碼:因為圖形的每一行都是固定的形狀*****,重復執行4次即得目標圖形分析每行圖形是一個星號*之后緊跟一個空格,每行5個星號,故重復5次外層循環控制行內層循環控制列運行結果:PartTwo輸出星號三角陣掌握三角陣的輸出能夠使用循環嵌套解決實際問題輸出星號三角形【任務描述】編程輸出如下圖形。
**********由圖可知,每行輸入的星號與其所在的行數有一定的聯系參考代碼PartThree項目實施項目實施分析1:九九乘法表的輸出形狀與打印星號三角形類似,其程序框架如下:分析2:觀察發現,每行輸出的算式與其行數一致。假設用變量j遍歷第i行的所有列,其代碼如下:分析3:參考代碼如下:PartFour鞏固案例鞏固案例【案例1】從鍵盤輸入正整數n,求s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值。分析1:求和變量s可以看成n項之和,設當前項用term表示。第1項:term=1、第2項:term=(1+2)、第3項:term=(1+2+3)、…、第n項:term=(1+2+3+…+n),把每一項term累加到求和變量s上,使用外層循環控制該操作,循環累加n次,設i為循環控制變量,則循環結構如下:分析2:term=(1+2+3+…+i),即把1、2、3、…、i累加到term上(term初始為0),設j為循環控制變量,則第1步中,“計算第i項的term值”的代碼如下:鞏固案例分析3:把第(2)步代碼嵌入到第(1)步的for循環中,即可得如下代碼:參考代碼:鞏固案例【案例2】編程輸出如下矩陣:
1
234
2
468
36912分析1:觀察該矩陣,是一個3行4列的矩陣,使用for循環控制行的輸出,設行的循環控制變量為i,用來控制行。列的循環控制變量為j,用來控制列,然后換行。其代碼如下:分析2:觀察輸出的每個數字,是數字所在的行*數字所在的位置,比如4在第2行,它的位置是第2個,即2*2=4,12在第3行,它的位置是第4個,即3*4=12。其代碼如下:鞏固案例分析3:把第2步嵌入到第1步的程序框架中,其代碼如下:分析4:參考代碼如下:PartFive項目小結項目小結實現功能錯誤示例正確示例******row=3foriinrange(1,row+1):
forjinrange(1,i+1):
print('*',end='')
print()row=3foriinrange(1,row+1):
forjinrange(1,i+1):
print('*',end='')
print()#正確位置本項目主要介紹了循環嵌套。易錯知識點小結如表4-1所示。表4-1易錯知識點小結THANKS!項目五簡易銀行系統——函數textbook教材Python程序設計項目化教程孫海洋
編著
電子工業出版社ISBN:9787121477546項目描述【問題描述】設計一個建議銀行系統,銀行根據客戶輸入,幫其辦理相應的業務,主要包括存款、取款、查詢等相關業務。Contents目錄01.多功能計算器設計——為什么使用函數02.人狗大戰——函數應用03.掌握變量的作用域04.掌握匿名函數05.項目實施06.項目小結PartOne多功能計算器設計—為什么使用函數掌握函數定義結構掌握函數調用結構能夠使用函數解決簡單問題任務描述【任務描述】設計一個能實現加、減、乘、除等相關運算的簡易計算器。運行結果如圖:讓我們一起來學習函數的基本概念來完成這個任務吧!函數概念與分類函數定義函數就是模塊,即把每一個功能相對獨立的代碼封裝起來。函數分類函數可分為庫函數(標準庫和第三方庫)和自定義函數。庫函數:標準庫函數如math庫中的sqrt等;第三方庫函數如matplotlib庫中的繪圖函數plot、pie等。自定義函數:程序設計者根據功能自己編寫的函數。函數定義與調用1.自定義函數定義格式def函數名(參數1,參數2,…):函數體一個函數定義包含函數頭和函數體兩部分。一般把關鍵字def、函數名、參數列表、冒號這四部分稱為函數頭;冒號后縮進的部分稱為函數體。函數名:符合標識符的命名規則,最好見名知意。如使用add作為求和函數的函數名,sort作為排序函數的函數名。參數表:函數定義時的參數又稱為形式參數,簡稱形參。根據有無參數,函數可分為帶參函數和無參函數。返回值:可有可無,返回關鍵字為return。【說明】函數定義與調用2.自定義函數調用格式在學習調用格式之前,我們來了解一下什么是帶參函數和無參函數(1)帶參函數:可含有一個或多個形參,多個形參之間用逗號分隔,其代碼如下:(2)無參函數,不含參數,但不能省略括號,其代碼如下:帶參函數調用格式:函數名(參數1,參數2,…)無參函數調用格式:函數名()任務實施進行加減乘除運算使用無限循環讓用戶選擇運算類型。如果用戶選擇5,則打印退出信息并退出循環PartTwo人狗大戰——函數應用掌握字典數據類型的使用掌握函數的定義和調用能夠自定義函數解決實際問題任務描述【任務描述】模擬一個人狗大戰游戲,人選手有姓名、年齡、生命值和攻擊力等,狗選手有名字、品種、生命值和攻擊力。人有打狗的行為,狗有咬人的行為。字典?函數定義?調用?數據類型—字典1.字典定義格式字典名={key1:value1,key2:value2,…,keyn:valuen}【注意】:鍵與值之間用冒號間隔構成鍵值對,然后使用逗號連接若干鍵值對。2.字典常見操作操
作說
明舉
例新建字典手動大括號作為起止邊界d={}#空字典函數dict()
d=dict()#空字典,等同{}增加元素添加d[key]=v當key不存在時即添加新鍵值對d={'Name':'Tom','Age':18}d['Sc']=98
#鍵'Sc'在d中原不存在,即增加print(d)
#{'Name':'Tom','Age':18,'Sc':98}數據類型—字典操
作說
明舉
例刪除元素pop函數刪除指定key值的鍵值對d.pop(key)
若key存在,返回對應的value值;否則,拋出KeyError異常d={'Name':'Tom','Age':18,'Sc':98}d.pop('Sc')#{'Name':'Tom','Age':18}d.pop('No')#鍵'No'不存在,拋出異常KeyError隨機刪除并返回一鍵值對d.popitem()若d非空,則以元組的形式返回一鍵值對;若為空,則拋出KeyError異常d={'Name':'Tom','Age':18,'Sc':98}d.popitem()#刪除并返回('Sc',98)d.popitem()#刪除并返回('Age',18)d.popitem()#刪除并返回('Name','Tom')d.popitem()#刪除并返回KeyErrordel刪除指定key值的鍵值對元素deld['key']若key不存在,則拋出KeyError異常d={'Name':'張三','Age':18,'Sc':98}deld['Sc']print(d)#{'Name':'張三','Age':18}清空字典d.clear()d={'Name':'張三','Age':18,'Sc':98}d.clear()print(d)#{}數據類型—字典操
作說
明舉
例修改元素修改已存在鍵(key)對應的值d['key']=new_value
如果key值不存在,則表示增加元素d={'Name':'Tom','Sc':88}d['Sc']=92#修改成績print(d)#{'Name':'Tom','Sc':92}update更新元素d.update(k1:v1,k2:v2,…)
對已存在的key值起更新作用,對未存在的key值起新增鍵值對作用d={'a':1,'b':3,}d.update({'a':0,'d':5})#修改'a'值,新增'd'print(d.items())#dict_items([('a',0),('b',3),('d',5)])查找(訪問)元素單個元素訪問d['key']d={'Name':'Tom','Addr':{'Sc':'88','Age':'18'}}#字典嵌套print(d['Name'])#Tomprint(d['Addr'])#{'Sc':'88','Age':'18'}keys()訪問所有鍵d.keys()
返回所有鍵值對的鍵值sc={'數學':96,'語文':86}print(sc.keys())#dict_keys(['數學','語文'])values()訪問所有值d.values()返回所有鍵對應的值sc={'數學':96,'語文':86,'英語':77}print(sc.values())#dict_values([96,86,77])items()返回所有鍵值對d.items()返回所有鍵值d={'a':7,'b':3}print(d.items())
#dict_items([('a',7),('b',3)])帶默認值參數在函數定義時,可以為參數設置默認值,帶默認值的參數必須放在所有非默認值參數的后面。【參考代碼】在函數調用時,若沒有為默認值參數傳值,則采用參數的默認值。在函數調用時,若為默認值參數指定新值,則用新值覆蓋默認值。任務實施定義了一個字典attack_dog,其中包含不同品種狗的名稱和對應的攻擊力值。定義了一個函數dog,包含狗的名字、品種、生命值和攻擊力的字典。如果狗的品種在attack_dog字典中,則攻擊力取相應的值,否則默認為20。定義了一個函數person,包含人的名字、年齡和生命值。如果年齡在18到40歲之間,攻擊力設為70,否則為30。任務實施定義了beat函數,模擬人打狗的行為。人的攻擊力會減少狗的生命值,并打印出相應的信息定義了dog_bite函數,模擬狗咬人的行為。狗的攻擊力會減少人的生命值,并打印出相應的信息。PartThree變量作用域掌握掌握局部變量和全局變量的定義能夠使用global在局部空間中引入全局變量全局變量是在任何函數或語句塊之外定義的變量。它們在整個程序范圍內都是可見和可訪問的。全局變量局部變量的作用域限制在其定義的函數或語句塊內。在這些局部區域內,變量默認是有效的,且不能在外部訪問。如果需要在函數內部修改全局變量,可以使用global關鍵詞來聲明。作用域規則局部變量是在函數或語句塊內部定義的變量。它們僅在定義它們的函數或語句塊內部有效。局部變量010203全局變量和局部變量全局變量和局部變量1.函數內默認訪問局部變量2.函數內部訪問全局變量—global鞏固案例【案例】分析以下代碼,輸出其運行結果。首先定義了一個全局變量g并賦值為2。在f1函數中,使用global關鍵詞聲明g為全局變量,并將其修改為3。在f2函數中,g被重新賦值為4,但這里的g是局部變量,不影響全局變量。最后,當主程序執行時,調用f1和f2函數,打印全局變量g的值,由于f1中的修改,輸出結果為3。全局變量局部變量全局變量全局變量PartFour掌握匿名函數掌握匿名函數的定義和調用掌握map、filter、reduce等函數匿名函數在函數功能邏輯較簡單、代碼量較少的情況下,可以將函數定義為匿名函數,即不給該函數指定標識符(名字),通常稱為“lambda表達式”。其定義格式為:lambda參數1,參數2,…:功能實現函數與匿名函數對比利用函數求和利用匿名函數求和【結論】由此可見,匿名函數所保存的“對象”或“模型”非常類似普通函數名,在調用格式上兩者也非常相似。lambda與mapmap函數定義格式為:map(func,iterables)【功能描述】將函數func應用于可迭代對象iterables中的每個元素,并返回一個包含所有結果的map對象,該對象可以被轉換為列表或元組以查看結果。【案例】定義一個匿名函數來計算數字的平方,利用`map`函數將此函數應用于列表`[1,2,3,4,5]`中的每個元素。并使用`list()`將其轉換為列表形式,打印每個元素的平方結果。lambda與filterfilter函數定義格式為:filter(func,iterables)【功能描述】可迭代序列iterables中的每個元素依次代入函數或匿名函數func中執行,然后把各返回值結果封裝成filter對象返回。可進一步通過列表或元組等形式查看該對象中包含的數據內容。filter函數的形參func通常返回True或False。【案例】lambda與reducereduce函數定義格式為:reduce(func,sequence[,initial])【功能描述】其中,initial為可選參數,表示初值,求和默認值為0,求積默認值為
1,也可顯式指定為其他值。【案例1】求和運算,分析以下程序,輸出運行結果。【分析】reduce函數通過lambdax,y:x+y將列表[1,2,3,4,5]中的元素從左至右依次累加,最終得到總和15。lambda與reduce【案例2】求積運算,分析以下程序,輸出運行結果。【分析】每次調用`lambdax,y:x*y`
需要兩個參數,分析過程同求和,依次執行以下運算:1*2=2,2*3=6,6*4=24,24*5=120。求積運算的初始值initial默認為1,也可顯式指定。PartFive項目實施項目實施init函數用于打印系統初始化時的信息,包括銀行可辦理的業務列表。deposit函數實現存款功能。使用global關鍵字修改全局變量money的值。存款金額小于0,則提示錯誤;否則,增加賬戶余額,并打印存款和當前余額信息。withdraw函數實現了取款功能。同樣使用global關鍵字來修改money。若取款金額小于0或大于賬戶余額,則打印相應的錯誤信息;否則,減少賬戶余額,并打印取款和當前余額信息。項目實施check函數用于查詢當前賬戶余額,并打印出來。main函數是程序的主要入口點。它調用init函數,進入一個無限循環,不斷提示用戶輸入業務代碼。根據用戶輸入的代碼,調用相應函數來處理請求。若輸入'q',則打印退出信息并退出循環,結束程序。PartSix項目小結主要知識點知
識
點示例說
明函數定義定義求兩數之和的函數defadd(a,b):#函數頭
return(a+b)#函數體函數包含函數頭和函數體。函數頭由關鍵字def、函數名、參數表和冒號組成。函數定義時的參數稱為形參,如a和b函數調用s=add(2,3)函數調用“喊名字,傳參數”,函數調用時傳遞的參數稱為實參,如2和3字典字典名={key1:value1,5…,keyn:valuen}由若干鍵值對key:value構成變量的作用域a=2#全局變量,其值為2defchange():
a=10#局部變量,其值為10
print('a=',a)#訪問局部變量change()#輸出a=10該例中定義了同名的不同變量a,一個是全局變量,一個為局部變量global引入全局變量a=2#全局變量,其值為2defchange():
globala#引入全局變量
a=10#為全局變量賦值10
print('a=',a)#全局變量change()#輸出a=10該例中僅定義了一個變量即全局變量a,使用global關鍵字在局部空間引入該全局變量易錯知識點易錯知識點錯誤示例說明函數定義錯誤deffun(n)
#函數體語法錯誤。函數頭尾部漏掉冒號:帶參函數定義defprint_info(age=17,name):
#函數體帶默認值的參數必須放在所有非默認值參數后面易錯知識點THANKS!項目六烏龜吃魚游戲——面向對象textbook教材Python程序設計項目化教程孫海洋
編著
電子工業出版社ISBN:9787121477546項目描述【項目描述】模擬烏龜吃魚游戲,游戲規則:水池中有一只烏龜和若干條魚,烏龜和魚在水池中游動,如果烏龜遇到魚則把魚吃掉,生命值增加,烏龜游動消耗體力。如果池中所有的魚都被吃掉或者烏龜體力耗盡游戲結束。Contents目錄01.聰明的小狗——類和對象04.愛心募捐——實例變量和類變量02.莫問年齡和存款——私有成員03.生物進化——繼承05.項目實施06.項目小結PartOne聰明的小狗——類和對象掌握類定義結構掌握構造對象的方法掌握通過對象名調用屬性和行為的方式任務描述【任務描述】設計一個狗類,包含名字、品種、年齡等屬性,具備搖尾、趴下、打滾、奔跑等行為。運行結果如下所示。讓我們一起學習類和對象來解決這個問題吧!面向對象和類01面向對象編程OOP是一切皆對象,把具有相同屬性和行為的對象抽象為“類”。02面向對象三大特性為封裝、繼承和多態。03類是編程中創建對象的模板,用class定義,擁有屬性存儲信息和方法執行操作。面向對象和類【類定義格式1】含構造方法【類定義格式2】不含構造方法,系統提供默認的無參構造方法【說明】在Python中,構造方法`__init__`用于初始化新創建的對象,為其屬性賦初值。如果沒有顯式定義構造方法(僅含有self)。析構方法`__del__`在對象被刪除時自動調用。類中的方法通常以`self`作為第一個參數,代表當前對象實例,其余參數根據需要定義。下面,我們來舉幾個例子幫助大家更好理解面向對象和類【案例1】定義一個學生類,包括姓名、年齡、班級等屬性,以及自我介紹方法。【案例2】定義一個鳥類Bird,僅包含飛行方法,不含構造方法。創建對象構造類的對象時,通過類的名字調用構造方法__init__,為該對象的數據成員即屬性賦初值。如果類中沒有顯式定義構造方法或者定義的構造方法除了self外,沒有其他參數,則創建該類對象的格式如下:舉例:在這個例子中,Bird類沒有定義構造方法,因此Python自動提供了一個默認的無參構造方法。當我們創建Bird類的對象b時,我們使用Bird(),括號內是空的,表示沒有傳遞任何參數。然后我們可以調用b對象的fly方法來模擬鳥的飛行行為。創建對象若類中定義的構造方法除了self外還有其他參數,則創建該類對象格式如下:舉例:在這個例子中,Student類有一個構造方法__init__,它接受三個參數:name、age和class_info。創建Student類的對象s1和s2時,需要提供這些參數的值。然后,我們可以通過調用introduce方法來打印每個學生的信息。通過對象訪問屬性和行為訪問對象屬性的格式如下:舉例:在這個例子中,Student類有三個屬性:name、age和cls。我們創建了兩個Student類的對象s1和s2,并且為它們的屬性賦了初值。然后,我們通過點操作符訪問這些屬性,并使用print函數輸出它們的值。通過對象訪問屬性和行為訪問對象行為的格式如下:舉例:在這個例子中,我們定義了一個Student類,它有一個構造方法和一個introduce方法。我們創建了一個Student對象student,并調用了它的introduce方法來打印自我介紹。任務實施__init__是類的構造方法,用于初始化創建的對象。它接受breed(品種)、name(名字)和age(年齡)作為參數,并將它們設置為對象的屬性。speak方法用于模擬小狗的自我介紹,打印出小狗的品種、名字和年齡。wag方法模擬小狗搖尾巴的動作,打印出搖尾巴的小狗的名字。lie方法模擬小狗趴下的動作,打印出趴下的小狗的名字。roll_over方法模擬小狗打滾的動作,打印出打滾的小狗的名字。run方法模擬小狗跑步的動作,參數dis表示距離(米),并打印出小狗的名字和跑的距離。任務實施創建了兩個Dog類的對象dog1和dog2,分別代表兩個不同品種和名字的小狗,以及它們的年齡。調用各類方法運行結果如下:鞏固案例【案例】定義一個圓類,包含屬性半徑,及求周長和面積的方法。參考代碼:PartTwo莫問年齡和存款——私有成員任務描述【任務描述】設計一個Python個人信息類。創建一個Person類,封裝姓名、私有的年齡、分數和存款。實現方法以輸出個人信息、安全地獲取和設置分數、以及模擬賺錢和花錢。在主程序中演示這些功能。讓我們一起學習一下私有成員屬性來完成這個任務吧!私有成員屬性Python類中的屬性默認是公開的,可以自由訪問和修改,這可能違反封裝原則并降低安全性。為了提供封裝和數據保護,Python使用雙下劃線`__`前綴來定義私有屬性,如`__weight`和`__score`。私有屬性只能在類內部訪問,外部代碼不能直接訪問它們。通常,類會提供公共的`get_屬性名`和`set_屬性名`方法來間接訪問和修改這些私有屬性。【錯誤案例】試圖在類外直接訪問私有成員屬性。私有成員屬性【正確案例】通過set***和get***方法可在類外間接訪問私有屬性。定義了一個公開方法getWeight,用于獲取私有屬性__weight的值。定義了一個公開方法setWeight,它接受一個參數newWeight,用于設置私有屬性__weight的新值。newWeight將傳入的newWeight值賦給私有屬性__weight。調用setWeight方法,將體重修改為59.5公斤。任務實施__init__是構造方法,初始化Person對象的屬性。接受姓名、年齡、分數和金錢作為參數,并將它們設置為對象的屬性。其中,年齡、分數和金錢屬性名前使用了雙下劃線__,這表示它們是私有屬性。speak方法用于打印出人的姓名、年齡、分數和余額。返回私有屬性__age的值和私有屬性__score的值。setSc方法接受一個新分數newSc,先打印出修改前的成績,然后更新成績,并打印出修改后的成績。任務實施spend方法接受一個金額amount,將其從余額中減去,并打印出花錢后的信息和當前余額。運行結果如下:PartThree生物進化——繼承掌握類的定義結構掌握構造對象的方法掌握通過對象名調用屬性和行為的方式單繼承單類繼承的格式為:pass表示占位符,通常表示暫時沒實現的函數(方法)體或類體。子類默認繼承父類的非私有屬性和方法。直接調用從父類繼承過來的方法為不重寫父類方法—直接繼承單繼承在子類中重寫父類中的同名方法,相當于把從父類繼承過來的該方法覆蓋掉。該方法為重寫父類方法—方法覆蓋運行結果為:多重繼承多重繼承是子類擁有多個父類,可同時繼承多個父類的屬性和方法。其格式為:【案例】閱讀以下程序,分析其運行結果。【分析】子類Swan擁有兩個父類Bird和Goose,即同時繼承了父類Bird的fly方法,以及父類Goose的swim方法。【說明】多個父類名用逗號間隔,表示子類同時繼承多個父類的屬性和方法。PartFour愛心募捐——實例變量和類變量掌握實例變量的定義和使用掌握類變量的定義和使用任務描述【任務描述】設計一個募捐類,統計輸出實時捐款金額和明細。該項任務涉及實例變量和類變量。實例變量就是屬于對象(實例)的變量(屬性),每個對象均有屬于自己的獨立實例變量。而類變量屬于整個類的所有對象所共有,即“公共空間”。相信同學們對于什么是實例變量和類變量還是一頭霧水,讓我們一起進入實例變量和類變量的學習中吧!實例變量實例變量是指在類的任意方法內部,以self開頭定義的變量(屬性)。實例變量定義self.變量名語法格式實例變量只能通過對象名訪問,不能通過類名訪問。訪問方式
實例變量【案例】閱讀以下代碼,分析其中的實例變量。【分析】在類中的任意方法內以“self.變量名”定義和使用的變量均為“實例變量”,故該類構造方法中的、self.age、self.__score這三個以self開頭的變量均是實例變量。運行結果展示了同一個類`Stu`的不同對象`s1`和`s2`各自擁有獨立的私有實例變量`self.__score`。它們是各自獨立、互不影響的,即都有自己的獨立存儲空間和值。類變量是指在類的所有方法之外定義的變量。定義01語法格式02類變量既可以通過類名訪問,也可以通過對象名訪問,建議通過類名訪問訪問方式03類變量類變量【案例】閱讀以下代碼,分析其中的類變量和實例變量。這段代碼中的`Rect`類展示了類變量和實例變量的區別:`cnt`是類變量,用于統計創建的`Rect`對象數量,所有對象共享;而`self.w`和`self.h`是實例變量,每個`Rect`對象擁有獨立的寬度和高度值。通過類名或對象名訪問類變量`cnt`,可以獲取創建對象的總數。str.center的使用字符串center方法返回指定總寬度width且居中的字符串,fillchar為填充字符,默認為空格。調用格式為:【案例1】字符串內容(如“歡迎光臨”)為偶數(4)位,輸出總位寬為(11),其余填充符7(奇數)位,則左邊多1個填充符。運行結果如下:str.center的使用【案例2】字符串內容(如“南京歡迎您”)為奇數(5)位,輸出總位寬(12),其余填充符7(奇數)位,則右邊多1個填充符。這兩個案例說明了如果填充字符的總數是奇數,center()會在兩邊分配填充字符,但會多放一個在一側,以確保字符串在中間。哪一側更長取決于總寬度和字符串長度的差值。如果填充字符的總數是偶數,則兩側分配的填充字符數量相等。運行結果如下:任務實施運行結果如下:在循環內部,為每個捐款者創建一個Donate類的實例。調用每個捐款者實例的donate方法,傳入隨機生成的捐款金額,更新捐款總額。donate方法接受一個參數num(捐款金額),并將其加到類變量total上,從而更新捐款總額。PartFive項目實施項目實施swim方法讓動物在其邊界內隨機移動,如果碰到邊界會反彈,并且每次移動會消耗動物的體力。項目實施Turtle類繼承自Animal類,表示烏龜,并添加了特有的eat方法來模擬烏龜吃魚后體力的增加,但不超過100。Fish類繼承自Animal類,表示魚,并添加了特有的bubble方法來模擬魚吐泡泡的動作。創建了一只烏龜和10條魚,并將魚存儲在列表fish_ls中。項目實施如果魚和烏龜在同一位置,烏龜會吃掉魚,并從魚的列表中移除該魚。項目實施運行結果如下:PartSix項目小結項目小結主要知識點面向對象三大特性為:封裝、繼承、多態。類的構造方法是在創建對象時調用,注意其方法名前后均有兩個下畫線__init__。類的私有成員變量前有兩個下畫線,如__age、__money等,在類外不能直接訪問私有成員變量。通常提供get***和set***方法獲取或修改私有成員變量的值。類的繼承分單繼承和多繼承,其主要為提高代碼的復用率。子類默認繼承父類的非私有屬性和方法。THANKS!項目七能否構成三角形——異常處理textbook教材Python程序設計項目化教程孫海洋
編著
電子工業出版社ISBN:9787121477546項目描述【項目描述】自定義一個三角形異常類,當用戶傳入三個數據構造一個三角形對象前,先判斷是否滿足三角形邊長關系,如果不滿足,則拋出異常,并提示用戶重新輸入;若滿足,則構造該三角形對象,計算并輸出其面積。Contents目錄01.除數為零的煩惱——初識異常02.輸入到滿意為止——異常處理03.圓半徑不能為負——自定義異常04.項目實施05.項目小結PartOne除數為零的煩惱——初識異常了解算法的概念了解算法的性質和目標了解異常的概念任務描述【任務描述】小明要設計一個簡易計算器。幫其設計一個除法運算函數,并用測試用例驗證該函數的正確性及健壯性。算法?錯誤?異常?算法性質和目標算法:解決問題的方法、步驟的集合算法性質:有輸入、輸出、有限、確定和可執行5個性質算法目標:算法的正確性、可讀性、健壯性、高時間效率和高空間效率等幾大追求目標算法性質和目標錯誤和異常程序中的錯誤可以分為兩類:一類是外部因素(如硬件、操作系統)引起的“非正常”情況;另一類是Python語法錯誤,導致程序無法執行。而程序執行中因算法、編程或用戶輸入等問題導致的“非正常”情況,被稱為異常。錯誤和異常常見異常類型1.類型異常運行結果:【異常原因】+運算符不能連接字符串和數值。2.值異常運行結果:【異常原因】如果用戶無意中輸入非整數值,如浮點數3.14或字符串hello,則均會拋出如下異常。常見異常類型3.名稱異常運行結果:【異常原因】解釋器不理解c的含義,提示
c未定義。4.文件找不到異常運行結果:【異常原因】若上述文件路徑不存在,則會拋出如下異常。常見異常類型5.索引異常運行結果:【異常原因】列表ls含4個元素,下標索引從0~3,故ls[4]下標越界。6.語法錯誤(強類型異常)運行結果:【異常原因】】字符串“'hello'”的右引號錯誤寫為中文符號常見異常類型7.縮進異常(強類型異常)運行結果:【異常原因】Python是使用縮進來標識代碼塊和代碼邏輯的。示例代碼中的4行代碼應縮進一致。任務實施運行結果如下:【分析】程序打印前五個測試用例的結果。當執行到第六個用例時,由于除數為零,程序拋出ZeroDivisionError異常,并顯示錯誤信息和堆棧跟蹤。PartTwo輸入到滿意為止——異常處理掌握異常處理的關鍵詞掌握異常處理的結構任務描述【任務描述】設計一個除法程序,要求用戶從鍵盤輸入兩個數值,如果輸入合法,則計算并輸出兩數相除的結果。當輸入了非數據,如字符串數據,或除數為0的情況,程序應該能夠給出相應提示信息,而不至于程序崩潰。了解了常見的異常類型后,我們來學習異常處理的基礎知識來完成該任務吧!異常處理結構及流程1.try-except異常處理結構【執行流程】:使用try關鍵詞監控代碼塊,一旦代碼塊執行過程中拋出異常,就檢查異常類型。若異常類型與except后指定的類型相匹配,則執行對應的異常處理;若不匹配,則無法捕獲異常,程序終止執行。2.try-except-else結構【執行流程】程序先嘗試執行try代碼塊,若無異常則執行else部分;若拋出異常,則檢查異常類型,若與except后列出的任一異常類型匹配,則執行異常處理;若不匹配,則程序通常終止執行。異常處理結構及流程3.try-exc
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論