版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Python語言程序設(shè)計第1章程序設(shè)計概述第2章Python語法基礎(chǔ)第3章基本數(shù)據(jù)類型第4章選擇控制結(jié)構(gòu)第5章循環(huán)控制結(jié)構(gòu)第6章組合數(shù)據(jù)第7章文件第8章函數(shù)第9章面向?qū)ο缶幊痰?0章異常處理第11章網(wǎng)絡(luò)爬蟲全套可編輯PPT課件
Python語言程序設(shè)計第1章程序設(shè)計概述本章知識導(dǎo)圖第1章程序設(shè)計概述31.1
程序設(shè)計語言1.1.1計算思維1.計算思維概念2006年美國卡內(nèi)基·梅隆大學(xué)周以真教授在美國計算機權(quán)威雜志ACM(CommunicationoftheACM)月刊上發(fā)表一篇名為《ComputationalThinking》的文章,提出計算思維是運用計算機科學(xué)的思維方式進行問題求解、系統(tǒng)設(shè)計,以及人類行為理解等一系列的思維活動。這個概念第一次從思維層面闡述了運用計算機科學(xué)的基礎(chǔ)概念求解問題、設(shè)計系統(tǒng)以及理解人類行為的方法,該方法涵蓋了計算科學(xué)的一系列思維活動。計算思維的本質(zhì)是抽象和自動化,計算是抽象的自動執(zhí)行,自動化隱含著需要某類計算機去解釋抽象。2011年,周以真完善了計算機思維的內(nèi)涵,提出計算思維包括算法、分解、抽象、概括和調(diào)試五個基本要素。第1章程序設(shè)計概述41.1
程序設(shè)計語言2.計算思維基本要素計算思維經(jīng)過多年的研究、擴展、歸并,其基本思維的流程與要素如圖1.1所示。計算思維通過分解、抽象、算法、調(diào)試、迭代以及泛化,將一個復(fù)雜的問題分解成一個個可分析解決的小問題,然后分析這些問題相互聯(lián)系來建立模型,并利用相應(yīng)的代碼和算法來實現(xiàn)模型,通過不斷的調(diào)試和迭代來實現(xiàn)最優(yōu)的模型,最后通過學(xué)習(xí)解決這個問題的模型,給其他類似的方法提供思路和方法。第1章程序設(shè)計概述51.1.2計算機程序
計算機是20世紀人類發(fā)明創(chuàng)造的最先進的計算工具,迄今為止,絕大數(shù)計算機都是基于“存儲程序與程序控制”原理工作的。計算機中的程序是指按特定的算法用某種計算機語言描述完成指定任務(wù)的處理過程。從存儲的角度來看,程序就是保存在外存上的指令序列。比如,用字處理軟件編輯處理文檔時,首先啟動該軟件,將其包含的主要程序從外存調(diào)入內(nèi)存并執(zhí)行主要程序中的指令,然后運行其他指令來完成文檔處理等工作。除了少量特殊程序外,程序在沒有啟動時大多以文件的形式存儲在硬盤等外存儲器上。第1章程序設(shè)計概述61.1.3
程序設(shè)計語言的發(fā)展程序設(shè)計語言的發(fā)展經(jīng)歷了機器語言、匯編語言和高級語言三個階段,正向著第四代語言邁進。第1章程序設(shè)計概述71.1.3
程序設(shè)計語言1.機器語言—第一代語言機器語言是計算機能夠直接識別、執(zhí)行的二進制形式的計算機語言,它是由機器指令組成的語言,不同計算機結(jié)構(gòu)的機器指令不同。用機器語言編寫的指令序列程序(如圖1.2(a)所示)計算機能直接識別執(zhí)行,占用存儲空間小,執(zhí)行速度快,但機器語言程序依賴于具體計算機,可移植性差,而且難記憶,易出錯,閱讀理解困難,編程人員必須了解特定計算機的硬件及其指令系統(tǒng)。第1章程序設(shè)計概述81.1.3
程序設(shè)計語言2.匯編語言—第二代語言匯編語言是符號化的機器語言,即采用助記符代替指令中的操作碼和操作數(shù)。用匯編語言編寫的程序是符號化的指令序列(如圖1.2(b)所示),比機器語言直觀,但需要使用“匯編程序”將其翻譯成指令序列后才能由計算機執(zhí)行。除此之外,匯編語言與機器語言有相同的特點,其程序都依賴于具體的計算機,可移植性差。因此將機器語言與匯編語言統(tǒng)稱為低級語言。第1章程序設(shè)計概述91.1.3
程序設(shè)計語言3.高級語言—第三代語言20世紀50年代后期隨著Fortran和COBOL等一批高級語言的問世,計算機程序設(shè)計及其相關(guān)領(lǐng)域迎來了巨大的發(fā)展契機。高級語言更接近人類自然語言和數(shù)學(xué)語言,在一定程序上與具體計算機無關(guān)(如圖1.2(c)所示的C語言程序和(d)所示的Python語言程序)。用高級語言編寫的程序是一種符號化的語句序列,也稱為源代碼。高級語言易理解,易調(diào)試,易修改和可移植性高,但大部分不支持對硬件的直接操作,源代碼需要翻譯成等價的指令序列后才能由計算機執(zhí)行。第1章程序設(shè)計概述101.1.3
程序設(shè)計語言源代碼的翻譯方式源代碼的翻譯方式有兩種,分別是編譯方式和解釋方式。編譯方式的程序執(zhí)行過程如圖1-3所示。雖然編譯方式比較復(fù)雜,但相對而言能產(chǎn)生較高運行效率的目標代碼,只要源代碼不被修改,對源代碼僅需編譯一次,適合于結(jié)構(gòu)復(fù)雜、要求運行效率高的程序設(shè)計語言。高級程序設(shè)計語言如C、C++、Object-C、Swift、Delphi、Pascal和Fortran等都屬于編譯型語言。第1章程序設(shè)計概述111.1.3
程序設(shè)計語言解釋方式是用解釋程序(Interpreter,也稱為解釋器)對源代碼逐行掃描、翻譯、執(zhí)行后直接獲得結(jié)果,執(zhí)行過程如圖1.4所示。解釋方式實現(xiàn)簡單但運行效率低,同一代碼每次運行都要再次解釋,一般用于交互式程序設(shè)計語言的翻譯。如果用文學(xué)翻譯作類比,編譯方式相當于筆譯,譯成一篇完整的譯文;解釋方式相當于口譯,邊聽邊譯。無論編譯方式還是解釋方式,通常高級語言的一條語句要對應(yīng)多條機器指令,運行效率低于低級語言代碼。高級程序設(shè)計語言如Python、Java、JavaScript、PHP、Shell、Ruby、MATLAB、Perl和BASIC等都屬于解釋型語言。第1章程序設(shè)計概述121.1.3
程序設(shè)計語言高級語言的發(fā)展經(jīng)歷了從早期語言到結(jié)構(gòu)化程序設(shè)計語言、從面向過程到面向?qū)ο蟪绦蛟O(shè)計的過程。(1)面向過程程序設(shè)計傳統(tǒng)的程序設(shè)計的本質(zhì)是功能設(shè)計,一般采用結(jié)構(gòu)化程序設(shè)計方法(StructuredProgramming),它最早由E·W·Dijikstra在1965年提出,結(jié)構(gòu)化程序設(shè)計方法的基本原則是自頂向下(top-down)逐步細化(StepwiseRefinement)、由抽象到具體的功能分解過程,使用三種控制結(jié)構(gòu)(順序控制結(jié)構(gòu)、選擇控制結(jié)構(gòu)和循環(huán)控制結(jié)構(gòu))構(gòu)造程序。(2)面向?qū)ο蟪绦蛟O(shè)計面向?qū)ο蟪绦蛟O(shè)計(Object-orientedProgramming)是目前軟件開發(fā)中使用的主流方法,它是一種對現(xiàn)實世界理解并抽象的方法,將對象作為程序的基本單元,并將程序和數(shù)據(jù)封裝在內(nèi)以提高軟件的重用性、靈活性和可擴展性。第1章程序設(shè)計概述131.1.3
程序設(shè)計語言4.智能語言—第四代語言第四代語言(Fourth-GenerationLanguage,4GL)上升到更高的一個抽象層次,盡管還在用不同的語法表示程序結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),但它已不再涉及太多的算法性細節(jié)。一般認為4GL具有簡單易學(xué)、用戶界面良好、非過程化程度高和面向問題等特點,只需告知計算機“做什么”,而不必告知計算機“怎么做”。用4GL編程使用的代碼量較少,并可成數(shù)量級地提高軟件生產(chǎn)率。目前,4GL主流產(chǎn)品基本上與人工智能技術(shù)無關(guān),但隨著4GL非過程化程度和語言抽象級的不斷提高,必然要求人工智能技術(shù)的支持。迄今,使用廣泛的第四代語言是數(shù)據(jù)庫查詢語言SQL(StructuredQueryLanguage,結(jié)構(gòu)化查詢語言)支持數(shù)據(jù)庫的定義和操作,功能強大,簡單易學(xué)。程序生成器(ProgramGenerators)代表更為復(fù)雜的一類4GL,它不必依賴預(yù)先定義的數(shù)據(jù)庫,只需要很少的語句就可生成完整的語言程序。此外,一些決策支持語言(DecisionSupportLanguage)、原型語言(PrototypingLanguage)、形式化規(guī)格說明語言(FormalSpecificationLanguage)也被認為屬于4GL的范疇第1章程序設(shè)計概述141.2算法1.2.1算法概念瑞士科學(xué)家Pascal語言發(fā)明者NiklausWirth對計算機程序給出了一個著名的定義,即“程序=數(shù)據(jù)結(jié)構(gòu)+算法”。該定義歸結(jié)了計算機程序的兩個核心問題,強調(diào)了算法在程序中的重要性。算法是為計算機處理問題所設(shè)計的具體步驟,算法的最終實現(xiàn)是計算機程序,程序設(shè)計人員只有將算法轉(zhuǎn)變?yōu)橛嬎銠C程序才能利用計算機解決問題。算法的建立通常是由粗略到細化的過程,先把解決問題的基本過程表達出來,確立粗略的算法框架,然后添加必要的細節(jié),形成解決問題的有效算法。算法的描述方法多種多樣,可以使用自然語言描述,通常使用專門的算法表達工具對算法進行描述,例如流程圖、N-S圖、PAD圖、偽碼等。以下是使用自然語言和流程圖描述算法的實例說明。第1章程序設(shè)計概述151.2算法以下是使用自然語言和流程圖描述算法的實例說明。問題:計算10!(10的階乘)并輸出。(1)用自然語言描述算法步驟①i和t賦初值,使i=1,t=1;步驟②判斷i的值,若i≤10則執(zhí)行步驟③;否則,轉(zhuǎn)步驟⑤;步驟③t乘上i;步驟④i加上1,轉(zhuǎn)步驟②;步驟⑤顯示t的值,結(jié)束。第1章程序設(shè)計概述161.2算法(2)用流程圖描述算法流程圖是人們經(jīng)常使用的一種算法描述工具,其特點是繪制簡單、結(jié)構(gòu)清晰、邏輯性強、便于描述、容易理解等。流程圖中常用的符號及功能如表1-1所示。第1章程序設(shè)計概述171.2算法使用流程圖來描述求解10!問題的算法如圖1.5所示第1章程序設(shè)計概述181.2.2算法的邏輯結(jié)構(gòu)1.順序結(jié)構(gòu)順序結(jié)構(gòu)的算法,其每個步驟從前到后依次執(zhí)行,每個步驟都被執(zhí)行一次,其邏輯結(jié)構(gòu)如圖1.6所示。例如,“輸入一個學(xué)生的兩門課程的成績,計算并輸出平均成績”的算法流程圖如圖1.7所示。第1章程序設(shè)計概述191.2.2算法的邏輯結(jié)構(gòu)2.選擇結(jié)構(gòu)在選擇結(jié)構(gòu)中
的某些步驟是否能夠執(zhí)行,要視當前的條件而定,在同一次處理中,有的步驟可能執(zhí)行不到,其邏輯結(jié)構(gòu)如圖1.8所示。這種算法用程序?qū)崿F(xiàn)后,程序中的有些語句就會被有選擇的執(zhí)行。例如,輸入一個學(xué)生兩門課程的成績,若平均成績不低于90,則輸出“優(yōu)等生”;否則,輸出“加油!”,該問題的算法流程圖如圖1.9所示。第1章程序設(shè)計概述201.2.2算法的邏輯結(jié)構(gòu)3.循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)的算法中有些步驟會被有條件地重復(fù)執(zhí)行(被重復(fù)執(zhí)行的步驟每次處理的數(shù)據(jù)也可能發(fā)生變化),其邏輯結(jié)構(gòu)如圖1.10所示。這種算法用程序?qū)崿F(xiàn)后,程序中的有些語句就會被反復(fù)地執(zhí)行算法實例如圖1-5所示的求解10!的算法流程圖。第1章程序設(shè)計概述211.2.3算法的特性算法具有以下特性:1.有窮性一個算法必須經(jīng)過有限步驟后結(jié)束。2.確定性一個算法通常由一系列求解步驟來完成,各操作步驟之間有嚴格的順序關(guān)系,每一個步驟所規(guī)定的操作不能有二義性。3.有效性一個算法中不能出現(xiàn)無效的步驟,每個操作必須能夠通過已經(jīng)實現(xiàn)的基本運算有效地執(zhí)行,并且得到確定的結(jié)果4.輸入和輸出特性每個有意義的算法有零個或多個輸入,并且有一個或多個輸出。第1章程序設(shè)計概述221.2.4算法評價算法評價涉及多個方面,簡要介紹如下。1.時間復(fù)雜性2.空間復(fù)雜性3.可讀性4.健壯性5.通用性6.正確性第1章程序設(shè)計概述231.3編程基本方法1.3.1IPO編程模式利用計算機程序?qū)?shù)據(jù)進行處理,編程模式有面向過程和面向?qū)ο髢煞N模式,面向過程編程一般采用IPO方法,即程序包括數(shù)據(jù)輸入、數(shù)據(jù)處理和數(shù)據(jù)輸出三部分,如圖1.11所示。第1章程序設(shè)計概述241.3.2程序設(shè)計基本步驟1.分析問題分析問題的可計算部分,弄清楚要處理的問題涉及的概念、數(shù)據(jù)特點、已知條件、所求結(jié)果,以及它們之間的關(guān)系等信息,即明確要做什么。2.劃分邊界劃分問題的功能邊界,規(guī)劃IPO,即確定輸入、處理和輸出。3.設(shè)計算法設(shè)計問題的求解方法與步驟,關(guān)注算法。確定具體的算法,選擇算法表達工具對算法進行描述。4.編寫程序用編程語言的語句和命令實現(xiàn)算法的每一個步驟。5.測試與調(diào)試測試程序發(fā)現(xiàn)存在的問題;調(diào)試程序改正存在的錯誤,使程序能正確運行。在開發(fā)環(huán)境中,錄入編輯源程序并運行程序,若程序中有錯誤就要改正錯誤,直到程序能夠正確運行。6.升級維護為適應(yīng)問題的升級進行程序維護,更新完善。第1章程序設(shè)計概述25將上述六個步驟精簡,得到三個精簡步驟:(1)算法設(shè)計,確定IPO,明確計算部分及功能邊界。(2)編寫程序,將計算求解的設(shè)計變成現(xiàn)實。(3)測試與調(diào)試,確保程序按照正確邏輯運行。1.4Python語言概述Python語言是近幾年來非常流行的程序設(shè)計語言。根據(jù)TIOBE發(fā)布的編程語言排行榜,Python語言近幾年一直位居榜首,其中在2023年7月的排行榜如圖1.12所示。第1章程序設(shè)計概述261.4.1Python語言的誕生與發(fā)展Python語言誕生于1990年,由GuidovanRossum設(shè)計并領(lǐng)導(dǎo)開發(fā)。1989年12月Guido考慮啟動一個開發(fā)項目以打發(fā)圣誕節(jié)前后的時間,于是決定為當時正在構(gòu)思的一個新的腳本語言寫一個解釋器,在次年誕生了Python語言,它是用C語言實現(xiàn)的,并能夠調(diào)用C語言的庫文件。該語言以“Python”命名源于Guido對當時一個英劇“MontyPython'sFlyingCircus(巨蟒劇團之飛翔的馬戲團)”的極大興趣。也許Python語言的誕生是個偶然事件,但30多年的持續(xù)不斷的發(fā)展,目前已成為世界上最流行的編程語言之一。第1章程序設(shè)計概述271.4.1Python語言的誕生與發(fā)展Python語言是開源項目的優(yōu)秀代表,其解釋器的全部代碼都是開源的,可以在Python語言的官網(wǎng)(https://www.P)自由下載。2000年10月,Python2.0正式發(fā)布,開啟了Python廣泛應(yīng)用的新時代。2008年12月,Python3.0正式發(fā)布,這個版本在語法層面和解釋器內(nèi)部都做了很多重大改進,而且Python3.x無法兼容Python2.x。從2008年開始,用Python編寫的幾萬個函數(shù)庫開始了版本升級過程。至今,絕大部分Python函數(shù)庫和Python程序員都采用Python3.x系列語法和解釋器。目前,許多著名網(wǎng)站都采用Python語言開發(fā)自己的網(wǎng)站組件,例如,Google的Web爬蟲以及搜索引擎中的很多組件開發(fā)使用了Python;YouTube系統(tǒng)開發(fā)也大量使用了Python;NASN也有一些系統(tǒng)開發(fā)用到了Python。而國內(nèi)文藝青年聚焦地——豆瓣網(wǎng)的主要開發(fā)語言也是Python。更值得一提的是,Python在激光干涉引力波天文臺(LIGO)成功探測引力波的任務(wù)中也發(fā)揮了重大的作用,LIGO使用了Python包GWPY,專門用于分析引力波數(shù)據(jù)。Python也被列為黑客應(yīng)該學(xué)會的五種語言之一(Python,Java,C/C++,Perl和LISP)。第1章程序設(shè)計概述281.4.3Python語言特性1.語法簡潔2.強制可讀Python語言通過強制縮進(類似文章段落的首行空格)來體現(xiàn)語句間的邏輯關(guān)系,顯著提高了程序的可讀性,進而增加了Python程序的可維護性。3.數(shù)據(jù)結(jié)構(gòu)、類庫豐富Python解釋器內(nèi)建豐富的數(shù)據(jù)結(jié)構(gòu),包括基本數(shù)據(jù)類型,如數(shù)字類型、字符串、布爾類型,用
來處理單個數(shù)據(jù),組合數(shù)據(jù)類型包括元組、集合、列表和字典等,可以以整體處理一組數(shù)據(jù)。另外,
Python還提供了大量的內(nèi)置類型、內(nèi)置函數(shù)和標準庫,到目前為至,世界各地程序員通過開源社區(qū)已貢獻了13萬多個第三方庫,幾乎覆蓋了計算機技術(shù)的各個領(lǐng)域,編寫Python程序可以利用已有的內(nèi)置或第三方代碼,具備良好的計算生態(tài)。
4.通用靈活Python語言是一種通用編程語言,可用于編寫各領(lǐng)域的應(yīng)用程序,這為該語言提供了廣闊的應(yīng)
用空間。第1章程序設(shè)計概述291.4.3Python語言特性5.模式多樣盡管Python3.x解釋器內(nèi)部采用面向?qū)ο蠓绞綄崿F(xiàn),但Python語法層面卻同時支持面向過程和面向?qū)ο髢煞N編程方式,這為使用者提供了靈活的編程模式。6.與平臺無關(guān)作為腳本語言,Python程序可以在任何安裝解釋器的計算機環(huán)境中執(zhí)行,因此,用該語言編寫的程序可以不經(jīng)修改地實現(xiàn)跨平臺運行,即“一次編程,多處運行”。7.粘性擴展Python語言具有優(yōu)異的擴展性,體現(xiàn)在它可以集成C、C++、Java等語言編寫的代碼,通過接口和函數(shù)庫等方式將它們“粘起來”(整合在一起)。第1章程序設(shè)計概述301.4.3Python語言特性8.開源理念Python語言倡導(dǎo)的開源的軟件理念為該語言發(fā)展奠定了堅實的群眾基礎(chǔ)。9.支持中文Python3.x解釋器采用UTF-8編碼表達所有字符信息。UTF-8編碼可以表達英文、中文、韓文、法文等各類語言,因此Python在處理中文時更加且高效。10.強大的社區(qū)支持Python在2017年搬遷至全球最大的代碼托管平臺Github(網(wǎng)址/),超7千萬開發(fā)者正在使用。中國也擁有最大的Python開源分享社區(qū),GitHub中文社區(qū)(/)是一個致力于分享和傳播GitHub上優(yōu)質(zhì)開源項目的中文社區(qū)平臺。第1章程序設(shè)計概述311.4.4Python應(yīng)用領(lǐng)域1.科學(xué)計算Python提供了支持多維數(shù)組運算與矩陣運算的模塊numpy、支持高級科學(xué)計算的模塊scipy、支持2D繪圖功能的模塊matplotlib,又具有簡單易學(xué)的特點,因此被科學(xué)家用于編寫科學(xué)計算程序。2.數(shù)據(jù)分析Python語言在數(shù)據(jù)分析、交互、可視化方面有相當完善和優(yōu)秀的庫,其中Pandas是基于Numpy和Matplotlib的構(gòu)建的Python核心數(shù)據(jù)分析支持庫,是Python數(shù)據(jù)分析的必備高級工具。3.人工智能基于大數(shù)據(jù)分析和深度學(xué)習(xí)而發(fā)展出來的人工智能本質(zhì)上已經(jīng)無法離開Python的支持,目前世界優(yōu)秀的人工智能學(xué)習(xí)框架如Google的TransorFlow、FaceBook的PyTorch以及開源社區(qū)的神經(jīng)網(wǎng)絡(luò)庫Karas等是用Python實現(xiàn)的。微軟的CNTK(認知工具包)也完全支持Python,而且微軟的Vscode都已經(jīng)把Python作為第一級語言進行支持。4.Web開發(fā)Python是Web開發(fā)的主流語言,與JS、PHP等使用廣泛的語言相比,Python類庫豐富、使用方便,能夠為一個需求提供多種方案;此外Python支持最新的XML技術(shù),為Web開發(fā)領(lǐng)域提供的框架有Django、Flask、Tornado、Web2py等。第1章程序設(shè)計概述321.4.4Python應(yīng)用領(lǐng)域5.爬蟲開發(fā)爬蟲程序通過自動化程序有針對性地爬取網(wǎng)絡(luò)數(shù)據(jù),提供可用資源。Python擁有良好的網(wǎng)絡(luò)支持,具備相當完善的數(shù)據(jù)分析與數(shù)據(jù)處理庫,又兼具靈活簡潔的特點,因此被廣泛應(yīng)用于爬蟲領(lǐng)域之中。6.游戲開發(fā)很多游戲開發(fā)者先利用Python或Lua編寫游戲的邏輯代碼,再使用C++編寫圖形顯示等對性能要求較高的模塊。利用Python的pygame模塊可以制作2D游戲。7.多媒體應(yīng)用Python提供了PIL、Piddle、ReportLab等模塊,利用這些模塊可以處理圖像、聲音、視頻、動畫等,并動態(tài)生成統(tǒng)計分析圖表;Python的PyOpenGL模塊封裝了OpenGL應(yīng)用程序編程接口,提供了二維和三維圖像的處理功能。8.自動化運維Python是一種腳本語言,Python提供了一些能夠調(diào)用系統(tǒng)功能的庫,因此Python常被用于編寫腳本程序,以控制系統(tǒng),實現(xiàn)自動化運維。第1章程序設(shè)計概述331.4.5Python程序的執(zhí)行方式1.交互方式交互方式是在解釋器語句提示符后直接輸入語句,按回車后,由Python解釋器解釋代碼、執(zhí)行并輸出結(jié)果。2.文件方式文件方式是首先在文本編輯器或開發(fā)環(huán)境的編輯窗口錄入Python代碼并保存為文件,其擴展名為.py,然后在開發(fā)環(huán)境中執(zhí)行代碼,也可以脫離開發(fā)環(huán)境在已安裝Python解釋器的平臺上例如Windows下,在其CMD命令窗口中以“Python文件名.py”命令執(zhí)行代碼。第1章程序設(shè)計概述3411.5Python開發(fā)環(huán)境1.5.1Python解釋器1.下載與安裝打開Python官網(wǎng)(網(wǎng)址/)下載中心,根據(jù)本地電腦操作系統(tǒng)選擇下載相應(yīng)版本的Python解釋器安裝包。雙擊Python解釋器安裝包,打開安裝向?qū)?,按照安裝步驟一步一步完成安裝。2.Python解釋器的使用安裝Python完成后,可以在Windows操作系統(tǒng)的開始菜單中會找到Python快捷菜單,如圖1.14所示。單擊快捷方式中的Python3.7進入Python解釋器編程界面,如圖1.15所示,其中“>>>”是Python語句提示符,在它后面輸入Python語句按回車后執(zhí)行當前語句,若語句存在語法錯誤,則會輸出錯誤信息,可以根據(jù)錯誤信息調(diào)試程序。第1章程序設(shè)計概述351.5.1Python解釋器3.PythonIDLE的使用IDLE是Python官方內(nèi)置的一個簡單小巧的IDE,在安裝Python解釋器時會同時安裝。單擊開始菜單的“IDLE”打開IDLE操作界面,如圖1.17所示。IDLE包含了文件式編輯器、交互式命令行和調(diào)試器等基本組件,可以應(yīng)付大多數(shù)Python的簡單應(yīng)用開發(fā)。IDLE交互命令行窗口操作界面與Python解釋器界面相似。單擊交互窗口界面上的“File”菜單中的“NewFile”會打開文件編輯器,如圖1.18所示。輸入Python程序,使用“File”菜單中的“Save”將程序以“.py”為擴展名保存到磁盤上。使用“Run”菜單中的“RunModule”命令可以運行該程序,執(zhí)行結(jié)果在IDLE交互窗口中輸出,如圖1.19所示。第1章程序設(shè)計概述361.5.1Python解釋器4.第三方庫的安裝Python的一個非常吸引用戶的特點是它具有極其豐富的第三方庫。在Python開發(fā)過程中,如果需要用到第三方庫,通常通過pip命令進行安裝,安裝時需要保持Internet網(wǎng)暢通。pip工具是官方推薦使用Python包管理器,可以非常簡單、方便地安裝第三方庫,命令格式為:pipinstall<第三方庫名>例如,jieba庫是Python中一個重要的第三方中文分詞函數(shù)詞,在Windows系統(tǒng)下利用pip安裝,首先打開CMD命令行窗口,輸入命令:pipinstalljieba如圖1.20所示,按回車即可進行自動安裝。第1章程序設(shè)計概述371.5.2Anaconda開發(fā)平臺Anaconda開發(fā)平臺是一個完全免費的、企業(yè)級的、集成了conda、Python的包管理器和環(huán)境管理器,另外,集成了1000多個開源包,能夠滿足大多數(shù)數(shù)據(jù)處理、預(yù)測分析和科學(xué)計算等工作,可以認為是Python的發(fā)行版.1.下載與安裝Anaconda支持Linux、MacOSX、Windows等平臺,可以到Anaconda官網(wǎng)下載中心https://www.continuum.io/download或到清華大學(xué)開源軟件鏡像站的Anaconda軟件下載頁面/anaconda/archive/,根據(jù)操作系統(tǒng)是32位或者64位選擇相應(yīng)的版本下載、安裝。注意Anaconda已經(jīng)不支持WindowsXP。本教程采用Anaconda5.3作為開發(fā)環(huán)境,內(nèi)置了Python3.7。第1章程序設(shè)計概述381.5.2Anaconda開發(fā)平臺在Windows平臺安裝好Anaconda后,執(zhí)行桌面左下角“開始”→“所有程序”,可以看到Anaconda快捷方式文件夾,如圖1.21所示。第1章程序設(shè)計概述391.5.2Anaconda開發(fā)平臺說明:(1)AnacondaNavigator(2)AnacondaPrompt例如,查看Anaconda平臺中已安裝的第三方庫命令:condalist若要安裝第三方庫命令:condainstall<第三方庫名>pipinstall<第三方庫名>
(3)JupyterNotebook第1章程序設(shè)計概述401.5.2Anaconda開發(fā)平臺2.Spyder集成開發(fā)環(huán)境Anaconda內(nèi)置的Spyder(ScientificPythonDevelopmentEnvironment,Spyder)是一個功能強大的Python集成開發(fā)環(huán)境,可以以交互式增強Python(IPython)和文件式進行Python應(yīng)用開發(fā),具有高級的代碼編輯、交互測試、調(diào)試等特性。Spyder開發(fā)界面如圖1.24所示。Spyder常用快捷鍵如表1-4所示。第1章程序設(shè)計概述411.6應(yīng)用案例1.6.1案例1:編程計算要求:已知圓的半徑為10,計算并輸出圓的周長和面積。請分別以交互方式和文件方式運行程序。(1)交互方式打開Spyder開發(fā)環(huán)境,在IPython控制臺語句提示符后輸入以下語句,每輸入一條語句按回車鍵。In[3]r=10In[4]L=2*r*3.14In[5]s=r*r*3.14In[6]print(L,s)輸出結(jié)果為:62.800000000000004314.0(2)文件方式
打開Spyder開發(fā)環(huán)境,在文件編輯窗口輸入以下代碼,每輸入一條語句按回車鍵。r=10#定義變量r表示半徑,并賦值L=2*r*3.14#計算周長s=r*r*3.14#計算面積print(L,s)#輸出周長和面積保存文件到本地磁盤,文件名為area.py,單擊工具欄中的單擊工具欄中的
“執(zhí)行文件”按鈕執(zhí)行代碼,輸出結(jié)果:62.800000000000004314.0第1章程序設(shè)計概述421.6應(yīng)用案例1.6.2案例2:繪制圖形要求:使用turtle庫繪制紅色五角星。說明:turtle庫是Python內(nèi)置的標準庫,用來繪制圖形,在2.7節(jié)有較為詳細的介紹,此處略。代碼如下:fromturtleimport*#導(dǎo)入turtle繪圖庫所有函數(shù)color('red')#設(shè)置畫筆與填充色為紅色begin_fill()#開始填充位置foriinrange(5):#循環(huán)控制5次畫五角星forward(100)#向前畫一條直線right(144)#右轉(zhuǎn)144度end_fill()#結(jié)束填充done()#結(jié)束繪制保存代碼到本地磁盤,文件名為star.py,運行代碼輸出結(jié)果如圖1.25所示。第1章程序設(shè)計概述43小結(jié)本章首先介紹了程序設(shè)計語言的基礎(chǔ)知識,包括計算思維、計算機程序、程序設(shè)計語言等概念,然后介紹了算法的概念和算法描述工具、算法的3種邏輯結(jié)構(gòu)、算法特性和算法評價等,介紹了編程基本方法IPO,之后介紹了Python語言,包括Python語言的誕生與發(fā)展、特點和應(yīng)用領(lǐng)域,介紹了Python程序的運行方式,介紹了在Windows下Python開發(fā)環(huán)境,包括Python解釋器的安裝與使用、Anaconda平臺的安裝和Spyder開發(fā)環(huán)境的使用等,最后給出兩個應(yīng)用案例。通過本章的學(xué)習(xí),使讀者對Python語言有一個初步的認識,能夠在開發(fā)環(huán)境中調(diào)試、運行程序。第1章程序設(shè)計概述44第1章程序設(shè)計概述45謝謝!Python語言程序設(shè)計第2章Python語法基礎(chǔ)本章知識導(dǎo)圖第2章Python語法基礎(chǔ)472.1編程基本步驟的應(yīng)用結(jié)合第1章中介紹的程序設(shè)計基本步驟,將繪制紅色五角星的編程分為4個步驟。第1步:問題分析對繪制五角星這一問題進行分析,得出解決此問題最簡單的方法是使用turtle繪圖庫
中的函數(shù)來繪制。第2步:算法設(shè)計采用IPO編程模式,算法描述如下:(1)輸入:通過鍵盤輸入表示五角星大小的直線長度(無輸入則為默認長度)。(2)處理:使用turtle繪圖函數(shù)設(shè)置顏色,畫直線和改變畫筆方向重復(fù)執(zhí)行5次。(3)輸出:在turtle繪圖窗口中邊繪制邊輸出。使用input()語句輸入長度像素值,使用if分支語句根據(jù)輸入設(shè)置五角星中直線的長度。使用turtle庫的color()函數(shù)設(shè)置畫筆顏色和填充顏色,使用forward()函數(shù)(簡寫為fd())繪制指定像素大小的直線,right()函數(shù)(簡寫為rt())或left()函數(shù)(簡寫為lt())調(diào)整畫筆方向。另外,使用for循環(huán)控制語句來重復(fù)調(diào)整畫筆方向和繪制5條直線。第2章Python語法基礎(chǔ)482.1編程基本步驟的應(yīng)用根據(jù)算法設(shè)計,使用Python語言編寫程序。繪制紅色五角星的程序e2_1_star.py,見表2.1。打開Anaconda開發(fā)平臺中的Spyder開發(fā)環(huán)境,新建一個空白文件,輸入上述代碼,以文件名e2_1_star.py保存文件,擴展名“.py”表示此文件為Python程序。第2章Python語法基礎(chǔ)492.1編程基本步驟的應(yīng)用第4步:調(diào)試、運行程序單擊Spyder工具欄中的運行程序按鈕或者直接按F5功能鍵執(zhí)行程序,根據(jù)不同輸入,繪制不同大小的五角星。(1)執(zhí)行程序后輸入100并按回車鍵:請輸入五角星大小:100五角星大小按100像素繪制繪制的五角星如圖2.1所示。(2)執(zhí)行程序后若直接按回車鍵,則以默認大小繪制五角星。請輸入五角星大小:五角星大小按200像素繪制按200像素繪制的五角星大小是圖2.1中的五角星的兩倍。若在程序運行過程中出現(xiàn)錯誤,需要修改程序,并再次運行程序,直到程序能正常運行為止,這個過程就稱做程序的調(diào)試。第2章Python語法基礎(chǔ)502.2程序的基本元素2.1標識符與保留字1.標識符在程序中,變量、函數(shù)等都要有一個名稱用來標識,這個名稱就稱為標識符。Python語言規(guī)定,標識符由英文字母(也可以是中文)、下劃線和數(shù)字組成,且第一個字符不能是數(shù)字。需要特別注意的是:Python標識符對大小寫敏感,例如A與a是兩個不同的標識符。另外,用戶標識符不能使用系統(tǒng)保留字。第2章Python語法基礎(chǔ)512.保留字保留字也稱為關(guān)鍵字,是程序設(shè)計語言內(nèi)部預(yù)定義的具有特珠含義的標識符。每種編程語言都有一套保留字,用來構(gòu)成程序整體框架、表達關(guān)鍵值和具有結(jié)構(gòu)性的復(fù)雜語義等。掌握一門編程語言要熟記其保留字的用法。Python3.7共有35個保留字,如表2.2所示。第2章Python語法基礎(chǔ)522.2.2數(shù)據(jù)類型Python數(shù)據(jù)類型豐富,它將數(shù)據(jù)分為2大類,一類是基本數(shù)據(jù)類型,包括數(shù)字、字符串和布爾類型3種數(shù)據(jù)類型,另一類是組合數(shù)據(jù)類型,包括序列類型、集合和映射3種數(shù)據(jù)類型。數(shù)據(jù)類型如圖2.2所示。第2章Python語法基礎(chǔ)532.2.3常量常量是在程序運行過程中不變的量。不同的數(shù)據(jù)類型,都有其對應(yīng)的常量,其表示形式如表2.3所示。
第2章Python語法基礎(chǔ)542.2.4變量程序在執(zhí)行過程中將一些需要處理的數(shù)據(jù)和臨時數(shù)據(jù)保存在計算機內(nèi)存單元中。為了區(qū)分這些存放了數(shù)據(jù)的內(nèi)存單元,同時方便訪問和修改這些數(shù)據(jù),Python提供了變量,使用不同的變量名標識不同的內(nèi)存區(qū)域,通過變量名訪問和修改這些內(nèi)存中存放的數(shù)據(jù)。1.變量的賦值將數(shù)據(jù)保存到變量名所代表的內(nèi)存區(qū)域中,稱為變量的賦值。使用賦值語句對變量賦值,初次賦值稱為變量的定義。賦值語句語法格式如下:變量名=表達式2.變量的數(shù)據(jù)類型賦值語句的功能是首先計算“=”右側(cè)表達式的值,然后將計算結(jié)果賦給左側(cè)的變量。例如h=x表示將x保存到h中,x的值不變。變量的類型是賦給的值的類型,隨著程序運行,變量的類型也可以改變。使用內(nèi)置函數(shù)type()可以查看指數(shù)據(jù)的數(shù)據(jù)類型。type()函數(shù)語法格式為:type(表達式)第2章Python語法基礎(chǔ)552.2.5語句Python語句分為2類,一類是可執(zhí)行語句,另一類是不可執(zhí)行語句。例如在e2_1_star.py程序中,第1~6行為不可執(zhí)行語句,其中第1行為聲明語句,第2至5行為多行注釋,第6行為單行注釋。其他各行都是可執(zhí)行語句,其中第10~13行為選擇控制語句、第16~18行為循環(huán)控制語句,它們?yōu)閺?fù)合語句,由多個子句組成,其中的代碼段要右縮進??蓤?zhí)行語句以英文分號結(jié)尾,通常分號省略。第2章Python語法基礎(chǔ)562.3Python代碼風(fēng)格編程時,為了提高程序可讀性,良好的程序書寫風(fēng)格是非常重要的。1.語句行(1)一行一句。通常一個語句行寫一個語句。(2)一行多句。如果前后語句比較短,也可以一行寫多個語句,但語句之間要用英文分號分隔。(3)一句多行。如果一個語句比較長,寫在一個程序行上可讀性差,這時可以把這個語句寫在多行上,但在分行處要使用續(xù)行符“\”來連接下一行。若在括號(包括圓括號()、中括號[]、大括號{})的中間分行,則續(xù)行符“\”可以省略。第2章Python語法基礎(chǔ)572.3Python代碼風(fēng)格2.強制縮進縮進是指在語句前面有若干空格。Python語言采用強制縮進來表示程序的控制結(jié)構(gòu)、層次關(guān)系等。普通語句不縮進,每條語句左側(cè)不能有空格。控制結(jié)構(gòu)、函數(shù)定義等表示層次關(guān)系中的代碼塊默認縮進4個空格,也可以改變縮進空格的個數(shù)。同一語句塊縮進的空格必須相同,不同語句塊的縮進可以不同??s進開始表示語句塊的開始,縮進結(jié)束表示語句塊的結(jié)束;相同的縮進表示同級別語句塊。例如,e2_1_star.py中,第10~13行是if…else雙分支語句,第11、13行要右縮進;第16~18行是一個for循環(huán)語句,17~178為循環(huán)體,需要右縮進。Python的強制縮進特性,既控制了代碼的層次關(guān)系,也使代碼簡潔、優(yōu)雅,提高了可讀性。因而,普通語句不能縮進,即普通語句前面不能加空格。第2章Python語法基礎(chǔ)582.3Python代碼風(fēng)格3.注釋注釋是幫助閱讀程序的人理解程序,提高程序的可讀性。注釋可以放在在程序的開始或關(guān)鍵位置。在Python語言中有兩種注釋:(1)單行注釋:單行注釋以#開頭,后跟注釋信息,其格式如下:#說明信息單行注釋可以放在一條語句的后面或者單獨占一行,如程序e2_1_star.py的第1、6行是單行注釋,第7~19行語句后面使用了注釋,其中第1行也是一個聲明語句,指明程序使用UTF-8編碼。(2)多行注釋多行注釋是使用一對三引號(3個單引號'''或3個雙引號""")括起來的一行或多行說明文字,多行注釋格式為:'''
這里是用在Python程序中
的多行注釋
'''例如,在e2_1_star.py程序中的第2~5行為多行注釋,說明程序的創(chuàng)建時間和程序員。如果多行注釋放在程序開頭或自定義函數(shù)體的開頭,則可稱為文檔注釋,即程序以庫方式導(dǎo)入時,使用help(庫名)可以顯示出包含文檔注釋在內(nèi)的庫說明書。第2章Python語法基礎(chǔ)592.4輸入、輸出數(shù)據(jù)2.4.1輸出數(shù)據(jù)print()函數(shù)用來將數(shù)據(jù)輸出到控制臺或打印到文件中,其語法形式如下:print(value,...,sep='',end='\n',file=sys.stdout,flush=False)功能:將一組數(shù)據(jù)values默認輸出到標準輸出設(shè)備(一般是控制臺),也可以輸出到流(如外存文件)中。參數(shù)說明:(1)sep(分隔符):輸出數(shù)據(jù)之間的分隔符,默認為空格“”。(2)end(結(jié)束符):輸出數(shù)據(jù)結(jié)束后要輸出的字符,默認為換行符“\n”。(3)file(文件):默認當前輸出設(shè)備(sys.stdout,控制臺)或類似文件的流對象。(4)flush:是否強制刷新流緩存區(qū),如果flush=True,則數(shù)據(jù)輸出到流時,強制將緩存區(qū)中數(shù)據(jù)送入流(文件)中,否則當流關(guān)閉時才保存到流(文件)中,默認為False。例如,e2_1_star.py程序的第14行,如果h為200,則在控制臺輸出“五角星大小按200像素繪制”第2章Python語法基礎(chǔ)60例2_1已知圓的半徑為10,計算圓的周長與面積并輸出。源代碼如下:#e2_1_area.pyr=10L=2*r*3.14159s=r*r*3.14159print('周長',L,sep=':',end='')print('面積',s,sep=':')保存并執(zhí)行程序,輸出結(jié)果為:周長:62.8318面積:314.159第2章Python語法基礎(chǔ)612.4.2輸入數(shù)據(jù)在程序運行過程中,當需要處理的數(shù)據(jù)來自鍵盤輸入時,通常使用input()函數(shù)來完成輸入,其語法格式為:input([提示信息])功能:當程序運行到該函數(shù)時,就暫停程序的運行,用戶從鍵盤輸入數(shù)據(jù)并按回車鍵后,輸入數(shù)據(jù)以字符串類型作為函數(shù)值返回,程序繼續(xù)運行。可以將返回的字符串賦給一個變量保存起來以便進一進處理,格式為:變量=input([<提示信息>])例如,e2_1_star.py實例代碼中第9行:h=input('五角星大小:'),當執(zhí)行到該語句時,會暫停程序的執(zhí)行,輸入300并按回車鍵后,繼續(xù)執(zhí)行程序,h='300',就將字符串'300'存儲到變量h中。如果沒有輸入數(shù)據(jù)直接按回車鍵,則執(zhí)行h='',即h為空字符串。由于input()函數(shù)的返回值是字符串類型“str”,所以需要從鍵盤輸入數(shù)字類型數(shù)據(jù)時,要將輸入的數(shù)據(jù)使用eval()、int()或float()等函數(shù)進行數(shù)據(jù)類型的轉(zhuǎn)換。第2章Python語法基礎(chǔ)622.4.3數(shù)據(jù)類型的轉(zhuǎn)換在程序中經(jīng)常需要將數(shù)據(jù)從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型,例如,使用input()函數(shù)從鍵盤輸入200時,返回的是字符串類型“200”,如果需要進行算術(shù)運算,就要將它轉(zhuǎn)換為數(shù)字類型200,通常使用eval()函數(shù)將字符串類型轉(zhuǎn)換為數(shù)字類型。eval()函數(shù)用來計算表達式的值,其基本語法格式為:eval(<表達式字符串>)功能:去掉字符串定界符得到一個表達式,計算表達式的值并作為函數(shù)值返回。第2章Python語法基礎(chǔ)63例2_2修改例2_1增強功能,要求圓的半徑通過鍵盤輸入。源代碼下:#e2_2_area.pyr=eval(input('請輸入圓的半徑:'))L=2*r*3.14159s=r*r*3.14159print('周長',L,sep=':',end='')print('面積',s,sep=':')保存并執(zhí)行程序,其結(jié)果如下:請輸入圓的半徑:5周長:31.4159面積:78.53975第2章Python語法基礎(chǔ)642.5程序控制結(jié)構(gòu)程序的邏輯控制結(jié)構(gòu)分為三種:順序控制結(jié)構(gòu)、選擇控制結(jié)構(gòu)和循環(huán)控制結(jié)構(gòu)。順序控制結(jié)構(gòu)是根據(jù)語句的書寫順序自上到下執(zhí)行每一條語句。選擇控制結(jié)構(gòu)是根據(jù)條件是否成立來選擇要執(zhí)行的語句。循環(huán)控制結(jié)構(gòu)是根據(jù)條件是否成立來決定是否重復(fù)執(zhí)行某一段程序。不管多么復(fù)雜的程序都采用這三種結(jié)構(gòu)編程,就叫結(jié)構(gòu)化程序設(shè)計。第2章Python語法基礎(chǔ)652.5.1順序控制結(jié)構(gòu)順序控制結(jié)構(gòu)是程序按書寫順序從上到下依次執(zhí)行每一句代碼。例如,例2_1和例2_2中的程序,就是順序結(jié)構(gòu)程序,執(zhí)行程序時,按語句的書寫順序依次執(zhí)行每一條語句。第2章Python語法基礎(chǔ)662.5.2分支控制結(jié)構(gòu)在Python中,提供了if分支控制語句,其基本格式如下所示:if條件表達式1:
語句組1elif條件表達式2:
語句組2elif條件表達式3:
語句組3……elif條件表達式n:
語句組nelse:
語句組n+1其中,elif子句可有0~n個,else子句可有0~1個,根據(jù)具體情況而定。第2章Python語法基礎(chǔ)672.5.3循環(huán)控制結(jié)構(gòu)循環(huán)語句有兩種,一種是for語句,另一種是while語句,其格式如表2.4所示。while是當條件表達式的值為True時,執(zhí)行循環(huán)體,然后再次計算條件表達式的值,如果為True繼續(xù)執(zhí)行循環(huán)體,……,如此往復(fù),直到條件表達式的值為False,則終止循環(huán)跳轉(zhuǎn)到循環(huán)語句后面的語句向下運行。第2章Python語法基礎(chǔ)68例2_3使用turtle庫繪制一個太陽花。源代碼和運行結(jié)果見表2.5。第2章Python語法基礎(chǔ)692.6函數(shù)式編程2.6.1函數(shù)函數(shù)是具有特定功能的已命名的獨立代碼段,通過函數(shù)名來調(diào)用。例如,可以把e2_1_star.py程序畫五角星的代碼抽取出來,進行簡單的封裝,就可以形成一個獨立的函數(shù),可以通過函數(shù)名被多次調(diào)用,函數(shù)定義代碼和調(diào)用代碼見表2.6。
將一個復(fù)雜的問題分解為多個函數(shù)來實現(xiàn),每一個函數(shù)實現(xiàn)一個簡單的功能,即函數(shù)式編程,可以降低問題求解的復(fù)雜性,提高代碼的可讀性、可理解性。第2章Python語法基礎(chǔ)702.6.2函數(shù)類型在Python中,內(nèi)置函數(shù)、標準庫中函數(shù)、第三方包函數(shù)和自定義函數(shù)。1.內(nèi)置函數(shù)內(nèi)置函數(shù)是Python解釋器的組成部分,安裝解釋器后可以直接被調(diào)用,即Python解釋器中可以直接使用的函數(shù)(C語言編寫)。例如,print()輸出函數(shù)、input()輸入函數(shù)在代碼中直接可以使用。2.標準庫函數(shù)把函數(shù)等根據(jù)功能分類,每類放到一個文件中,文件擴展名為.py,該文件就稱為模塊(module),文件名就是模塊名。由模塊文件組成包(package),具有某些功能的模塊和包都可以被稱作庫。模塊由諸多函數(shù)組成,包由諸多模塊結(jié)構(gòu)化組成,庫中也可以包含包、模塊和函數(shù)。標準庫隨Python解釋器一起安裝,使用時不需要安裝,直接導(dǎo)入即可使用。3.第三方庫函數(shù)第三方庫需要安裝、導(dǎo)入才能使用,通常是開源的。例如,jieba中文分詞庫,wordcloud詞云,matploylib可視化輸出庫,pandas數(shù)據(jù)分析庫等都是第三方包。Python計算生態(tài)=標準庫+第三方包第2章Python語法基礎(chǔ)712.7turtle繪圖入門turtle庫是Python內(nèi)置標準庫,用來繪制圖形。2.7.1turtle庫繪圖原理
turtle庫會創(chuàng)建一個內(nèi)含直角坐標系的繪圖窗口,窗口的中心點為坐標原點(0,0),水平向右方向為x軸,垂直向上方向為y軸,畫筆(稱為turtle,小海龜)起始位置在坐標原點、方向水平向右,小海龜接受函數(shù)指令的控制,在這個平面坐標系中移動,從而在它爬行的路徑上繪制出圖形。第2章Python語法基礎(chǔ)722.7.2庫的導(dǎo)入turtle是標準庫,不需要安裝,但需要導(dǎo)入才能使用??梢允褂脙煞N方式導(dǎo)入庫:方式一:import<函數(shù)庫名>[as庫別名]方式二:from<函數(shù)庫名>import*|函數(shù)名表以第一種方式導(dǎo)入,使用庫中函數(shù)時,格式為:<庫名>|<庫別名>.<函數(shù)名>(<參數(shù)表>)以第二種方式導(dǎo)入時,既可以使用“*”導(dǎo)入庫中所有的函數(shù),也可以只導(dǎo)入指定的函數(shù),多個函數(shù)之間用逗號分隔,使用庫中函數(shù)時,函數(shù)名前面不需要加函數(shù)庫名,格式為:<函數(shù)名>(<參數(shù)表>)第2章Python語法基礎(chǔ)732.7.3turtle庫常用函數(shù)turtle庫常用函數(shù)如表2.7所示。
第2章Python語法基礎(chǔ)74例2_4畫出半徑為20、40、60和80像素的同心圓如圖2.3所示代碼如下:fromturtleimport*circle(20)circle(40)circle(60)
circle(80)done()第2章Python語法基礎(chǔ)75例2_5畫出三角形、正方形、五角形、六角形,如圖2.4所示。第2章Python語法基礎(chǔ)76例2_6繪制螺旋線,如圖2.5所示。第2章Python語法基礎(chǔ)772.8應(yīng)用案例2.8.1案例1:溫度轉(zhuǎn)換溫度的表示有兩個不同的體系:華氏溫度和攝氏溫度。攝氏溫度是以1標準大氣壓下水的結(jié)冰點為0度,沸點為100度,將兩個溫度區(qū)間進行100等分后確度1度所代表的溫度區(qū)間,進而表示溫度值。華氏溫度是以1標準大氣壓下水的結(jié)冰點為32度,沸點為212度,將兩個溫度敬意進行180等分后定義為1度區(qū)間,華氏溫度比攝氏溫度體系更為精細。由于歷史原因,不同國家可能采用不同的溫度表示方法。根據(jù)第1章介紹的IPO編程模式和第2章介紹的程序設(shè)計步驟進行程序設(shè)計如下:第2章Python語法基礎(chǔ)781.分析問題原始溫度的輸入方法有多種,最基本、最簡單的方法是鍵盤輸入法。使用input()函數(shù)輸入溫度,然后根據(jù)攝氏溫度(表示為C)和華氏溫度(表示為F)的關(guān)系使用公式來進行轉(zhuǎn)換。如果是攝氏溫度轉(zhuǎn)換為華氏溫度,公式為:F=C*1.8+32反之,華氏溫度轉(zhuǎn)換為攝氏溫度的公式為:C=(F-32)/1.8轉(zhuǎn)換后的溫度值需要輸出。輸出數(shù)據(jù)的方法有很多,最基本最簡單的方法是使用print()函數(shù)將數(shù)據(jù)輸出到控制臺。第2章Python語法基礎(chǔ)792.算法設(shè)計采用IPO編程模式,算法描述如下:(1)輸入數(shù)據(jù):使用input()函數(shù)輸入數(shù)據(jù),溫度值后面加字符C表示攝氏溫度,加F表示華氏溫度。(2)數(shù)據(jù)處理:從輸入數(shù)據(jù)里取出最后一個字符flag和溫度值temp,若flag為c則根據(jù)公式F=temp*1.8+32,將攝氏溫度轉(zhuǎn)換為華氏溫度F,若flag為f則根據(jù)公式C=(temp-32)/1.8將華氏溫度轉(zhuǎn)換為攝氏溫度。(3)輸出數(shù)據(jù):將計算結(jié)果使用print()輸出。第2章Python語法基礎(chǔ)80程序流程圖如圖2.6所示。第2章Python語法基礎(chǔ)812.8.2案例2:繪制小青蛇要求:繪制小青蛇如圖2.7所示。
1.問題分析:小青蛇簡化設(shè)計圖,如圖2.8所示。蟒蛇的身體使用circle()函數(shù)畫弧,每次畫兩段弧且重復(fù)繪制5次,最后畫出脖子和頭部。圖2.8蟒蛇設(shè)計圖第2章Python語法基礎(chǔ)822.算法設(shè)計設(shè)計繪制小蛇的算法,其流程圖如圖2.9所示。第2章Python語法基礎(chǔ)833.編寫程序4.調(diào)試、運行程序運行程序,在turtle繪圖窗口繪制的小青蛇如圖2.7所示。小
結(jié)本章通過繪制紅色五角星實例程序,介紹了Python程序基本組成元素和語法。通過本章的學(xué)習(xí),使讀者能夠掌握Python基本組成元素,包括標識符與保留字、數(shù)據(jù)類型、常量表示和變量的定義與賦值;理解Python代碼風(fēng)格,包括語句、縮進、注釋等;掌握輸出、輸入和求值函數(shù)的用法,包括print()函數(shù)、input()函數(shù)和eval()函數(shù)等;了解結(jié)構(gòu)化程序設(shè)計中的三種基本控制結(jié)構(gòu)及相關(guān)控制語句;了解函數(shù)化編程、Python函數(shù)分類等,能夠使用turtle繪圖繪制簡單圖形。第2章Python語法基礎(chǔ)84Python語言程序設(shè)計第3章基本數(shù)據(jù)類型本章知識導(dǎo)圖第3章期本數(shù)據(jù)類型863.1數(shù)字類型3.1.1數(shù)字類型的分類在Python語言中,數(shù)字類型即數(shù)學(xué)上所說的數(shù),能進行算術(shù)運算。數(shù)字類型又分類整型、浮點型和復(fù)數(shù)型三種類型,如圖3.1所示。第3章期本數(shù)據(jù)類型873.1.1數(shù)字類型的分類1.整型整型與數(shù)學(xué)的整數(shù)概念一致,指由正負號、數(shù)字組成的不帶小數(shù)點的數(shù)。(1)整數(shù)表示形式在Python中,整數(shù)類型數(shù)據(jù)有以下4種進制形式:十進制整數(shù)二進制整數(shù)八進制整數(shù)十六進制整數(shù)(2)整數(shù)取值范圍與C語言、VB語言等不同,Python語言中,整型數(shù)據(jù)的取值范圍從理論上講是(-∞,∞),實際受限于內(nèi)存大小。第3章期本數(shù)據(jù)類型883.1數(shù)字類型
第3章期本數(shù)據(jù)類型893.1數(shù)字類型2.浮點型浮點型與數(shù)學(xué)中實數(shù)的概念一致,表示帶有小數(shù)的數(shù)值。Python語言要求所有浮點數(shù)必須帶有小數(shù)點。這種設(shè)計可以用來區(qū)分浮點數(shù)和整數(shù)類型。(1)浮點數(shù)的表示形式一般形式指數(shù)形式數(shù)學(xué)上用科學(xué)計數(shù)法表示的數(shù)形如a*10b,Python中可以寫為aeb或aEb的指數(shù)形式。注意:①aeb中的三部分缺一不可。②aeb中a是浮點數(shù)類型,b是整數(shù)類型。(2)浮點型的數(shù)值范圍浮點數(shù)類型與整數(shù)類型由計算機的不是硬件單元執(zhí)行,處理方法不同,需要注意的是,盡管浮點數(shù)0.0與整數(shù)0值相同,但它們在計算機內(nèi)的表示不同。第3章期本數(shù)據(jù)類型903.1.1數(shù)字類型的分類3.復(fù)數(shù)類型復(fù)數(shù)類型可以表示數(shù)學(xué)中的復(fù)數(shù)。z=a+bj,a和b都是浮點類型,虛數(shù)部分用j或者J標識。復(fù)數(shù)可以看成二元有序?qū)崝?shù)對(a,b),表示a+bj,其中a是實數(shù)部分,簡稱實部,b是虛數(shù)部分,簡稱虛部。Python語言中,復(fù)數(shù)的虛部通過后綴“J”或“j”來表示。復(fù)數(shù)類型中實部和虛部的數(shù)值都是浮點數(shù)類型。對于復(fù)數(shù)z,可以作z.real和z.imag分別獲得它的實部和虛部。例3_2
若已知z=1.23e-4+5.6e+89j,則z的實部和虛部分別是多少?若z=3+4j,計算在復(fù)平面內(nèi)z到原點的距離。第3章期本數(shù)據(jù)類型91其中,內(nèi)置絕對值函數(shù)abs(x),若x為實數(shù),則返回x的絕對值;若x為復(fù)數(shù),則返回復(fù)平面內(nèi)x點到原點的距離。
3.1.2數(shù)字表達式Python中數(shù)字型數(shù)據(jù)能進行算術(shù)運算,解釋器內(nèi)置了加減乘除冪等運算。1.運算符Python提供了9個基本的數(shù)值運算操作符,如表3.3所示,這些操作符由Python解釋器直接提供,不需要引用庫,也稱為內(nèi)置操作符。第3章期本數(shù)據(jù)類型923.1.2數(shù)字表達式例3_3輸入一個100~999的整數(shù),然后反序顯示這個數(shù),例如輸入123,則輸出321。(1)問題分析與算法設(shè)計對于一個三位數(shù),需要取出每一位數(shù)字,假設(shè)個位數(shù)字、十位數(shù)字、百位數(shù)字分別是a,b,c,則這個三位數(shù)的反序數(shù)可以轉(zhuǎn)換為表達式a*100+b*10+c。使用//和%運算符可以提取數(shù)中的每位數(shù)字。(2)編碼實現(xiàn)第3章期本數(shù)據(jù)類型933.1.1數(shù)字類型表達式2.運算符優(yōu)先級運算符的優(yōu)先級是指當操作數(shù)前后都有運算符時,操作數(shù)優(yōu)先與哪一個操作數(shù)結(jié)合進行運算問題。數(shù)字運算符的優(yōu)先級從高到低依次是:冪運算(**)
正、負號(+,-)
乘、除、整除、取余(//,%,/,*)
加、減(+,-)可以使用圓括號“()”改變運算符的優(yōu)先級。表達式中若運算符的優(yōu)先級相同,則從左向右運算。例3_4計算表達式的值-4**2*2+-5//-2*2/4+1-4**2*2+-5//-2*2/4+1=-16*2+2*2/4+1=-32+1+1=-30-4**2*2+-5//-2*2/4+1相當于:-(4**2))*2+(-5)//(-2)*2/4+1第3章期本數(shù)據(jù)類型943.1.2數(shù)字類型表達式例
3_5把一個人的當前能力值看作1,如果他每天提高或降低一點點,如1%,那么一年(按365天計算)后,他的能力會提高或降低多少?(1)問題分析與算法設(shè)計(2)編碼實現(xiàn):第3章期本數(shù)據(jù)類型953.1.2數(shù)字類型表達式3.運算結(jié)果的數(shù)據(jù)類型Python的9種數(shù)字操作符與數(shù)學(xué)習(xí)慣一致,運算結(jié)果也符合數(shù)學(xué)意義。操作符的運算結(jié)果可能改變數(shù)字類型。3種類型存在一種逐漸“擴展”的關(guān)系:
整數(shù)->浮點數(shù)->復(fù)數(shù)
(寬度越來越寬)4.增強賦值操作符所有的二元數(shù)字操作符(**,*,/,//,%,+,-)都可以與賦值操作符結(jié)合構(gòu)成對應(yīng)的增強操作符。如果用op表示二元數(shù)值操作符,則下面兩個賦值操作等價:xop=y等價于:x=xopy注意,op和二元操作符之間沒有空格。第3章期本數(shù)據(jù)類型963.1.3內(nèi)置數(shù)字函數(shù)1.運算函數(shù)Python提供了一些內(nèi)置的函數(shù),其中與數(shù)值運算相關(guān)的函數(shù)有6個,如表3.4所示。
第3章期本數(shù)據(jù)類型973.1.3內(nèi)置數(shù)字函數(shù)例3_7計算3的3999次冪的最后4位如果先計算pow(3,pow(3,999)),然后將結(jié)果除以10000取余數(shù),即pow(3,pow(3,999))%10000,則由于pow(3,pow(3,999))運算結(jié)果巨大,一般計算機上無法完成。可以使用內(nèi)置函數(shù)pow(x,y,z)來快速完成運算,在進行冪運算的同時會進行模運算,很快得到運算結(jié)果。第3章期本數(shù)據(jù)類型983.1.3內(nèi)置數(shù)字函數(shù)2.類型轉(zhuǎn)換函數(shù)數(shù)值運算操作符可以隱式地轉(zhuǎn)換計算結(jié)果的數(shù)字類型。例如,兩個整數(shù)采用運算符“/”的除法將輸出浮點數(shù)結(jié)果。此外,可以通過內(nèi)置的數(shù)字類型轉(zhuǎn)換函數(shù)(如表3.5所示)顯式地在數(shù)字類型之間進行轉(zhuǎn)換。第3章期本數(shù)據(jù)類型993.1.3內(nèi)置數(shù)字函數(shù)例3_8
從鍵盤輸入圓的半徑,計算圓的周長和面積并輸出,保留2位小數(shù)。程序如下:#e3_8.pyr=float(input('r='))L=2*3.14*rs=3.14*r**2print(round(L,2),round(s,2))保存源程序,運行該程序,其結(jié)果如下:r=1062.80314.00
使用內(nèi)置函數(shù)type(x)可以判斷x的數(shù)據(jù)類型。第3章期本數(shù)據(jù)類型1003.1.4math數(shù)學(xué)庫的使用1.math庫常用常數(shù)和函數(shù)Python用于數(shù)學(xué)計算的標準函數(shù)庫math提供了4個數(shù)學(xué)常數(shù)和44個函數(shù),常用的常量與函數(shù)如表3.6所示。
第3章期本數(shù)據(jù)類型1013.1.4math數(shù)學(xué)庫的應(yīng)用2.math庫的應(yīng)用例3_8
已知一元二次方程ax2+bx+c=0的三個系數(shù)a,b,c,計算方程的實根。分析:(1)ax2+bx+c=0方程?=b2-4ac,若?>=0,則有實根。在本例中,直接假設(shè)方程有實根而不再判斷?是否大于0。(2)求實根時需要用到平方根函數(shù),可以調(diào)用math庫的sqrt()函數(shù)來實現(xiàn)。編寫代碼如下:第3章期本數(shù)據(jù)類型102
3.1.4math數(shù)學(xué)庫的應(yīng)用例3_9
使用turtle庫畫[00,3600]間正弦曲線。(1)問題分析與算法設(shè)計:(2)編寫代碼:(3)代碼測試保存代碼并運行,運行結(jié)果如圖3.3所示。第3章期本數(shù)據(jù)類型1033.2字符串在Python中,字符串是用引號括號起來的0個或多個字符序列。3.2.1字符串的表示在Python中,字符串是使用1對單引號、雙引號或者3對三引號(三個單引號或三個雙引號)括起來的字符序列,這些引號稱作定界符。如果定界符中沒有字符,字符串就稱為空串;如果只有一個字符,此字符串也稱為字符。例如:用print()函數(shù)輸出這4個字符串變量的結(jié)果,都是“helloPython!”使用三引號可以表示多行字符串。注意:同一個字符串,其定界符與字符串中的普通字符不能是同一種引號。第3章期本數(shù)據(jù)類型1043.2.2轉(zhuǎn)義字符在Python中,轉(zhuǎn)義字符是由“\”開頭的后跟一個特殊字符的字符組合,相當于一個字符,輸出時是其轉(zhuǎn)義后的字符。常用轉(zhuǎn)義字符部如表3.7所示。第3章期本數(shù)據(jù)類型1053.2.3字符串索引與切片1.字符串索引字符串是由多個字符組成的有序序列,每個字符在字符串的位置編號稱為該字符的索引,也稱為字符的序號。Python中的字符串包括兩種索引體系,分別是正向遞增索引和反向遞減索引。假設(shè)字符串長度為L,正向遞增索引是從字符串的首字符以0開始編號,向后依次遞增,則第二個字符的索引為1……最后一個字符的索引為L-1;反向遞減索引是從字符串的末尾字符以-1開始編號,向前依次遞減,則右側(cè)第二個的索引為-2……首字符則為-L。這兩種索引可以在一個表示中混合使用。例如,“HelloPython!”字符串的兩種索引體系見表3.8。
第3章期本數(shù)據(jù)類型1063.2.3字符串索引與切片2.訪問單個字符使用方括號“[]”運算符訪問單個字符的語法格式如下:<字符串>[<索引>]第3章期本數(shù)據(jù)類型1073.2.3字符串索引與切片3.字符串切片字符串切片即截取字符串的子字符串。使用方括號“[]”運算符對字符串切片的語法格式為:<字符串>[<M>:<N>]訪問字符串中索引從M到N-1(不包含N)的子字符串,M、N表示字符的索引,可以混合使用正向遞增索引和反向遞減索引。第3章期本數(shù)據(jù)類型1083.2.3字符串索引與切片Python中字符串以Unicode編碼存儲,中文文字如同英文字符都算作1個字符,例如:第3章期本數(shù)據(jù)類型1093.2.3字符串索引與切片例3-11
將月份的英文縮寫“Jan.Feb.Mar.Apr.May.Jun.Jul.Aug.Sep.Oct.Nov.Dec.”保存到一個字符串,通過鍵盤輸入一個月份數(shù)字(1-12),輸出該月份的英文縮寫。(1)問題分析與算法設(shè)計(2)編碼實現(xiàn)第3章期本數(shù)據(jù)類型1103.2.4字符串的遍歷遍歷字符串即訪問字符串中每一個字符,以便對單個字符進行處理。遍歷字符串通常使用for…in循環(huán)語句,語法格式如下:for單字符變量in字符串:
代碼段語句的執(zhí)行過程:例如,下面代碼段遍歷字符串“abc123”中每個字符并輸出,字符之間用制表符“\t”分隔。forcin'abc123':print(c,end='\t')運行代碼輸出結(jié)果:abc123第3章期本數(shù)據(jù)類型1113.2.5字符串運算符Python程序設(shè)計中,除[]運算符外,還經(jīng)常用到4種操作符,如表3.10所示。例3-12
字符串連接與復(fù)制運算示例。第3章期本數(shù)據(jù)類型1123.2.6內(nèi)置字符串處理函數(shù)Python內(nèi)置函數(shù)中有6個與字符串處理有關(guān),如表3.11所示。
第3章期本數(shù)據(jù)類型1133.2.6內(nèi)置字符串處理函數(shù)例3-13
輸入一個小寫英文字母,將其轉(zhuǎn)化為大寫英文字母,最后輸出原字母、轉(zhuǎn)換后的大寫字母。(1)問題分析與算法設(shè)計(2)編程實現(xiàn)第3章期本數(shù)據(jù)類型1143.2.7格式化字符串格式化字符串是指將字符串轉(zhuǎn)換為指定格式的字符串,主要是為了實現(xiàn)常量與變量值的混排。1.使用format()方
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 輔警培訓(xùn)課件教學(xué)模板
- 失能老人護理專業(yè)培訓(xùn)課程
- 《GAT 797.2-2008公安基本裝備業(yè)務(wù)信息代碼 第2部分:公安基本裝備流向方式代碼》專題研究報告深度
- 2026年深圳中考物理磁場的基本性質(zhì)試卷(附答案可下載)
- 2026年深圳中考生物生物體的結(jié)構(gòu)層次試卷(附答案可下載)
- 2026年深圳中考生物高分沖刺綜合試卷(附答案可下載)
- 健身證書題庫及答案大全
- 2026年人教版物理八年級上冊期末質(zhì)量檢測卷(附答案解析)
- 大數(shù)據(jù)分析技術(shù)平臺搭建要點
- 2025云南昆華醫(yī)院投資管理有限公司(云南新昆華醫(yī)院)招聘3人備考題庫參考答案詳解
- 中西醫(yī)結(jié)合診治妊娠胚物殘留專家共識(2024年版)
- 2026年托里國電投發(fā)電有限責(zé)任公司招聘備考題庫及1套完整答案詳解
- 2025-2026學(xué)年北京市海淀區(qū)初二(上期)期末物理試卷(含答案)
- 2025-2026年魯教版八年級英語上冊期末真題試卷(+答案)
- (正式版)DB51∕T 2732-2025 《用材林培育技術(shù)規(guī)程 杉木》
- 八年級下冊 第六單元寫作 負責(zé)任地表達 教學(xué)課件
- 美容院2025年度工作總結(jié)與2026年發(fā)展規(guī)劃
- 26年三上語文期末密押卷含答題卡
- 2026屆云南省昆明市西山區(qū)民中數(shù)學(xué)高一上期末考試模擬試題含解析
- 2025-2030烏干達基于咖啡的種植行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2026年共青團中央所屬單位招聘66人備考題庫及答案詳解一套
評論
0/150
提交評論