《Python程序設計實踐教程》高職全套教學課件_第1頁
《Python程序設計實踐教程》高職全套教學課件_第2頁
《Python程序設計實踐教程》高職全套教學課件_第3頁
《Python程序設計實踐教程》高職全套教學課件_第4頁
《Python程序設計實踐教程》高職全套教學課件_第5頁
已閱讀5頁,還剩394頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

Python程序設計實踐教程【ch01】Python程序設計實驗的目的與要求【ch02】問題求解與計算思維【ch03】典型算法介紹【ch04】Python環境配置【ch05】數據的輸入和輸出【ch06】turtle繪圖【ch07】運算符與表達式【ch08】字符串【ch09】選擇結構程序設計【ch10】循環結構程序設計【ch11】列表與元組【ch12】字典與集合【ch13】函數【ch14】文件【ch15】調試和異常處理【ch16】面向對象程序設計基礎【ch17】tkinter圖形界面設計【ch18】Python科學計算與數據分析【ch19】數據可視化【ch20】網絡爬蟲入門【ch21】中文詞云【ch22】趣味數字【ch23】趣味算法【ch24】趣味邏輯推理【ch25】趣味應用實例【ch26】字符串應用全套可編輯PPT課件第一章Python程序設計實驗的目的與要求Python程序設計實踐教程01Python程序設計實驗的目的PARTONE(1)掌握常見問題的求解方法。(2)掌握程序調試技術。(3)加深對語法規則的理解。(4)培養良好的編程習慣。(5)熟悉Python程序的集成開發環境。02Python程序設計實驗的基本要求PARTTWO1.實驗前的準備工作(1)回顧與本次實驗有關的知識內容。(2)根據實驗內容,預先設計算法并編寫主要代碼。(3)準備測試數據。2.實驗中的測試工作(1)不要只測試一組數據,應當考慮程序運行時可能出現的各種情況,使用不同的數據進行測試。(2)面對出現的各種錯誤,不要灰心,這是初學者在編程過程中遇到的正?,F象。(3)盡量嘗試自己解決問題,這樣更有利于總結經驗。(4)請教師幫助分析錯誤時,注意總結分析錯誤原因,使自己今后再次面對同類問題時能舉一反三。3.實驗后的總結工作(1)自我審查本次實驗是否達到預期目標。(2)認真整理實驗報告,包括以下幾部分。①實驗目的和內容。②程序設計說明(程序結構、算法設計等)。③經調試的正確源程序。④程序的運行情況(對不同測試數據的運行結果)。⑤分析程序調試過程中出現的主要錯誤。⑥總結本次實驗中掌握的程序設計方法和編程技巧。03程序的編寫與測試PARTTHREE語法錯誤是指不遵循Python的語法結構引起的錯誤,例如括號不成對使用等。如果程序中出現語法錯誤,Python會中斷執行,返回錯誤信息。1.語法錯誤常見的語法錯誤有以下三種。(1)缺少某些必要的符號(冒號、括號等)。(2)關鍵字拼寫錯誤。(3)縮進不正確。語法錯誤的示例如下。>>>print('HelloWorld) #引號不成對使用SyntaxError:EOLwhilescanningstringliteral語義錯誤也稱為邏輯錯誤,是指一個程序可以通過編譯,沒有拋出錯誤信息,但得到的結果是錯誤的,或者不是所期望的結果。這類錯誤可能是因為算法設計錯誤,也可能是因為算法正確而編寫程序時出現差錯。2.語義錯誤常見的語義錯誤有以下三種。(1)缺少某些必要的符號(冒號、括號等)。(2)關鍵字拼寫錯誤。(3)縮進不正確。例如,把關系運算符“==”寫成賦值運算符“=”,系統無法檢查出這種錯誤,只能通過不同的測試數據來檢查程序中可能存在的邏輯錯誤。運行錯誤是指運行時出現的錯誤,也叫作“異常”。3.運行錯誤常見的運行錯誤有以下三種。(1)除數為0(ZeroDivisionError)。(2)打開的文件不存在(FileNotFoundError)。(3)導入的模塊沒被找到(ImportError)。運行錯誤的示例如下。發現程序中存在錯誤時,需要對程序進行調試以確定出錯位置。常用的調試方法包括:臨時增加輸出語句,將要觀察的數據顯示在屏幕上;設置斷點,單步運行程序。04人才培養與課程學習建議PARTFOUR1.人才培養黨的二十大報告明確提出:教育、科技、人才是全面建設社會主義現代化國家的基礎性、戰略性支撐。報告指出,我們要堅持教育優先發展、科技自立自強、人才引領驅動,加快建設教育強國、科技強國、人才強國,堅持為黨育人、為國育才,全面提高人才自主培養質量,著力造就拔尖創新人才,聚天下英才而用之。2.新時代青年的使命擔當(1)從科技發展史來看,新時代青年要發揚斗爭精神,增強斗爭本領,堅持團結奮斗,依靠頑強斗爭打開事業發展新天地,依靠團結奮斗不斷創造新偉業、開創新輝煌;認識軟件發展對國力的重要性,為實現中華民族偉大復興而認真學習。(2)新時代青年要增強民族自信心,應厚植愛國主義情懷,培養奮斗精神。(3)當今世界,新一代信息技術已成為信息化社會不可或缺的基礎設施,計算機軟件開發和應用不再僅僅是程序員的專業技能,還將成為一種生活技能和基本素養。新時代青年要提升自身的數字素養,要敢于思考、敢于創新、敢于標新立異,要想辦法做新的、比別人強的東西。3.學習建議養成良好的編程習慣,遵循以下步驟。1①上機實踐前構思程序設計思路,認真思考。注重認識問題、分析問題、解決問題的步驟和流程。②用心設計,遵循?Python?的編程規范,一絲不茍,哪怕是一個空格、符號。③每次上機實踐后及時總結,把沒有搞清楚的問題記錄下來,進行分析。④多使用調試工具分析程序。⑤注意錯誤信息的提示。⑥經常使用幫助文檔。3.學習建議閱讀、借鑒別人設計好的程序。2讀者經常有這樣的體會:

看別人的代碼時感覺很簡單,自己編寫代碼就容易犯各種錯誤。如果遇到問題,通過已有的知識不能解決,則可以去后面的章節或其他資料中尋找。這樣,編程水平才能不斷提高。注重實踐訓練。3“Python?程序設計”:

是一門對動手能力要求很高的課程,讀者不僅要掌握程序設計的理論知識,還要通過大量的上機實踐加強對理論知識的掌握,從融會貫通到實際應用,最終解決相關專業領域的實際問題。做題練習時不能直接復制代碼、提交、判題,而應該參考書中的實現步驟,自己做一遍。之后可以根據自己對知識點的理解,對實驗內容進行練習。3.學習建議Python?語言雖然容易上手,并具有眾多優點,但要學好并熟練應用于實際問題并非易事。4

學習的過程永遠不可能一帆風順,有樂趣同時必然有坎坷,讀者要有非常強的耐心和實踐精神,養成一絲不茍、刻苦鉆研的工匠精神和求真務實的科學精神。注重培養團隊協作精神。5同學之間要相互討論,培養團隊協作精神和溝通交流能力,切實感受合作、責任、誠信等職業素養的內涵,打牢成長的思想根基。

謝謝觀看第二章問題求解與計算思維Python程序設計實踐教程01計算概述PARTONE1.幾何法時期:割圓術最早計算圓周率的方法是割圓術。魏晉時期的數學家劉徽首創割圓術,為計算圓周率建立了嚴密的理論和完善的算法。所謂割圓術,就是不斷倍增圓內接正多邊形的邊數,求出圓周率。劉徽從圓內接正6邊形開始,每次都把邊數加倍,直至圓內接正96邊形,算得圓周率為157/50(即3.14)。后來,他在此基礎上又計算出了圓內接正3072邊形的面積,得到圓周率的近似值為3927/1250(即3.1416)。南北朝時期的數學家祖沖之進一步求出了圓內接正12288邊形和圓內接正24576邊形的面積,得出3.1415926<π<3.1415927。在之后的800年里,祖沖之計算出的圓周率是最準確的。2.解析法時期:無窮級數分析法割圓術的煩瑣計算促使人們探索新的計算方法,通過無窮乘積、無窮連分數、無窮級數等各種計算方法,圓周率的計算精度迅速增加。1706年,英國數學家梅欽率先將圓周率突破百位。1948年,英國的弗格森和美國的倫奇共同發表了π的808位小數值,成為人工計算圓周率的最高紀錄。

【例2-1】格里高利公式求圓周率利用格里高利公式()求圓周率。3.計算機時期:蒙特卡羅法計算機的出現使圓周率的計算速度和精度有了突飛猛進的發展。2011年10月16日,日本長野縣飯田市公司的職員近藤茂利用家用計算機將圓周率計算到小數點后10萬億位。圖2-2圓及其外接正方形畫一個圓的外接正方形,假設圓的半徑是1,那么圓的面積是π,外接正方形的面積是4,如圖2-2所示。任意產生正方形內的一個點,該點落在圓內的概率=圓面積/正方形面積,即π/4。3.計算機時期:蒙特卡羅法蒙特卡羅法利用了概率統計的思想,使用隨機數來解決計算問題。隨著實驗次數增多,會出現概率收斂,計算值會更好地逼近精確解,這使求得的解是可以接受的。蒙特卡羅法在金融工程學、宏觀經濟學、計算物理學等領域中有著廣泛的應用。蒙特卡羅法利用了概率統計的思想,使用隨機數來解決計算問題。隨著實驗次數增多,會出現概率收斂,計算值會更好地逼近精確解,這使求得的解是可以接受的。蒙特卡羅法在金融工程學、宏觀經濟學、計算物理學等領域中有著廣泛的應用。02求解計算機問題PARTTWO1.計算機解題的特性日常生活中有許多應用順序流程的例子,炒菜時要根據一定的次序投放食材與調味品;網絡購物時要通過規定的步驟完成購物過程,如選擇商品、填寫數據、付款等;使用自動提款機進行交易時,需要依次完成插卡、輸入密碼、選擇金融交易方式、輸入金額等步驟。

當我們要解決的問題比較復雜時,可以將大問題分成幾個較小的問題,再設計較小問題的解決方案。計算機解題的特性是根據所設計的步驟按順序執行,每次執行都會獲得一致的結果。由于垂直式思維的推理結論具有正確性、系統性、普遍性,所以大部分步驟能轉換成可以執行的步驟。2.計算機解題的應用(1)科學計算

科學計算是計算機應用的一個重要領域,如高能物理、工程設計、地震預測、氣象預報、航天技術等。同時,由于計算機具有很高的運算速度、精度及邏輯判斷能力,出現了計算力學、計算物理、計算化學、生物控制等新學科。(3)計算機輔助系統

計算機輔助系統包括計算機輔助設計(CAD)、計算機輔助工藝過程設計(CAPP)、計算機輔助制造(CAM)、計算機輔助教學(CAI)等。(2)數據處理

數據處理是指通過計算機獲取、加工、處理各種數據及數據可視化,提高管理效率,如管理信息系統(MIS)、物資需求計劃(MRP)、企業資源計劃(ERP)、制造執行系統(MES)、電子商務系統等。2.計算機解題的應用(4)生產自動化

生產自動化包括工業流程控制、流水線控制、無人工廠等。(6)生活出行

網絡信息資源的深層次利用和網絡應用的日趨大眾化正在改變著我們的工作方式和生活方式。(5)人工智能

生產自動化包括人臉識別、藥物研發、機器人、交通等場景應用。3.計算機解題的基本步驟問題分析與建模1對現實問題進行分析、抽象,建立相應的數學模型,把對現實問題的求解轉化為對抽象數學模型的求解,滿足計算機處理問題的特點和基本要求。問題分析與建模時首先要確定問題的邏輯結構和基本功能,然后在結合數學、物理、計算機等的基礎上,建立相關數學模型。數學建模是一種數學思考方法,是指運用數學語言和方法,通過抽象、簡化建立能近似刻畫并解決實際問題。3.計算機解題的基本步驟算法設計與實現2算法設計與實現是指設計解決某一特定問題或某一類問題的一系列步驟,并且要求這些步驟可以通過計算機的基本操作來實現。算法設計完成后,要將其表示成計算機語言,從而能夠通過計算機來解決現實中的具體問題。算法分析3算法分析是指對所設計算法的性能特征進行分析、評價和總結。03計算思維PARTTHREE1.思維和思維過程

思維(Thinking)是人類對情感、信息處理過程的一種概括和抽象,是一種心理活動的反映,是人腦從對客觀事物的直接感知過渡到抽象思維的升華,反映了客觀事物的本質與規律。思維是通過一系列比較復雜的操作來實現的,如分析與綜合、比較、抽象與概括等,通常具有概括性、間接性、能動性三大特性。1.思維和思維過程(1)概括性在人的感性基礎上,將一類事物的共同特性和本質規律抽象出來,加以歸納與概括。例如,人類通過長期對地球氣候和植物生長規律的觀察,總結出了二十四節氣與種植時節。(2)間接性將非直接的事物作為媒介,來反映事物的特征或規律。例如,醫生根據醫學知識和臨床經驗,結合病人的癥狀和化驗結果,推斷出病人的病情。(3)能動性思維不僅能認識和反映客觀規律,而且能改造客觀世界。例如,人類認識了萬有引力,還發射了人造衛星、太空飛船。2.科學思維傳統的科學研究手段理論研究和實驗研究,計算則是兩種研究的一種輔助手段。隨著計算技術和計算機技術的迅速發展,計算已上升為科學研究的一種手段,它直接并有效地為科學研究服務??茖W思維(ScientificThinking)理論認識及其過程,即通過整理和改造感性階段獲得的大量材料,形成概念、判斷、推理,反映事物的本質和規律。2.科學思維理論思維(TheoreticalThinking)又稱為邏輯思維1通過抽象和概括,描述事物的本質,用科學的方法探尋概念之間的聯系。它以推理和演繹為特征,以數學學科為代表。通過觀察和實驗獲取自然規律、法則的一種思維方法。它以觀察和歸納自然規律為特征,以物理學科為代表。實驗思維(ExperimentalThinking)又稱為實證思維22.科學思維計算思維(ComputationalThinking)又稱為構造思維3從具體的算法設計規范入手,通過算法過程的構造與實施來解決特定問題。它以設計和構造為特征,以計算學科為代表。3.理解計算思維

計算思維的認識過程計算思維的定義計算思維的特征計算機科學與計算思維010203044.計算思維的應用計算生物學1計算生物學是生物學的一個分支,用于開發和應用數據分析及理論、數學建模、計算機仿真等,并應用于生物學、行為學、社會群體研究的一門學科,如基因測序、蛋白質結構預測等。4.計算思維的應用計算化學2計算化學主要用計算機程序和方法對特定的化學問題進行研究,如數值計算(量子化學和結構化學中的演繹計算、分析化學中的條件模擬、化工過程中的應用計算等)、化學模擬、模式識別等。4.計算思維的應用計算數學3計算數學也叫作數值計算方法或數值分析,如數值計算和分析、系統建模和仿真、數字信號處理、數據可視化、財務與金融工程計算、軟件機器人等。4.計算思維的應用其他學科領域4許多其他學科通過抽象建模,將研究從定性分析轉化為定量研究,將計算思維應用于經濟學、管理科學、法學、文學、藝術、體育等社會科學領域。計算思維改變了各學科領域的研究模式,如計算機博弈論改變了經濟學家的思考方法。1994年諾貝爾經濟學獎授予約翰·納什(JohnNash)、萊茵哈德·澤爾騰(ReinhardSelten)、約翰·海薩尼(JohnC.Harsanyi)三位博弈論專家,他們有力地證明了博弈論在現代經濟學中的地位。5.為什么要倡導計算思維計算思維就是用計算機科學解決問題的思維,它是每個人都應該具備的基本技能,不僅僅屬于計算機科學家。計算思維訓練對計算機應用人才的培養是極為重要的,它不僅能使學生理解計算機的實現機制和約束條件,有利于學生進行發明和創新,更重要的是有利于提高學生的信息素養,也就是處理計算機問題時應有的思維方法、表達形式、行為習慣。因此,提高計算機基礎教學的質量,增強學生的計算思維能力,是培養應用型、創新型人才的必然要求。盡管計算機科學不等于程序設計,但不可否認的是,學習程序設計方法是理解計算機的最好途徑。編程思維是無止境的,不同問題有不同的分析方法、算法、代碼實現方法。在教學中有意識地引導學生多視角、多方位地進行編程思考,會使學生的思維能力得到跳躍式擴展和提高。(1)計算思維與數學基礎的構建計算機科學在本質上源于數學思維,它的形式化解析基礎筑于數學之上。(2)計算思維與計算機科學導論的學習為了對計算機科學的課程體系和知識體系有比較清晰的了解,必須站在計算思維的高度和廣度來了解和掌握計算機學科的基本概念、基本方法、發展趨勢,知曉學科的內涵和本質,將其作為計算機科學的導學部分。6.如何培養和訓練計算思維(3)計算思維與思維能力的培養計算思維是人類求解問題的一條途徑。過去,人們認為計算機科學家的思維就是用計算機去編程,這種認識是片面的。計算思維不僅是程序化的,而是在抽象的多個層次上進行思維。(4)計算思維與應用能力的培養目前,計算機應用已經深入到各行各業中,融入人類活動中,解決了大量計算時代之前無法解決的問題。(5)計算思維與創新能力的培養創新是一個民族生存、發展和進步的原動力。計算思維的培養對創新能力的培養至關重要,創新要靠科學素養和理解科學,靠科學的思想方法。6.如何培養和訓練計算思維04算法PARTFOUR1.算法及其描述算法概述1算法解決特定問題的方法或步驟,或者說,算法是為解決一類特定問題而設計的確定的、有限的操作步驟。算法是程序設計的關鍵,找不到算法就無法編寫計算機程序,也就無法用計算機來解決問題。廣義上

算法是指通過運算的方式,按照某種機械的步驟逐步求解問題。狹義上

算法是解決一個問題采取的方法和步驟的描述,如圖2-8所示。圖2-8狹義的算法1.算法及其描述算法的分類2不是所有算法都適合在計算機上執行,能在計算機上執行的算法就是計算機算法。計算機算法可以分為兩類:一類是數值算法,另一類是非數值算法。1.算法及其描述算法的特性3(1)有窮性一個算法必須在執行有限個計算步驟后終止。(2)確定性一個算法給出的每個計算步驟都必須是精確定義、無二義性的。(3)有效性算法中的每個步驟都必須被有效地執行,并能得到確定的結果。(4)有零個或多個輸入信息一個算法可以沒有輸入信息,也可以有一個或多個輸入信息,這些輸入信息是算法的初始數據。(5)有一個或多個輸出信息一個算法應有一個或多個輸出信息,沒有輸出信息的算法是沒有意義的。1.算法及其描述如何發現算法4(1)第一階段:分析、理解、抽象、歸納問題。(2)第二階段:尋找一個可能解決問題的思路。(3)第三階段:用數學語言將其表達出來。(4)第四階段:闡明算法并選用合適的數據結構,用程序將其編寫出來。(5)第五階段:評估算法的準確度以及算法是否有潛力作為一個解決問題的工具。2.算法的表示形式自然語言1自然語言就是人們日常使用的語言,可以是漢語、英語或其他語言。用自然語言表示算法的優點是通俗易懂,缺點是文字冗長,容易出現歧義性。偽代碼2偽代碼是介于自然語言和計算機語言之間的文字和符號(包括數學符號),如同寫一篇文章,自上而下地寫下來,每一行(或幾行)表示一個基本操作。偽代碼不使用圖形符號,因此書寫方便、格式緊湊,也比較易懂,便于向計算機語言程序轉換。2.算法的表示形式流程圖3流程圖是一種傳統的算法表示方法,它使用不同的幾何圖形框來代表不同性質的操作,用流程線來指示算法的執行方向。流程圖直觀形象、易于理解,所以應用廣泛。05數據結構PARTFIVE1.數據結構的定義數據結構(DataStructure)計算機存儲、組織數據的方式,是指相互之間存在一種或多種特定關系的數據元素的集合。數據結構主要包括數據的邏輯結構、數據的物理(存儲)結構、數據的運算結構。2.常用的數據結構(1)數組(Array)在程序設計算法中,為了處理方便,把具有相同類型的若干變量有序地組織起來,這些按序排列的同類數據元素的集合稱為數組。數組是n(n>1)個相同類型的數據元素a0,a1,…,an-1構成的有限序列,該有限序列存儲在一塊地址連續的內存單元中,可以把它看作一種長度固定的線性表。(2)棧(Stack)棧是只能在某一端插入和刪除數據的特殊線性表。它按照“先入后出”的原則存儲數據,先進入的數據被壓入棧底,最后進入的數據在棧頂,讀取數據時從棧頂開始彈出數據(最后進入的數據第一個被讀取),如圖2-11所示。特點:先入后出、后入先出;除了頭、尾節點,每個節點都有一個后繼和一個前驅。2.常用的數據結構(3)隊列(Queue)隊列是一種特殊的線性表,它只允許在表的前端(Front)進行刪除操作,以及在表的后端(Rear)進行插入操作。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。隊列是按照“先入先出”和“后入后出”的原則組織數據的。隊列中沒有元素時稱為空隊列。特點:先入先出,后入后出;除了尾節點,每個節點都有一個后繼;除了頭節點,每個節點都有一個前驅。(4)鏈表(LinkedList)鏈表是一種物理存儲單元上非連續、非順序的存儲結構,它既可以表示線性結構,也可以表示非線性結構。數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。每個節點包括兩部分,一是存儲數據元素的數據域,二是存儲下個節點地址的指針域。2.常用的數據結構(5)樹(Tree)樹是由n(n≥0)個節點組成的有限集合,若n=0,稱為空樹;若n>0,則滿足以下兩個條件。①有一個特定的稱為根(Root)的節點,它只有直接后繼,但沒有直接前驅。②除根節點以外的其他節點可以劃分為m(m≥0)個互不相交的有限集合(T0,T1,…,Tm-1),集合Ti(i=0,1,…,m-1)又是一棵樹,稱為根的子樹。(6)圖(Graph)圖由節點的有窮集合V和邊的集合E組成。為了與樹形結構加以區別,在圖結構中常將節點稱為頂點,邊是頂點的有序偶對。如果兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關系。圖被廣泛應用于各個領域,可以解決很多實際問題。圖的應用有求最短路徑、拓撲排序、關鍵路徑等。06算法評價PARTSIX1.算法的評價標準(1)正確性:算法的執行結果應當滿足規定的功能和性能要求。(2)可讀性:算法應當思路清晰、層次分明、簡單明了、易讀易懂。(3)健壯性:算法應具有對不合理數據的反應能力和處理能力,也稱為容錯性。。(4)高效性:算法應有較高的時間效率。(5)低存儲量需求:存儲量是指算法執行過程中需要的最大存儲空間,即有效使用存儲空間。2.時間復雜度算法的時間復雜度(TimeComplexity)是指算法運行的時間,是算法所求解的問題規模n的函數,通常記為T(n)。時間復雜度是算法的時間代價,用執行算法所需的基本操作(原操作)次數來描述,以基本操作重復執行的次數(稱為頻度)作為算法的時間度量。許多時候,要精確地計算T(n)是困難的。一般情況下,算法的基本操作重復執行的次數是規模n的函數F(n)。例如,一個算法的運行時間為35n+102,當n≥4時,35n對算法的運行時間有更大的影響。隨著n逐漸增大,n成為影響算法運行的主要因素。但是,n趨于無窮大時,35n+102就可以寫作O(n),意味著算法運行時間與輸入規模呈線性關系。3.空間復雜度算法的空間復雜度(SpaceComplexity)是算法在運行過程中臨時占用的存儲空間,記作S(n)=O(f(n))。其計算和表示方法與時間復雜度類似,一般用復雜度的漸近性來表示。個算法在計算機存儲器上所占用的存儲空間包括以下三個方面。①存儲算法本身所占用的存儲空間。②算法輸入、輸出數據所占用的存儲空間。③算法在運行過程中臨時占用的存儲空間。4.時間復雜度與空間復雜度的比較對于一個算法,其時間復雜度和空間復雜度往往是相互影響的。追求較好的時間復雜度時,可能會使空間復雜度的性能變差,即可能占用較多的存儲空間;追求較好的空間復雜度時,可能會使時間復雜度的性能變差,即可能占用較長的運行時間。另外,算法的性能之間存在著或多或少的相互影響。因此,設計一個算法(特別是大型算法)時,要綜合考慮算法的各項性能(算法的使用頻率、算法處理的數據量的大小、算法描述語言的特性、算法運行的機器系統環境等),才能設計出較好的算法。5.提高算法效率的方法①降低程序復雜度。程序復雜度主要是指模塊內部程序的復雜度,往往采用McCabe度量法計算程序模塊中的環路個數。②選用高效率的算法。對算法的空間復雜度和時間復雜度進行優化,選擇高效的算法。謝謝觀看第三章典型算法介紹Python程序設計實踐教程01枚舉算法PARTONE1.算法定義枚舉算法(ExhaustAlgorithm)又叫窮舉法,也稱為暴力破解法,是指針對要解決的問題,列舉出所有可能的情況,逐個判斷哪些符合問題所要求的約束條件,從而得到問題的解。2.算法特點這種算法充分利用計算機語言的循環結構,其優點是思路簡單,程序編寫和調試都很方便。如果問題規模不是很大,要在規定的時間與空間內求出解,那么枚舉算法是最直接、簡單的選擇。這種算法的缺點是運算量比較大、解題效率不高。如果枚舉范圍太大(超過2000000次),會花費大量時間。3.算法思路這種算法的基本思想是根據問題的條件確定大致范圍,并在該范圍內進行窮舉并驗證,直到問題得到解決。這種算法一般用于決策最優化問題,適合那些很難找到大、小規模之間的關系,也不易進行分解的問題。第一步確定解題范圍,枚舉出所有可能的解。第三步使可能解的范圍降至最小,以便提高解題效率。第二步判斷是否符合正解的條件。4.算法案例【例】“百雞百錢”問題中國古代數學家張丘建在《算經》中提出了著名的“百雞百錢”問題:雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一;百錢買百雞,問雞翁、雞母、雞雛各幾何?(已知公雞每只5元,母雞每只3元,小雞1元3只。要求用100元正好買100只雞,問公雞、母雞、小雞各買多少只?)題目分析:設買x只公雞、y只母雞、z只小雞,則問題轉化為三元一次方程組,即x+y+z=100(百雞),5x+3y+z/3=100(百錢),1個方程無法解出3個變量,只能將各種可能的取值代入,求出能使兩個方程成立的解。雞和錢的總數都是100,因此可以確定x、y、z的取值范圍。x的取值范圍為1~20(100/5=20),y的取值范圍為1~33(100/3≈33),z的取值范圍為1~99,求解流程圖如圖3-1所示。02遞歸算法PARTTWO1.算法定義遞歸算法(RecursionAlgorithm)把問題轉化為同類問題的子問題,然后通過遞歸調用過程(或函數)表示問題的解。一個程序過程(或函數)直接或間接調用自己本身,這種過程(或函數)稱為遞歸過程(或函數)。

遞歸調用分為直接遞歸和間接遞歸。直接遞歸是指在過程中調用方法本身,間接遞歸是指間接地調用一個過程。一般來說,遞歸算法需要有邊界條件、遞歸前進段、遞歸返回段。不滿足邊界條件時,遞歸前進;滿足邊界條件時,遞歸返回。2.算法特點遞歸過程一般通過函數或子過程來實現,在函數或子過程的內部直接或間接地調用自身,常用于一些有明顯遞推性質的問題。遞歸算法的優點

代碼簡潔、清晰、可讀性好。遞歸算法的缺點

遞歸形式比非遞歸形式的運行速度慢。如果遞歸層次太深,會導致堆棧溢出。雖然算法代碼通常顯得很簡潔,但遞歸算法的運行效率較低。所以,如果有別的算法可行,一般不提倡用遞歸算法設計程序。3.算法思路遞歸

把一個問題歸結為一個或多個規模更小的子問題,然后用同樣的方法求解規模更小的子問題,要求子問題與原問題是同一類型,以保證可用同樣的方法求解。如此下去,直到子問題的規模小到可以直接求解。遞歸算法有以下三個基本要求。①每次循環都必須使問題規模變小。②遞歸操作中相鄰的兩步是緊密關聯的,在返回到上一層的操作中,前一次的輸出信息是后一次的輸入信息。③當子問題的規模足夠小時,能直接求出該子問題的解,也就是說必須具備結束遞歸的初始條件。4.算法案例【例】階乘問題階乘(Factorial)是指1到n之間的所有自然數相乘的結果。在進行問題求解前,首先分析下面的分段函數。f(n)=1,n=1f(n)=nf(n-1),n>1編寫程序時,以fact()函數的調用過程為例,遞歸調用分為遞推和回歸兩個階段,如圖3-2所示。遞歸調用4.算法案例【例】漢諾塔(Hanoi)問題漢諾塔問題是一個古典數學問題,只能用遞歸算法來解決。有一個漢諾塔,塔內有A、B、C三個座。開始時A上有64個盤子,盤子的大小不同,大的在下面,小的在上面,如圖3-3所示?,F有一個和尚想將這64個盤子從A移動到C上,但他每次只能移動一個盤子。在移動過程中,必須保持A、B、C上的盤子是大盤在下、小盤在上的狀態。在移動過程中可以利用B,請分析移動過程。漢諾塔4.算法案例首先考慮A上最下面的盤子,如果能將它上面的63個盤子移動到C上,則完成任務,具體步驟如下。①將A最上面的63個盤子移動到B上。②將A上剩下的一個盤子移動到C上。③將B上的63個盤子移動到C上。如果能完成上述三步,則完成任務,這種方法就是遞歸的思考方法。為了將A最上面的63個盤子移動到B上,還需要做以下工作。①將A最上面的62個盤子移動到C上。②將A上剩下的一個盤子移動到B上。③將C上的62個盤子移動到B上。03分治算法PARTTHREE1.算法定義分治算法

將一個規模為n的問題分解為k個規模較小的子問題(這些子問題相互獨立且與原問題的性質相同),再把子問題分成更小的子問題,直到子問題可以直接進行求解,原問題的解即為子問題解的合并。任何一個可以用計算機求解的問題所需的計算時間都與其規模有關。問題的規模越小,越容易求解,所需的計算時間也越少?!胺侄沃奔记墒呛芏喔咝惴ǖ幕A,如排序算法(快速排序、歸并排序等)、傅里葉變換(快速傅里葉變換)等。由分治算法產生的子問題往往是原問題的較小模式,這就為使用遞歸技術提供了方便。2.算法特點當問題的規??s小到一定程度時,就可以容易地解決。如果問題可以分解為若干個規模較小的相同問題,則該問題具有最優子結構性質。利用子問題的解可以合并出問題的最終解。所分解出的各個子問題是相互獨立的,即子問題之間不包含公共的子問題。010203043.算法思路(1)分解將要解決的問題劃分成若干規模較小的同類問題。(2)求解當子問題劃分得足夠小時,用較簡單的方法解決。(3)合并按原問題的要求,將子問題的解逐層合并,構成原問題的解。4.算法案例【例】在有序數據數列中查找給定的數設n個有序數(從小到大排序)存放在數組a[0]~a[n-1]中,要查找的數為x。用變量bot、top、mid分別表示所查找的數據范圍的底部(序列的下界)、頂部(序列的上界)、中間(mid=(bot+top)/2),算法如下。(1)如果x=a[mid],則已找到給定的數,退出循環,否則進行下面的判斷。(2)如果x<a[mid],則x必定在bot~mid-1范圍內,即top=mid-1。(3)如果x>a[mid],則x必定在mid+1~top范圍內,即bot=mid+1。(4)確定了新的查找范圍后,重復進行以上比較,直到找到給定的數或top≤bot。04遞推算法PARTFOUR1.算法定義遞推算法一種簡單的算法,即通過已知條件,利用特定關系得出中間推論,直至得到結果。順推法從已知條件出發,逐步推算出要解決的問題。逆推法從已知問題的結果出發,用迭代表達式逐步推算出問題的開始條件,即順推法的逆過程。3.算法思路遞推算法的本質按規律逐次推出(計算)下一步的結果,所以更多用于計算。遞推算法是計算序列的一種常用算法,其思想是把一個復雜的、龐大的計算過程轉化為簡單過程的多次重復,利用了計算機速度快和“不知疲倦”的特點。第一步確定問題的數據信息之間存在著特定的遞推關系,并用數學公式描述出來。第三步盡量使用簡單變量,使計算的過程值暫用的空間量少,以便提高解題效率。第二步確定由已知的基礎數據可以遞推出后面的數據。4.算法案例【例】斐波那契數列(FibonacciSequence)問題斐波那契數列是:1,1,2,3,5,8,13,21,34,55,89,144…,求第n項的值。設它的函數為F(n),已知F(1)=1、F(2)=1,那么F(n)=F(n-1)+F(n-2)(n≥3),則通過順推可以知道,F(3)=F(1)+F(2)=2、F(4)=F(2)+F(3)=3……只要配合循環控制序列項編號,就很容易得到想要的項值。05貪心算法PARTFIVE1.算法定義貪心算法將問題的求解過程看作一系列選擇,它所作的每一個選擇都是當前狀態下某種意義上的最優解(即貪心選擇),并期望通過每次所作的貪心選擇(局部最優解)導致最終結果是問題的一個最優解或近似最優解。2.算法特點有一個以最優方式解決的問題。為了構造問題的解決方案,有一個候選的對象的集合。隨著算法的進行,將積累起其他兩個集合,一個包含已經被考慮過并被選出的候選對象,另一個包含已經被考慮過但被丟棄的候選對象。有一個函數來檢查一個候選對象的集合是否提供了問題的解答,該函數不考慮此時的解決方法是否最優。還有一個函數檢查是否一個候選對象的集合是可行的,即是否可能往該集合上添加更多的候選對象以獲得一個解。和上一個函數一樣,此時不考慮解決方法的最優性。選擇函數可以指出哪個剩余的候選對象最有希望構成問題的解。01020304053.算法思路貪心算法的主要思路如下。①建立數學模型來描述問題。②把求解的問題分成若干個子問題。③對每一子問題求解,得到子問題的局部最優解。④把子問題的局部最優解合成原來問題的一個解。一般情況下,要選出最優量度標準并不是一件容易的事,但對某問題選擇出最優量度標準后,用貪心算法求解特別有效。4.算法案例【例】背包問題(KnapsackProblem)假設有n個物品和一個背包,物品i的重量是Wi,價值為Pi,背包的載荷能力為M。對于任一物品,該物品只能裝入一次,并且不能只裝入物品的一部分(要么整體裝入背包,要么不裝入)。請問:如何選擇物品,才能使裝入背包中的物品的總價值最大?將該問題轉化成數學語言。給定M>0、Wi>0、Pi>0(1≤i≤n),要求找出一個n元向量(X1,X2,…,Xn),使得∑WiXi≤M,而且∑PiXi最大。4.算法案例【例】旅游路徑的選擇貪心算法也很適合用于旅游路徑的選擇,如圖所示,假如要從節點5走到節點3,最短的路徑是什么呢?以貪心算法來說,當然是先走到節點1,接著走到節點2,最后走到節點3,這樣的距離是28??墒菑膱D中我們發現直接從節點5走到節點3才是最短的距離,也就是說,在這種情況下無法用貪心算法找到最佳的解決方案。旅游路徑的選擇06回溯算法PARTSIX1.算法定義回溯算法(Back-TrackingAlgorithm)一種“選優”的搜索方法,按照“選優”的條件向前搜索,以達到目標;如果搜索到某一步時,發現原先的選擇并不“優”或達不到目標,就退一步重新選擇,這種走不通就退回再走的技術就是回溯算法。2.算法特點回溯算法

沿著一條路往前走,能進則進,不能進則退回來,換一條路再試?;厮菟惴ㄔ诿詫m搜索中很常見,如果某條路走不通,就返回前一個路口,繼續探尋下一條路?;厮菟惴ㄆ鋵嵕褪且环N枚舉算法。不過回溯算法使用剪枝函數,剪去一些不可能到達最終狀態(即答案)的節點,從而減少狀態空間樹的節點。3.算法思路通過對問題的分析,找出一個解決問題的線索,然后沿著這個線索向前試探,若試探成功,就得到解;若試探失敗,就逐步往回退,換別的路線再向前試探?;厮菟惴▽嶋H上是廣度與深度結合的搜索方法,深度搜索過程中碰到條件不滿足的情況,則退回上一層,進行全面的搜索。4.算法案例【例】老鼠走迷宮一只老鼠在一個n×n迷宮的入口處,它想吃迷宮出口處放著的奶酪,這只老鼠能否吃到奶酪?如果可以吃到,請給出一條從入口到奶酪的路徑。老鼠在迷宮的入口處,迷宮中有許多墻,使大部分路徑都被擋住而無法前進。老鼠可以采用嘗試錯誤的方法找到出口。不過,這只老鼠必須能在走錯路時重來一次并把走過的路記下來,避免下次走同樣的路,直到找到出口。老鼠行進時,必須遵守以下三個原則。①一次只能走一格。②遇到墻無法往前走時,退回一步找找看是否有其他路可以走。③走過的路不會再走第二次。4.算法案例在編寫走迷宮程序之前,我們先來了解如何在計算機中表現一個仿真迷宮。這時可以使用二維數組,并符合以下規則。maze[i][j]=1表示[i][j]處有墻,無法通行。maze[i][j]=0表示[i][j]處無墻,可通行。一個10×10的迷宮如圖所示,灰色部分是墻,白色部分是可以走的路。迷宮的入口在上面,出口在右側。4.算法案例這個迷宮其實是由10×10=100個格子組成的,灰色格子代表墻,白色格子代表路,如圖(a)所示?!盎疑褡哟韷?,白色格子代表路”是用語言形式描述的,需要轉換成數學形式,用1和0分別定義灰色格子和白色格子,如圖(b)所示。4.算法案例從數學的角度分析老鼠走迷宮的過程。假設老鼠從左上角的maze[0][3]進入,從右下角的maze[7][9]出來,老鼠的當前位置用maze[x][y]表示,如圖所示。老鼠可以選擇的方向共有四個,分別是東、南、西、北。但是,并非每個位置都有四個方向可以選擇,必須視情況而定,例如“T”形路口就只有三個方向可以選擇。4.算法案例我們可以使用鏈表來記錄走過的位置,并將走過的位置對應的數組元素內容標記為2,然后將這個位置放入棧,再進行下一次選擇。如果走到死胡同還沒有扺達終點,那么就退回上一個岔路口,再選擇其他路。每次新加入的位置必定在棧的頂端,因此棧頂端指針所指的方格編號便是當前老鼠所在的位置。重復這些動作,直到走到出口。07迭代算法PARTSEVEN1.算法定義迭代算法在數學上也稱為“遞推法”,是一種不斷用舊值遞推新值的過程,在解決問題時,總是重復利用一種方法。2.算法特點迭代算法利用計算機運算速度快、適合重復性操作的特點,讓計算機重復執行一組指令(或一定步驟),每次執行這組指令(或這些步驟)時,都從變量的原值推出它的一個新值。使用迭代算法解決問題時,需要做以下三個工作。①確定迭代變量。②建立迭代關系式。③對迭代過程進行控制,確定在什么時候結束迭代過程。3.算法思路對于要求解的值,由一個給定的初值,通過某一算法(迭代公式)可求得新值,通常該新值比初值更接近要求解的值,再由新值按照同樣的算法求得另一個新值,這樣經過有限次迭代即可求得其解。4.算法案例

謝謝觀看實驗0Python環境配置Python程序設計實踐教程01Python開發環境的建立過程PARTONE從Python官網下載適合操作系統的安裝包1枚舉算法(ExhaustAlgorithm)又叫窮舉法,也稱為暴力破解法,是指針對要解決的問題,列舉出所有可能的情況,逐個判斷哪些符合問題所要求的約束條件,從而得到問題的解。運行安裝包,根據安裝向導進行安裝2在自定義安裝界面中,勾選“Addpython.exetoPath”選項,將Python解釋器的路徑添加到系統路徑中。如果需要第三方庫,可以在cmd命令行窗口中運行“pipinstall庫名”命令,安裝第三方庫。3Python的安裝包自帶命令行交互環境和IDLE集成開發環境,如果需要其他集成開發環境(如PyCharm、Anaconda等),可自行下載、安裝。402Python解釋器及其使用PARTTWOIDLE(IntegratedDevelopmentandLearningEnvironment)

Python的集成開發和學習環境,有兩種使用模式,即交互模式和文件模式。

(1)進入命令行窗口,輸入“Python”,看到“>>>”提示符就說明處于交互模式。(2)打開IDLE開發環境,依次選擇“File”→“NewFile”選項,可以輸入代碼,也可以通過文件模式編寫Python程序。在編輯框中輸入代碼,按下“F5”鍵,或在菜單中依次選擇“Run”→“RunModule”選項,觀察運行結果。03第三方庫的安裝與配置PARTTHREE包管理器一種可以簡化安裝過程、高效管理依賴關系、進行版本控制的工具。Pip管理Python第三方庫的重要工具,它不僅可以查看已安裝的Python第三方庫列表,還可以安裝、升級、卸載Python第三方庫。04其他主流開發環境的安裝與配置PARTFOUR1.AnacondaAnaconda是一款方便的Python包管理和環境管理軟件,預裝了許多常用的Python庫,包括numpy、pandas等。同時,Anaconda捆綁了兩個好用的交互式代碼編輯器Spyder和JupyterNotebook。JupyterNotebook是基于網頁的用于交互計算的應用程序,可被應用于全過程計算、開發、編寫文檔、運行代碼、展示結果等。2.PyCharmPyCharm是一款功能強大的Python編輯器,具有集成單元測試、代碼檢測、集成版本控制、代碼重構、突出顯示等功能,同時具有跨平臺性。Professional表示專業版,需要付費使用;Community表示社區版,可以免費使用。謝謝觀看實驗1數據的輸入和輸出Python程序設計實踐教程01輸入函數PARTONEinput()函數

用于獲取用戶輸入的數據,并存儲在指定的變量中,其基本格式如下。prompt參數用于提示的文字。需要說明的是,在支持在線判題的程序設計類實驗輔助教學平臺(PTA)上,編寫輸入函數時一般不加prompt參數,以免干擾評判;但在實際項目開發過程中,一般會加上提示性信息,使程序具有更好的用戶友好性。input()函數默認接收字符串類型,可以利用eval()函數轉換成數值類型。另外,可以利用map()、split()等函數的組合將多個數據分別賦給多個變量。內置函數map(func,序列)可以把一個函數依次映射到序列或迭代器對象的每個元素上,并返回一個map對象作為結果,map對象中的每個元素是原序列中的對應元素經函數處理后的結果。02輸出函數PARTTWOprint()函數的基本格式如下。1用“%”格式化輸出內容的基本格式如下。2搭配format()函數進行格式化輸出。3Python3.8之后的版本支持用f-string格式輸出。4謝謝觀看實驗2turtle繪圖Python程序設計實踐教程Python的標準庫很多,主要有math庫、turtle庫、random庫、time庫等。下面主要介紹turtle庫的含義和作用。turtle(海龜)庫用于獲取用戶輸入的數據,并存儲在指定的變量中,其基本格式Python語言中一個很流行的繪制圖形的函數庫,用于繪制線、圓及其他形狀。可以把用turtle庫繪圖理解成一只海龜在坐標系統中爬行,其爬行軌跡形成了繪制的圖形。用戶可以控制海龜的位置、方向,以及畫筆的狀態、寬度、顏色等,圖形繪制的過程十分直觀。。turtle庫需要先導入才能使用,導入和使用的方式如下。(1)先用“importturtle”語句導入庫,之后可以用“turtle.函數名()”的形式使用庫。(2)先用“fromturtleimport*”語句導入庫,然后可以直接用“函數名()”的形式使用庫,無須加庫名。(3)先用“importturtleast”語句導入庫,此時為庫準備了別名t,故可以用“t.函數名()”的形式使用庫。01畫布設置PARTONE

setup()函數的4個參數分別表示窗口寬度、窗口高度、窗口左上角在計算機屏幕中的橫坐標和縱坐標。02畫筆的基本參數設置函數PARTTWO方法功能pensize(width)設置畫筆寬度;單位是像素pencolor(color)設置畫筆顏色;若無參數,則返回當前的畫筆顏色penup()提起畫筆,用于移動畫筆位置;與pendown()配合使用pendown()放下畫筆,移動畫筆將繪制圖形speed(speed)設置畫筆移動速度;speed為0~10的整數03畫筆運動命令函數PARTTHREE方法功能forward(distance)向當前方向移動distance像素backward(distance)向相反方向移動distance像素right(angle)向右(順時針方向)轉動angle角度left(angle)向左(逆時針方向)轉動angle角度goto(x,y)將畫筆移動到坐標為(x,y)的位置circle(radius,extent,steps)畫圓??;radius參數用于設置半徑;extent參數(可選)用于設置弧的角度(缺省則繪制整圓);steps參數(可選)用于確定繪制的正多邊形邊數,若steps=3,則繪制正三角形setx(x)將x軸移動到指定位置;單位為像素sety(y)將y軸移動到指定位置;單位為像素setheading(angle)設置當前方向為angle角度home()將當前的畫筆位置設置為原點dot(r)繪制一個指定直徑和顏色的圓點04畫筆控制命令函數PARTFOUR方法功能fillcolor(colorstring)設置填充顏色;若無參數,則返回當前的填充顏色color(color1,color2)同時設置pencolor=color1,fillcolor=color2方法功能filling()返回當前是否在填充狀態begin_fill()開始填充end_fill()結束填充hideturtle()隱藏畫筆showturtle()顯示畫筆05其他命令函數PARTFIVE方法功能clear()清空窗口,但畫筆的位置和狀態不會改變reset()清空窗口,重置為起始狀態write(s)寫文本mainloop()或done()啟動事件循環謝謝觀看實驗3運算符與表達式Python程序設計實踐教程01計算機程序要處理的數據必須放入內存中,Python中的所有數據都是對象PARTONE變量是指向對象的引用,是在程序運行過程中值會發生變化的量。02Python標識符通常用作變量、函數、類及其他對象的名稱PARTTWOPython標識符一般由字母、數字、下畫線構成,且不能以數字開頭。例如,a、A、_s、py_1等是合法的標識符,而1a、ab、a.b等是非法的標識符。標識符區分字母的大小寫。例如,max、Max是兩個不同的標識符。注意:用戶自定義標識符不能與關鍵字同名。關鍵字可通過調用內置函數help()查看。03表達式是可以進行計算的代碼片段,由操作數和運算符構成PARTTHREE①算術運算符有+、?、*、/、//、%、**等。其中“//”為整除運算,返回商的整數部分(向下取整);“/”為普通除法運算,結果為浮點數。②比較運算符有==、!=、>、<、>=、<=等,Python3.x不再支持“<>”運算符。③賦值運算符有=、+=、?=、*=、/=、//=、%=、**=等,“=”是基本賦值運算符,其他的是復合賦值運算符(先運算再賦值)。④位運算符有&、|、~、^、<<、>>等,運算規則是將操作數轉換為二進制數再進行按位運算。⑤邏輯運算符有and、or、not等,運算結果為True或False。⑥成員運算符有in、notin等,用于測試指定序列中是否包含特定元素,運算結果為True或False。⑦身份運算符有is、notis等,用于判斷兩個標識符是否引用自同一個對象,運算結果為True或False。Python的運算符04Python提供的多種數據類型PARTFOUR布爾型數值型字符串列表元組字典集合05常用的系統函數PARTFIVE1.主要的數學運算類內置函數2.常用的Python內置函數3.常用的標準庫函數math庫中常用的算術運算函數3.常用的標準庫函數math庫中常用的算術運算函數3.常用的標準庫函數random庫中常用的函數謝謝觀看實驗4運算符與表達式Python程序設計實踐教程01序列PARTONEPython的序列包括字符串(str)、列表(list)、元組(tuple)、range對象。其中字符串、元組、range對象是不可變序列類型,列表是可變序列類型。02常用的序列操作函數PARTTWO03字符串序列PARTTHREE字符串一種常見的序列,包含若干個字符(用雙引號或單引號界定),通過下標或序號引用字符串中的各個字符。注意:字符串是不可變對象,所以不能給字符串中的各個元素(項)賦值。04字符串的常用操作PARTFOUR可以通過關系運算符直接比較字符串的大小,也可以用運算符“+”連接字符串、通過切片取子串、用運算符“*”生成新字符串等。字符串的很多操作都可以通過成員函數實現,部分常用的成員函數如下。05正則表達式PARTFIVE1.正則表達式簡介正則表達式(RegularExpression)

一種特殊的字符序列,它定義了字符串的匹配模式。2.正則表達式的使用3.正則表達式的測試除了Python,正則表達式的測試還可以使用第三方工具,特別是在線工具。謝謝觀看實驗5選擇結構程序設計Python程序設計實踐教程01單分支選擇結構PARTONE02雙分支選擇結構PARTTWO03多分支選擇結構PARTTHREE04if語句的嵌套PARTFOUR對以上代碼的說明如下。①在if語句中,表達式表示判斷條件,一般包含關系運算符、成員運算符、邏輯運算符。②Python最具特色的功能就是通過縮進表示語句塊的層次,而不需要使用大括號??s進的字符數是可變的,但同一個語句塊的語句必須保持相同的縮進字符數,縮進不一致會導致邏輯錯誤。③在Python中,條件表達式中不允許使用賦值運算符“=”。謝謝觀看實驗6循環結構程序設計Python程序設計實踐教程01遍歷循環:for循環語句PARTONE1.遍歷序列執行過程:依次將遍歷序列的每一個值傳遞給循環變量,每傳遞一個值就執行一次循環體語句塊,直至傳遞完遍歷序列的最后一個值,退出for循環語句。for循環語句可以遍歷任何類型的序列,如字符串(str)、列表(list)、元組(tuple)等。1.遍歷序列在以上代碼中,循環的次數等于字符串“ABCD”的字符個數。遍歷時,for循環語句把字符的值依次賦給x,執行循環體語句并輸出,輸出結果如下。2.有限次循環其中,i是初始值(默認為0),j?1是終止值,k是步長(默認為1)。以上代碼的輸出結果為:s=1+3+5+7+...+99=2500。3.遍歷文件4.遍歷字典02無限循環:while語句PARTTWOwhile語句也稱為無限循環語句,常用于循環次數未知的結構,語法格式如下。在while語句中,條件表達式為真時會重復執行循環體,直到條件表達式為假,結束循環。03else語句PARTTHREE與其他編程語言不同的是,Python的循環結構中有else關鍵字,else下面的語句在while循環或for循環正常結束時會被執行。但如果提前退出循環,例如被break語句結束、執行了return語句或有其他異常情況出現,則不會執行else語句。else語句的第一種格式如下。else語句的第二種格式如下。謝謝觀看實驗7列表與元組Python程序設計實踐教程01列表PARTONE一維列表的定義形式如下。對列表的說明如下。①列表名應是合法的用戶標識符,列表值表可以為空(此時為空列表),也可以有一個或多個元素,各個元素之間用逗號分隔。②列表也是一種序列,可以通過下標訪問列表中的各個元素,從左到右索引時下標從0開始;從右到左索引時下標從-1開始。③內置函數list()可以創建空列表,也可以將字符串、元組、字典、集合等轉換為列表。④可以使用成員函數append()在列表的末尾添加元素。⑤列表的長度(元素個數)可以用內置函數len()求得。⑥可以通過切片截取列表中的若干個連續元素構成子序列,具體方式如下。函數和方法描述示例結果s.append(x)在列表s的末尾增加元素xA.append(7)[1,3,5,7]s.reverse()將列表s倒置A.reverse()[5,3,1]s.sort([reverse=True])對列表s的元素進行排序,默認為升序,參數reverse=True時為降序B.sort()[2,4,6]B.sort(reverse=True)[6,4,2]s.insert(i,x)在索引值為i的位置插入元素xA.insert(3,7)[1,3,5,7]s.remove(x)刪除列表s中首個值為x的元素A.remove(5)[1,3]s.extend(t)將列表t的內容添加到列表s的后面C.extend(B)[7,8,9,6,4,2]s.clear()刪除列表s中的所有元素,使其成為一個空列表C.clear()[]s.pop(i)提取列表s中索引值為i的元素,并在列表中刪除該元素;i默認值為-1,表示刪除最后一個元素B.pop()[6,4]列表的操作符和方法02元組PARTTWO元組

不可修改的、由任何類型的數據組成的序列。元組的結構與列表類似,但它是不可變的,一旦創建就不能修改。元組通過圓括號創建,元組中的元素用逗號分隔,其訪問方式與列表類似,可以通過索引或切片訪問。元組的操作方法也與列表類似。元組的特點①元組的訪問速度比列表快。如果定義了一系列常量,主要目的是對它們進行遍歷而不需要修改元素,建議使用元組。②元組作為不可變序列,與整數、字符串一樣,可以作為字典的鍵,也可以作為集合的元素。而列表既不能作為字典的鍵,也不能作為集合的元素,因為列表是可變的。提示:元組是不可修改類型,因此沒有append()、extend()、insert()、remove()、pop()等能修改序列元素的方法。除此之外,列表的運算符、函數、方法對元組同樣適用。03列表推導式PARTTHREE列表推導式是一種能快速、簡潔地創建列表的另一種方法,又稱為列表解析。它可以將循環和條件判斷結合,從而避免語法冗長的代碼,同時提高程序性能。列表推導式的形式如下。列表推導式的形式如下。帶條件的列表推導式如下。帶條件的列表推導式示例如下。同時遍歷多個序列的代碼如下。謝謝觀看實驗8字典與集合Python程序設計實踐教程01字典PARTONE字典的鍵是唯一的,值可以不唯一。字典無序可變序列。字典中的每個元素都是一個鍵值對,包含鍵和值兩部分,鍵和值是對應的,表示一種映射關系。1.創建字典每個鍵值對的鍵和值用“:”分隔,鍵值對之間用“,”分隔,整個字典包含在“{}”中。創建字典的語法格式如下。2.遍歷字典遍歷是指沿著某條搜索路徑,依次對每個節點做一次且僅做一次訪問,遍歷的幾種方式如下。遍歷鍵是默認的遍歷方式,代碼如下。遍歷鍵1也可以使用字典的成員函數?get()取值。2.遍歷字典使用值遍歷的代碼如下2使用鍵和值遍歷的代碼如下32.遍歷字典字典的常規操作3方法描述示例結果get(key,default=None)獲得鍵對應的值,若鍵不存在,則返回設置的默認值d.get("Math")70d.get("math")Nonepop(key[,val])刪除鍵對應的值,且返回鍵相應的值;若鍵不存在,且提供了?val?參數,則返回?val,否則出現?KeyError?錯誤d.pop("Math")70popitem()刪除最后一個鍵值對,且返回該鍵值對相應的元組;若字典為空,則出現?KeyError?錯誤d.popitem()("Program":90)items()返回所有鍵值對相應的元組構成的可迭代對象d.items()dict_items([("English",80),("Math",70),("Program",90)])values()返回所有值構成的可迭代對象d.values()dict_values([80,70,90])keys()返回所有鍵構成的可迭代對象d.keys()dict_keys(["English","Math","Program"])clear()刪除字典中的所有元素,使其成為一個空字典d.clear()None02集合PARTTWO集合由一系列元素組成,集合中的元素是無序且不可重復的。集合的元素類型只能是數字、字符串、元組等不可變類型,不能是列表、字典、集合等可變類型。集合的基本功能是進行成員測試和刪除重復元素。方法描述示例結果s1|s2并集操作,生成一個新集合,包含集合?s1?和?s2?中的所有元素{1,2,3}|{3,4,5}{1,2,3,4,5}s1&s2交集操作,生成一個新集合,包含集合?s1?和?s2?共同擁有的元素{1,2,3}&{3,4,5}{3}s1-s2差集操作,生成一個新集合,包含在集合?s1?中但不在?s2?中的元素{1,2,3}-{3,4,5}{1,2}s1^s2對稱差,生成一個新集合,包含集合?s1?和?s2?中除共同元素之外的元素{1,2,3}^{3,4,5}{1,2,4,5}s.add(x)將元素?x?添加到集合?s?中s.add(6){1,2,6}s.clear()刪除集合?s?中的所有元素,使其成為一個空集合s.clear()Nones.copy()生成一個新集合,復制集合?s?中的所有元素t=s.copy(){1,2}s.pop()獲取集合?s?中的一個元素,并刪除該元素s.pop(){2}s.remove(x)刪除集合?s?中值為?x?的元素s.remove(2){1}謝謝觀看實驗9函數Python程序設計實踐教程01函數的定義PARTONE函數組織好的、可重復使用的、用來實現一定功能的代碼段。Pip從用戶的角度而言,函數分為庫函數和用戶自定義函數。庫函數有很多,包括可以直接調用的內置庫函數以及其他標準庫或擴展庫中的函數,例如?range()、print()、abs()、max()、min()、sum()、sqrt()、randint()等。02函數的調用方法PARTTWO定義函數之后必須調用才能起作用,調用形式如下。無返回值的函數一般以語句的形式調用,有返回值的函數一般以表達式的形式調用。03函數的參數傳遞PARTTHREE位置參數位置參數是指必須按照正確的順序將實參傳遞到函數中,實參的數量、位置必須和定義函數時完全一致。關鍵字參數關鍵字參數通過“參數名=值”的形式傳遞,無須按照參數的位置依次傳遞,這樣可以讓函數更加清晰、易用。默認值參數定義參數時,可為參數指定默認值。如果在傳遞參數時,沒有傳入參數的值,則會用默認值替代;如果已傳入參數,則該默認值不起作用。可變數量參數定義函數時,有時并不知道調用時會傳入多少個參數,這時就可以使用可變數量參數。使用可變數量參數時,參數前面應添加“*”??勺冴P鍵字參數可變數量參數雖然可以提供任意數量的參數,但參數是以元組形式存在的。如果需要提供任意數量的鍵值對類型參數,可在形參前面加兩個“*”(“**形式參數”),此參數即為可變關鍵字參數。04函數的返回值PARTFOUR函數的返回值是通過return語句返回給調用者的值。函數沒有return語句時,Python會返回“None”。05變量的作用域PARTFIVEPython中的變量按照作用域的不同可分為全局變量和局部變量。全局變量在整個代碼文件中聲明,可以在全局范圍內使用;局部變量在某個函數內部聲明,只能在函數內部使用。06匿名函數PARTSIXPython語言使用lambda關鍵字創建匿名函數,定義的形式如下。lambda關鍵字的參數位于lambda和“:”之間,可以有0個或多個參數。若有多個參數則以”,”分隔,其主體部分是一個表達式??梢酝ㄟ^賦值語句給匿名函數取名,代碼如下。運行結果如下。07遞歸函數PARTSEVEN遞歸函數是直接或間接調用自身的函數,可分為直接遞歸函數和間接遞歸函數。邊界條件(遞歸出口)與遞歸方程(遞歸式)是遞歸函數的兩個要素,只有具備了這兩個要素,才能在有限次計算后得出結果。對于簡單的遞歸函數,關鍵是得到遞歸式,然后用if語句表達。遞歸是實現分治法和回溯法的有效手段。分治法是指將一個難以直接解決的大問題分割成一些規模較小的相似問題,各個擊破,分而治之。

溫馨提示

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

評論

0/150

提交評論