Python程序設(shè)計課件 高波 第1-4章 Python概述-函數(shù)_第1頁
Python程序設(shè)計課件 高波 第1-4章 Python概述-函數(shù)_第2頁
Python程序設(shè)計課件 高波 第1-4章 Python概述-函數(shù)_第3頁
Python程序設(shè)計課件 高波 第1-4章 Python概述-函數(shù)_第4頁
Python程序設(shè)計課件 高波 第1-4章 Python概述-函數(shù)_第5頁
已閱讀5頁,還剩221頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第一章Python概述Python程序設(shè)計01初識Python02搭建Python開發(fā)環(huán)境03Python集成開發(fā)環(huán)境04本章回顧01初識PythonPython是一種跨平臺、開源、免費、面向?qū)ο?、解釋型的高級編程語言??蓱糜赪eb開發(fā)、網(wǎng)絡(luò)爬蟲、游戲開發(fā)、自動化運維、人工智能等領(lǐng)域。在2022年的TIOBE編程語言排行榜中,Python位居第一。Python的由來1989年圣誕節(jié),荷蘭人吉多·范·羅蘇姆在阿姆斯特丹家中為打發(fā)無趣,決心開發(fā)新腳本解釋程序,因喜歡《MontyPython飛行馬戲團》,將其命名為Python。Python并非憑空創(chuàng)造,源自吉多曾參與設(shè)計的閉源編程語言ABC,他借鑒Modula-3、Unixshell和C等語言優(yōu)點,經(jīng)過一年多改進優(yōu)化,1991年第一個Python編譯器(解釋器)誕生。Python的版本Python有三個主要版本:1.1994年發(fā)布1.0版,具多種優(yōu)秀結(jié)構(gòu)、數(shù)據(jù)類型及拓展系統(tǒng)。2.2000年發(fā)布2.0版,新增功能且轉(zhuǎn)社區(qū)開發(fā),后因重復結(jié)構(gòu)模塊被3版取代,2020年停止維護。3.2008年推出3.0版,整合標準庫,解決2.x問題,回歸設(shè)計理念,2021年已至3.9.7版。Python的特點優(yōu)點:1.簡單靈活,貼近人類語言,格式要求不嚴格,專注解決問題。2.免費開源,用戶可參與改進性能、彌補漏洞,發(fā)展迅猛。3.可移植性強,無需編譯,不同平臺裝解釋器即可運行,支持多平臺。4.類庫豐富,涵蓋廣,可調(diào)用C/C++加速關(guān)鍵代碼,是“膠水語言”,社區(qū)好,巨頭參與,功能全。

Python的特點缺點:1.運行速度慢,一邊運行一邊“翻譯”源代碼且作為高級語言多做很多工作,雖遠慢于C/C++和Java,但可由硬件性能提升彌補。2.代碼加密困難,因是解釋型語言直接運行源代碼,難以對其加密。Python的應用領(lǐng)域由于Python簡單靈活、免費開源、可移植性強等眾多優(yōu)點,Python的應用領(lǐng)域眾多,可總結(jié)如下圖所示。Web開發(fā)Python

在Web開發(fā)方面優(yōu)勢明顯,國內(nèi)豆瓣網(wǎng)、OpenStack、Dropbox等項目均用Python實現(xiàn)。有多個成熟的Web框架:1.Django:2003年誕生于美國,遵循MVC設(shè)計模式,功能完整,2019年12月發(fā)布3.0版本,由管理工具、模型、視圖、模板、表單、管理站等組成。Web開發(fā)2.Flask:2010年出現(xiàn),面向簡單需求和小型應用,輕量級可定制,具有內(nèi)置開發(fā)服務器和調(diào)試器等特點。3.Tornado:2009年發(fā)布,作為FriendFeed網(wǎng)站基礎(chǔ)框架,強大可擴展非阻塞,具有高效網(wǎng)絡(luò)庫、完備WebSocket支持等。4.Twisted:有10多年歷史,開源事件驅(qū)動型網(wǎng)絡(luò)框架,支持多種協(xié)議,提供客戶端和服務器開發(fā)工具。網(wǎng)絡(luò)爬蟲Python

在網(wǎng)絡(luò)爬蟲方面應用廣泛,Google等公司大量使用。網(wǎng)絡(luò)爬蟲程序主要由四部分組成:1.爬蟲調(diào)度器:是爬蟲入口,負責程序的開始、運行和結(jié)束,主要由循環(huán)判斷待爬取URL集合是否為空。2.URL管理器:輔助調(diào)度器管理待爬URL集合和已爬取URL集合,可使用Python的set數(shù)據(jù)類型。3.網(wǎng)頁下載器:是爬蟲核心技術(shù)之一,會用到Urllib、Requests、Selenuim等庫。4.網(wǎng)頁解析器:是爬蟲另一核心技術(shù)和最后一步,從頁面提取感興趣信息,常用解析庫有BeautifulSoup、requests-html、XPath等。游戲開發(fā)市面上很多游戲用C++寫高性能模塊,Python或Lua寫邏輯。Lua功能簡單、體積小,Python支持更多特性和數(shù)據(jù)類型。國際知名游戲《文明》用Python實現(xiàn)。Python可直接調(diào)用OpenGL實現(xiàn)3D繪制,是高性能游戲引擎技術(shù)基礎(chǔ),有很多Python語言的游戲引擎如Pygame、Pyglet、Cocos2d等。自動化運維Python自動化運營1.運維自動化目的是實現(xiàn)IT運維質(zhì)量、降低成本,是將靜態(tài)設(shè)備結(jié)構(gòu)轉(zhuǎn)化為動態(tài)彈性響應策略。2.在很多操作系統(tǒng)中,Python是標準組件,可在終端直接運行。3.Python編寫的系統(tǒng)管理腳本在可讀性、性能、代碼重用度及擴展性方面優(yōu)于普通Shell腳本,適合做自動化運維。4.常用Python運維工具包括Pexpect、Paramiko、Fabric、Ansible、Saltstack等,涵蓋自動化操作、系統(tǒng)管理、配置管理、集群管理等主題??茖W計算Python科學計算1.Python擅長科學計算和數(shù)據(jù)分析,能繪制高質(zhì)量2D和3D圖像,有很多成熟開發(fā)庫如Numpy、SciPy、Pandas、Matplotlib等。2.Numpy是專門用于數(shù)值計算的庫,可存儲處理大型矩陣,底層函數(shù)多為C編寫,運算速度快,是Scipy、Pandas、SKlearn、Tensorflow等框架基礎(chǔ)庫。3.Scipy基于Numpy,用于數(shù)學、工程等領(lǐng)域,可高效處理統(tǒng)計、積分等問題,與Numpy結(jié)合提高科學計算效率。4.Pandas基于Numpy構(gòu)建,有更高級數(shù)據(jù)結(jié)構(gòu)和分析能力,提供Series和DataFrame兩種核心數(shù)據(jù)結(jié)構(gòu),能快速處理多種數(shù)據(jù)且可與其他庫完美集成。5.Matplotlib是最基礎(chǔ)核心的數(shù)據(jù)可視化庫,提供多種圖表繪制函數(shù)及豐富的畫布、顏色設(shè)置方法??茖W計算Python科學計算1.人工智能是熱點領(lǐng)域,與傳統(tǒng)行業(yè)結(jié)合是未來方向,人工智能領(lǐng)域工程師熱門且工資高。2.

Python在人工智能的機器學習、神經(jīng)網(wǎng)絡(luò)、深度學習等方面是主流編程語言。3.

世界優(yōu)秀人工智能學習框架如TensorFlow、PyTorch、Karas神經(jīng)網(wǎng)絡(luò)庫等都是用Python實現(xiàn)。4.

由于人工智能的發(fā)展,Python近幾年發(fā)展迅猛,在AI時代作為頭牌語言的位置無人可撼動。02搭建Python開發(fā)環(huán)境工欲善其事,必先利其器。如果需要使用Python,則需要先搭建Python開發(fā)環(huán)境。Python是跨平臺的開發(fā)工具,可以在Windows、Linux、macOS等操作系統(tǒng)中進行編程。Windows開發(fā)環(huán)境搭建在Python官網(wǎng)下載安裝包,路徑“Downloads—>Windows”Windows開發(fā)環(huán)境搭建雙擊下載后的程序(python-3.8.5-amd64.exe)進行安裝,選擇自定義安裝,并勾選“AddPython3.7toPATH”復選框,把Python的執(zhí)行目錄放到系統(tǒng)的PATH環(huán)境變量中,這樣我們就可以從Windows系統(tǒng)的任何位置調(diào)用Python解釋器。Windows開發(fā)環(huán)境搭建在彈出的安裝選型中采用默認設(shè)置(全選),安裝Python文檔、安裝下載pip工具、安裝Tkinter和IDLE開發(fā)環(huán)境、安裝標準庫測試套件、安裝pylauncher(用于關(guān)聯(lián).py后綴文件和Python解釋器)。Windows開發(fā)環(huán)境搭建單擊“Next”,打開高級選項對話框,重點關(guān)注兩項,第一,“Installforallusers”,為所有用戶安裝Python,這樣除了當前登陸用戶外,Python安裝完后本機其他用戶也可以使用。第二,根據(jù)需要,選擇一個安裝位置,也可以使用默認位置。選擇完成后,就可以單擊“Install”按鈕開始安裝。Windows開發(fā)環(huán)境搭建安裝時間由前面選擇的安裝內(nèi)容決定,選擇的內(nèi)容越多所需要的時間就越長。安裝完成后,即可看到如右圖所示的對話框,單擊“Close”按鈕關(guān)閉此對話框。Windows開發(fā)環(huán)境搭建安裝完成后,需要檢查是否安裝成功,使用“win+R”快捷鍵,在運行框中輸入“cmd”打開命令行。在命令行中輸入“python”,如果出現(xiàn)圖1-16框中的信息,即代表安裝成功。Windows開發(fā)環(huán)境搭建Python安裝成功之后,我們可以先使用Python輸出一首詩,體驗一下。在“>>>”之后,我們即可輸入Python代碼。除了使用命令行編寫代碼外,我們還可以使用安裝Python時自帶的工具IDLE,通過IDLE編寫代碼時,會有不同的顏色顯示代碼,更容易閱讀。Linux開發(fā)環(huán)境搭建Linux是一套免費使用和自由傳播的類Unix操作系統(tǒng),是一個多用戶、多任務,且支持多線程和多CPU的性能穩(wěn)定的網(wǎng)絡(luò)操作系統(tǒng)。Linux有上百種不同的發(fā)行版,目前主流的包括CentOS、Ubuntu、Fedora、OpenSuse、Debian等。對于Python環(huán)境,目前主流的Linux發(fā)行版都自帶,但是有時由于版本問題還是不能完全滿足我們的需求,需要自己搭建開發(fā)環(huán)境,請掃碼查閱:以64位CentOS7系統(tǒng)為例安裝Python3。MacOS開發(fā)環(huán)境搭建和Linux發(fā)行版類似,MacOS系統(tǒng)一般會自帶Python環(huán)境,可以在終端(Terminal)窗口中輸入命令“python”來檢測安裝的Python環(huán)境及其版本。從下圖可以看出,此MacOS系統(tǒng)中自帶的Python環(huán)境為2.7.18版本,而如果我們需要使用Python3版本,需要單獨進行安裝。具體安裝方法請掃碼查閱。03Python集成開發(fā)環(huán)境集成開發(fā)環(huán)境,即IntegratedDevelopmentEnvironment,簡寫為IDE。用來表示輔助程序員開發(fā)的應用軟件。使用IDE可以提高開發(fā)效率,常用的PythonIDE包括IDLE、PyCharm、Anaconda等。IDLEIDLE是在Windows上安裝Python環(huán)境時,選擇安裝的,IDLE比較輕量級,界面比較簡單,包含了代碼編輯、解釋執(zhí)行、代碼跟蹤調(diào)試等功能,在上一小節(jié)中我們已經(jīng)使用過這個工具。IDLE分為初始時的交互模式(交互窗口)、編輯模式和調(diào)試模式,我們之前使用的就是交互模式。IDLE編輯模式編輯模式需要從交互窗口進入,選擇“File”菜單下的“NewFile”子菜單。編輯模式是一個獨立的窗口,初始狀態(tài)是一個空的文檔,等待輸入代碼。在編輯模式下,代碼編輯完成后,首先要把它保存成一個Python源碼文件。選擇“File”菜單中的“Save”子菜單,或者按下“ctrl+s”快捷鍵,把代碼保存成一個.py后綴的文件。詳見右圖。IDLE編輯模式代碼保存后就可以使用解釋器對它解釋執(zhí)行了。選擇“Run”菜單下的“RunModule”子菜單,或按下“F5”快捷鍵,就會對當前打開的Python文件進行解釋執(zhí)行。執(zhí)行的結(jié)果會在交互窗口中顯示出來。IDLE調(diào)試模式如果對代碼執(zhí)行的結(jié)果有疑問,可以啟動調(diào)試模式。調(diào)試模式也要從交互窗口的菜單里打開(“Debug”菜單下的“Debugger”子菜單)。IDLE編輯模式如果需要在代碼中加斷點,可以在代碼編輯窗口中,右鍵單擊要添加斷點的代碼行,在彈出的菜單中,選擇“SetBreakpoint”即可。添加了斷點的代碼行會自動設(shè)置成黃色,這時按下“F5”啟動代碼執(zhí)行,就會進入調(diào)試模式,并且執(zhí)行到斷點處自動停止。PyCharmPyCharm是目前Windows下一個比較流行的、且功能比較強大的IDE。它是Jetbrains公司的一款商業(yè)軟件,需要付費購買使用。但同時它也提供了一個免費的社區(qū)版本,功能比付費版本少一些。PyCharmPyCharm的安裝步驟很簡單,由于本書不以PyCharm為主要使用工具,在這里就不詳細介紹其安裝步驟了,下面列出了安裝時需注意的幾點問題:

1.選擇安裝位置時,選擇的安裝盤剩余空間一定不能小于PyCharm所需空間。

2.在選擇安裝選項時,可以根據(jù)需要適當勾選。

3.安裝完成后,第一次打開PyCharm需要做一些設(shè)置。AnacondaAnaconda是目前比較流行的Python發(fā)行版本,它有強大的包管理與環(huán)境管理功能,Anaconda中除了包含Python的基本環(huán)境和內(nèi)置庫以外,還會安裝一些常用的第三方包,使用起來很方便。由于安裝Anaconda會自動安裝JupyterNotebook,而JupyterNotebook做為一個交互式的工具,非常適合初學者,也是我們這本書主要使用的工具,請讀者掃碼學習Anaconda的下載和安裝過程。JupyterNotebookJupyterNotebook是一個交互式的環(huán)境,其本質(zhì)是一個Web應用程序,便于創(chuàng)建和共享程序文檔,可以一邊寫代碼一邊記筆記,如果電腦中已安裝了Anaconda,那么單擊開始菜單欄中的“JupyterNotebook”即可進入。JupyterNotebook在JupyterNotebook主頁的菜單欄上,有Files(文件)、Running(運行)、Clusters(集群)三個選項,我們用的最多的就是Files,可以對文件進行復制、重命名、移動、下載、刪除等操作。案例【案例描述】所謂體脂率就是人體內(nèi)脂肪重量在人體總體重中所占的比例,它反映人體內(nèi)脂肪含量的多少。男性和女性的體脂率正常范圍不同,男性為15%~18%,女性為25%~28%,體脂率過高和過低都影響健康。計算體脂率首先需要計算出BMI(BodyMassIndex,身體質(zhì)量指數(shù)),BMI的計算公式為:BMI=體重/身高的平方(國際單位kg/㎡);然后結(jié)合BMI計算體脂率,公式為:體脂率=1.2×BMI+0.23×年齡-5.4-10.8×性別(男為1,女為0)。【案例要求】①接收用戶輸入信息。②計算BMI。③計算體脂率。本章回顧本章共分為三小節(jié)內(nèi)容,第一小節(jié)主要介紹Python由來、Python版本、Python特點以及Python應用領(lǐng)域,旨在讓大家對Python有一個系統(tǒng)地認識。第二小節(jié)為Windows、Linux和MacOS三個操作系統(tǒng)下的Python安裝過程介紹。第三小節(jié)主要介紹Python常用的IDE,包括IDLE、PyCharm、Anaconda和JupyterNotebook,最后通過一個小案例帶領(lǐng)大家體驗Python的魅力。本章回顧1.以下不屬于Python特點的是()。A.免費開源 B.可移植性強 C.豐富的類庫 D.編譯型語言2.以下不屬于Python常用IDE的是()。A.PyCharm B.VisualStudio C.Anaconda D.IDLE3.關(guān)于Python描述錯誤的是()。A.Python是解釋型語言B.Python運行速度高于JavaC.Python是開源且免費的D.Python具有豐富的類庫4.簡述Python的應用領(lǐng)域。期待您的寶貴意見Python程序設(shè)計教學團隊第二章Python基礎(chǔ)語法與數(shù)據(jù)類型Python程序設(shè)計01Python的基礎(chǔ)語法02Python中的基礎(chǔ)數(shù)據(jù)類型03Python中的高級數(shù)據(jù)類型04本章回顧01Python的基礎(chǔ)語法Python的語法特點Python語言與C、Java等編程語言有許多相似之處,但是也存在一些差異,本小節(jié)將從代碼縮進、注釋、標識符與關(guān)鍵字、命名規(guī)范、編碼規(guī)范、基本輸入輸出函數(shù)6個方面介紹Python語法的特點。代碼縮進Python與C、Java等編程語言最大的區(qū)別就是縮進方式不同,Python不采用大括號“{}”來分隔代碼塊,而是使用縮進來寫模塊??s進的空白數(shù)量是可變的,可以使用空格或Tab鍵實現(xiàn),但是要注意的是同一個級別代碼塊的縮進量必須相同,如果不采用合理的代碼縮進將報錯。注釋Python注釋分為單行注釋和多行注釋,單行注釋采用“#”開頭,多行注釋使用三個單引號(''')或三個雙引號(""")。標識符與關(guān)鍵字標識符是計算機語言中用于標識變量、函數(shù)、類、模塊等名稱的有效字符串集合。Python標識符字符串規(guī)則與C、Java等編程語言類似,總結(jié)如下:由字符(A~Z和a~z)、數(shù)字和下劃線組成,但數(shù)字不能作為第一個字符。不能包含空格、@、%等特殊字符。不能包含Python關(guān)鍵字,可使用標準庫中的keyword模塊查看。命名規(guī)范在編寫代碼時,命名很重要,好的名字可以增加代碼的可讀性,下面列出了常用的命名規(guī)范供參考。包名不宜過長,全部使用小寫字母,不推薦使用下劃線,如mypackage。模塊名不宜過長,全部使用小寫字母,多個單詞間可以使用下劃線“_”分隔,如my_module。類名應使用首字母大寫的單詞串(駝峰命名),如MyClass。函數(shù)、變量及屬性命名規(guī)則與模塊類似,即全部使用小寫字母,多個單詞間可以使用下劃線分隔。常量、全局變量全部使用大寫字母,多個單詞間可以使用下劃線分隔。單下劃線“_”開頭的模塊或函數(shù)是受保護的,雙下劃線“__”開頭的實例變量或方法是類私有的。Python編碼規(guī)范PEP8PEP8由吉多團隊于2001年7月創(chuàng)建,是Python增強提案的縮寫,版本號為8。它約定了Python代碼的編碼規(guī)范,涵蓋9大類要求,部分常用要求如下:一、文檔編排1.一個import語句只導入一個模塊,不采用“importos,sys”形式。2.若用“fromXXimportXX”引用庫,可省略“module.”,但可能與本地名字沖突時需采用“importXX”。二、代碼編排1.使用4個空格縮進,不用Tab,不能混合使用Tab和空格。2.不行尾加分號,不將兩條命令放同一行。3.每行字符數(shù)不超79,超則用小括號連接多行內(nèi)容。4.if/for/while語句即使執(zhí)行語句只有一句也須另起一行。Python編碼規(guī)范PEP8三、注釋1.與代碼自相矛盾的注釋比沒注釋更差,修改代碼時要優(yōu)先更新注釋。2.注釋塊通常應用在代碼前,并和這些代碼有同樣的縮進。四、空格(總體原則,避免不必要的空格)1.各種右括號、逗號、冒號、分號前不要加空格。2.函數(shù)的左括號前、序列的左括號前不要加空格。如Func(1)、list[2]。3.文件中的函數(shù)與類之間應該用兩個空行隔開;同一個類中,各方法之間應該用一個空行隔開。4為變量賦值的時候,賦值符號的左側(cè)和右側(cè)應該各自寫上一個空格,而且只寫一個?;据斎胼敵龊瘮?shù)Python中最基本的輸入和輸出函數(shù)是input函數(shù)和print函數(shù),這兩個函數(shù)我們在“計算體脂率”的案例中都使用過。(1)input函數(shù)input函數(shù)是Python的內(nèi)置函數(shù),用于接收用戶在鍵盤的輸入信息,基本語法如下:str用于保存輸入的變量,在Python3中,無論從鍵盤輸入的是數(shù)字還是字符都將被做為字符串讀取,所以在“計算體脂率”案例中使用了int、float函數(shù)轉(zhuǎn)換數(shù)據(jù)類型。基本輸入輸出函數(shù)print函數(shù)是我們接觸Python時用到的第一個函數(shù),使用它可以將結(jié)果輸出到控制臺,也可以輸出到指定文件中,右圖為基本輸入輸出函數(shù)的使用案例。Python運算符運算符是一種用于執(zhí)行特定的數(shù)學或邏輯操作的符號,Python提供了豐富的運算符,包括算術(shù)運算符、賦值運算符、比較運算符、邏輯運算符、位運算符等。1.算術(shù)運算符:是用來處理基本的數(shù)學四則運算的符號,Python常用的算術(shù)運算符總結(jié)如下圖所示。賦值運算符2.賦值運算符主要用于為變量賦值。變量在編程語言中是程序員定義的一串字符,代表一個數(shù)據(jù),也可以說是程序員給這個數(shù)據(jù)起的名字。Python中常用的賦值運算符總結(jié)如表下圖所示。比較運算符3.比較運算符,又稱關(guān)系運算符,主要用于對變量或表達式結(jié)果進行比較(表達式是使用運算符將不同類型的數(shù)據(jù)連接起來的式子),其返回結(jié)果有True(真)和False(假)兩種。Python常用的比較運算符總結(jié)如下圖所示。邏輯運算符4.邏輯運算符用來表示日常交流中的“并且”,“或者”,“除非”等思想,邏輯運算符可以將兩個或多個關(guān)系表達式連接成一個或使表達式的邏輯反轉(zhuǎn)。Python常用的邏輯運算符總結(jié)如下圖所示。其他運算符除了上述運算符之外,Python還有成員運算符、身份運算符、位運算符(把數(shù)字看作二進制來進行計算),總結(jié)如右圖所示。運算符優(yōu)先級在使用運算符時,是有優(yōu)先級的,優(yōu)先級高的運算先執(zhí)行,優(yōu)先級低的運算后執(zhí)行,同一優(yōu)先級的運算從左到右順序執(zhí)行。表2-6中按照優(yōu)先級由高到低的順序列出了Python運算符。運算符優(yōu)先級關(guān)于運算符的使用舉例如下圖所示。02Python基本數(shù)據(jù)類型數(shù)字類型數(shù)字類型主要用于存儲數(shù)值,數(shù)字類型是不可改變的。如果修改了數(shù)字類型中的變量值,那么會先把該值存放到內(nèi)存中,然后讓其指向新的內(nèi)存地址。Python中的數(shù)字類型包括整數(shù)(int)、浮點數(shù)(float)和復數(shù)(complex)。整數(shù)整數(shù)用來表示數(shù)學中的整數(shù)數(shù)值,包括正整數(shù)、負整數(shù)和0。在Python中,整數(shù)按照表現(xiàn)形式可分為十進制整數(shù)(默認)、二進制整數(shù)、八進制整數(shù)和十六進制整數(shù),相關(guān)描述如下圖所示。需要注意的是不管用什么方式表示整數(shù),在計算機中,所有數(shù)據(jù)都是以二進制方式存放在內(nèi)存中。浮點數(shù)浮點數(shù)可表示數(shù)學中小數(shù),如3.1415926、1.414等,且能用科學計數(shù)法形式(以e/E表示,如3.14可寫成多種形式)表示。使用浮點數(shù)計算時需注意,因計算機系統(tǒng)中的說小數(shù)以二進制形式存于內(nèi)存,其計算會有與數(shù)學上不同的現(xiàn)象,如下圖所示浮點數(shù)由于0.1和0.2在內(nèi)存中是以一個非常接近的數(shù)字存儲的,所以兩者相加,得到的數(shù)字不是精確的0.3?;谝陨显?,在編程語言中,不能直接使用比較運算符“==”判斷浮點數(shù)的大小,如右圖所示。復數(shù)Python中的復數(shù)用來表示數(shù)學中的復數(shù),形式與數(shù)學中一致,都是由實部和虛部組成,如a+bj,其中a代表實部,b代表虛部。可以分別使用real和imag來訪問復數(shù)的實部和虛部,如右圖所示。字符串類型字符串是用于表示文本的數(shù)據(jù)類型,可由數(shù)字、字母、下劃線組成。在Python中,用英文引號標識的一串字符就是字符串類型數(shù)據(jù)。右圖中的四種引號形式都可以表示字符串,但是需要注意前面和后面使用的引號形式必須一致。轉(zhuǎn)義字符Python中的字符串支持轉(zhuǎn)義字符,轉(zhuǎn)義字符即使用反斜杠“\”對一些特殊字符進行轉(zhuǎn)義,常用的轉(zhuǎn)義字符總結(jié)如下圖所示。字符串的基本操作字符串的基本操作包括可以使用加號“+”進行字符串連接,使用索引訪問字符串中的字符,使用切片截取字符串,使用成員運算符判斷字符串中是否包含給定字符等,總結(jié)如下圖所示。應用舉例運行結(jié)果如下圖所示格式化字符串格式化字符串是指先制定好一個模板,在這個模板上預留幾個空位,然后再根據(jù)需要填上相應的內(nèi)容。在Python中,格式化字符串有兩種方式,分別是使用“%”操作符和使用format方法。格式化字符串(1)使用“%”操作符格式化字符串使用“%”操作符格式化字符串的語法如下:格式化字符串(1)使用“%”操作符格式化字符串使用“%”操作符格式化字符串的語法如下:格式化字符串(2)使用format方法格式化字符串字符串對象提供了format方法用于進行字符串格式化,它是通過{}和:來代替%(目前格式化字符串一般使用format方法,%方式不太常用了),其語法如下:其中template用于指定字符串的顯示樣式即模板,exp用于指定要轉(zhuǎn)換的項,如果有多項,則使用逗號進行分隔。接下來重點介紹創(chuàng)建模板,模板是使用“{}”和“:”來指定占位符,其語法格式如下:格式化字符串應用舉例格式化字符串(3)f-string格式化字符串在Python3.6中,新增了一種格式化字符串的使用,即f-string,其可以直接在占位符中插入變量,使用起來更方便,如下圖所示。從下圖中我們可以看出,f-string格式化字符串的使用方式很簡單,首先在需格式化的字符串前使用字母f,然后將被替換字段放入大括號“{}”中即可。字符串常用方法在開發(fā)過程中,經(jīng)常需要對字符串進行操作,如替換字符串中的某個字符、字符串切割等,現(xiàn)將常用的方法總結(jié)如右圖所示應用舉例應用舉例布爾類型布爾類型用于表示真值或假值,在Python中用常量True和False表示,比較運算符返回值為布爾類型。Python里布爾類型是int類型子類,True可表1,F(xiàn)alse可表0,如右圖所示在Python中,所有對象可做真值測試,除以下幾種情況結(jié)果為假外,多數(shù)情況為真:-False或None。-數(shù)字中的0。-空序列(含字符串、元組、字典、列表,下面詳細介紹)。03Python高級數(shù)據(jù)類型在上面中我們介紹了數(shù)字(整數(shù)、浮點數(shù)、復數(shù))、字符串、布爾三種基本數(shù)據(jù)類型,本節(jié)我們將介紹列表、元組、字典這三種在開發(fā)中非常常用的高級數(shù)據(jù)類型。列表、元組、字典,還有之前介紹的字符串都屬于序列,序列指的是一塊可存放多個值的連續(xù)內(nèi)存空間,這些值按一定順序排列,所以每一個值都有一個對應的位置編號,即索引,如下圖所示。列表的特點列表即List,是Python中使用非常頻繁的數(shù)據(jù)類型,列表中的所有元素都放在一對中括號“[]”中,兩個相鄰元素間使用逗號“,”分隔。1.列表的特點列表非常靈活,其特點可總結(jié)如下:列表是任意對象的有序集合,可變序列。列表中的元素可以是數(shù)字、字符串、元組等Python支持的所有數(shù)據(jù)類型。同一個列表中,元素的類型可以不同。列表的創(chuàng)建與刪除列表的創(chuàng)建可以使用最基本的“[]”形式,也可以使用list方法,列表的刪除可以使用del語句,舉例如右圖所示。列表的創(chuàng)建與刪除上頁中使用的range()函數(shù)是Python內(nèi)置的函數(shù),返回的是一個可迭代對象,其語法如下:列表常用操作與方法列表是序列的一種,所以序列的常用操作和函數(shù)(如右圖所示),列表也都可以使用。應用舉例應用舉例列表常用操作與方法除此之外,列表還有一些常用的添加、刪除元素等方法,如右圖所示。應用舉例元組元組即Tuple,是與列表相似的數(shù)據(jù)類型,不同之處在于元組不能修改。元組中的所有元素都放在一對圓括號“()”中,兩個相鄰元素間使用逗號“,”分隔。1.元組的使用由于元組是不可變序列,所以序列通用操作和常用方法中,關(guān)于修改元素的內(nèi)容元組都不支持,如右圖所示。元組列表中的關(guān)于添加、刪除元素的方法,在元組中也不支持,如右圖所示,元組只支持count和index兩個方法。應用舉例元組與列表的區(qū)別元組與列表非常類似,它們之間的主要區(qū)別總結(jié)如下:列表使用中括號“[]”創(chuàng)建,元組使用小括號“()”創(chuàng)建。

列表是可變序列,元組是不可變序列。列表可以使用索引和切片的方式訪問和修改元素,元組也可以使用索引和切片訪問元素,但不支持修改元素。列表中可以使用append()、insert()、remove()等方法添加、刪除元素,而元組中沒有這些方法。元組比列表的訪問和處理速度快,所以元組可以用于保存程序中不會修改的內(nèi)容。字典字典即Dict,也是Python中使用非常頻繁的數(shù)據(jù)類型,與列表類似,不同的是字典是無序可變序列。字典中的所有元素都放在一對大括號“{}”中,兩個相鄰元素間使用逗號“,”分隔,字典中的元素是“鍵(key)值(value)對”類型,每個鍵和值之間用冒號“:”分隔,通過key可以快速找到value。元組字典的創(chuàng)建可以使用最基本的“{}”形式,也可以使用dict方法。舉例如下圖所示。字典的常用方法字典的常用方法總結(jié)如下圖所示。應用舉例集合集合即Set,用于表示不重復元素,是無序、可變序列。在Python中,集合中的所有元素都放在一對大括號“{}”中,兩個相鄰元素間使用逗號“,”分隔。1.集合的創(chuàng)建集合有兩種創(chuàng)建方式,一種是直接使用大括號“{}”創(chuàng)建,另一種是使用set()函數(shù),set()函數(shù)可以將字符串、列表等類型轉(zhuǎn)換為集合,舉例如下頁所示應用舉例從下圖的運行結(jié)果可看出,集合是無序的,且如果創(chuàng)建集合時有重復元素,將只保留一個元素,還有一點需要注意的是創(chuàng)建空集合只能使用set()函數(shù),因為使用大括號“{}”創(chuàng)建,將代表是空字典。集合的常用方法集合的常用方法總結(jié)如下圖所示。應用舉例集合的運算集合可以進行交集、并集、差集運算,這是和列表、字典等其它序列的最大區(qū)別。關(guān)于集合運算的相關(guān)方法總結(jié)如下圖所示。列表

元組

字典

集合的關(guān)系本節(jié)分別介紹了列表、元組、字典、集合的基本使用,它們都屬于序列,有很多相似的地方,也有很多區(qū)別,總結(jié)如下圖所示。03數(shù)據(jù)類型轉(zhuǎn)換Python是動態(tài)類型的編程語言,也稱為弱類型編程語言,它不需要像Java、C一樣在使用變量前聲明變量類型,但有時需要用到類型轉(zhuǎn)換。右圖為常用的數(shù)據(jù)類型轉(zhuǎn)換函數(shù)。應用舉例列表、元組、字典的遍歷案例【案例描述】某健身培訓班學生分為A、B、C三組,每組共有學員5人。A組成員包括趙錢、孫李、周吳、鄭王、馮陳,成績分別為79、68、77、86、92;B組成員包括褚衛(wèi)、蔣沈、韓楊、朱秦、尤許,成績分別為81、83、62、76、82;C組成員包括何呂、施張、孔曹、嚴華、金魏,成績分別為96、73、76、81、82?!景咐蟆竣俜謩e打印輸出A組、B組、C組的總分數(shù)、平均分數(shù)、最高分和最低分。②分別打印輸出A組、B組、C組的成績單。③統(tǒng)計該班級的總成績并按照分數(shù)從高到低打印成績單。案例案例04本章回顧1.關(guān)于Python語法和命名規(guī)范,描述錯誤的是()。A.Python采用大括號“{}”來分隔代碼塊B.Python注釋分為單行注釋和多行注釋C.在Python中,模塊名不宜過長,全部使用小寫字母D.在Python中,常量、全局變量全部使用大寫字母2.關(guān)于PEP8編碼規(guī)范,描述錯誤的是()。A.PEP是PythonEnhancementProposal(Python增提案)的縮寫,

8是版本號B.不要在行尾添加分號“;”,也不要用分號將兩條命令放到同一行C.if/for/while語句中,不用另起一行D.注釋塊通常應用在代碼前,并和這些代碼有同樣的縮進3.Python的數(shù)字類型不包括()。A.整數(shù) B.字符串 C.浮點數(shù) D.復數(shù)04本章回顧4.關(guān)于字符串的描述,以下說法錯誤的是()。A.字符串是用于表示文本的數(shù)據(jù)類型,可由數(shù)字、字母、下劃線組成B.可以使用加號“+”進行字符串連接C.字符串中的title()方法用于將所有的字符轉(zhuǎn)換為大寫D.格式化字符串是指先制定好一個模板,在這個模板上預留幾個空位,然后再根據(jù)需要填上相應的內(nèi)容5.以下不屬于序列的是()。A.元組 B.字符串 C.字典 D.復數(shù)6.字典的表示形式是()。A.[] B.{} C.() D.<>7.列表的表示形式是()。A.[] B.{} C.() D.<>04本章回顧8.關(guān)于列表的描述,以下說法錯誤的是()。A.列表中的元素可以是數(shù)字、字符串、元組等Python支持的所有數(shù)據(jù)類型B.append()方法用于在列表的末尾添加元素C.remove()方法用于刪除列表中的某個元素D.列表是有序、可變、不可重復序列9.元組的表示形式是()。A.[] B.{} C.() D.<>10.簡要闡述列表、元組、字典、集合的區(qū)別。期待您的寶貴意見Python程序設(shè)計教學團隊第三章

流程控制Python程序設(shè)計01選擇結(jié)構(gòu)02循環(huán)結(jié)構(gòu)03本章回顧01選擇結(jié)構(gòu)

選擇結(jié)構(gòu)也稱為分支結(jié)構(gòu),對應現(xiàn)實生活中的選擇問題,比如我們?yōu)g覽購物網(wǎng)站時,如果喜歡此件商品就選擇買下它,如果不喜歡則選擇瀏覽下一個;中午吃飯時可以選擇在家做飯,也可以選擇點外賣或者去外面餐廳吃。

Python中的選擇結(jié)構(gòu)分為單分支(if語句)、雙分支(if...else語句)和多分支(if...elif...else語句)三種。if語句介紹單分支使用if語句表達,其基本語法如下:if表達式:

語句塊其中表達式可以是布爾值、比較表達式、邏輯表達式等,如果表達式為真則執(zhí)行“語句塊”,如果表達式為假則跳過“語句塊”,繼續(xù)執(zhí)行后面的語句。單分支的流程圖如右圖所示。if語句的使用使用if語句的舉例如下圖所示:score=float(input('請輸入您的語文考試成績:'))if(score<60):print('您的成績不合格')print('謝謝使用!')if...else語句介紹雙分支使用if...else語句表達,其基本語法如下:if表達式:

語句塊1else:

語句塊2if...else語句可以理解為如果表達式為真就執(zhí)行語句塊1,否則執(zhí)行語句塊2。語句塊可以由一條語句組成,也可以由多條語句組成。if...else語句的流程圖如下圖所示。if...else語句介紹需要注意的是else必須要和if搭配使用,單獨使用else會報錯,如下圖所示:if...else語句的使用if...else語句的使用舉例如下圖所示:score=float(input('請輸入您的語文考試成績:'))if(score<60):print('您的成績不合格')else:print('您的成績合格')print('謝謝使用!')if...elif...else語句介紹多分支就是在雙分支語句的基礎(chǔ)上,對各種不同情況做進一步的區(qū)分,多分支使用if...elif...else語句表達,其基本語法如下:if表達式1:

語句塊1elif表達式2:

語句塊2elif表達式3:

語句塊3......else:

語句塊nif...elif...else語句介紹

if...elif...else語句的執(zhí)行邏輯,即若表達式1為真執(zhí)行語句塊1,否則依次判斷后續(xù)elif的表達式,直到所有表達式為假則執(zhí)行else下的語句塊n。同時指出如果業(yè)務不需要,最后的else語句塊可以省略,且沒有else語句時就沒有其對應的縮進語句。還提到多分支語句有流程圖如右圖所示。if...elif...else語句的使用接下來我們使用if...elif...else語句將下圖中的情況進行進一步區(qū)分,如下圖所示:score=float(input('請輸入您的語文考試成績:'))if(score<0orscore>100):print('您輸入的內(nèi)容不合法')elif(score>=90):print('您的成績優(yōu)秀')elif(score>=70andscore<90):print('您的成績良好')elif(score>=60andscore<70):print('您的成績及格')else:print('您的成績不及格')print('謝謝使用!')if語句的嵌套if語句可以嵌套使用,在開發(fā)過程中,可以結(jié)合需求選擇嵌套方式,這里將“案例1:計算體脂率”中得到的結(jié)果用分支結(jié)構(gòu)進行判斷,如下圖所示。name=input("請輸入姓名:")sex=int(input("請輸入性別(男為1,女為0):"))age=int(input("請輸入年齡:"))height=float(input("請輸入身高(單位:m):"))weight=float(input("請輸入體重(單位:kg):"))BMI=weight/(height*height)rate=1.2*BMI+0.23*age-5.4-10.8*sexprint('-------------------個人信息—{}--------------------------'.format(name))print(('姓名:{}\n性別:{}\n年齡:{}\n身高(cm):{}\n體重(kg):{}\n''BMI:{}\n體脂率:{}').format(name,sex,age,height,weight,BMI,rate))#使用if嵌套進行判斷if(sex==1):if(rate<15):print('您的體型偏瘦')elif(rate>=15andrate<=18):print('您的體型正常')elif(rate>18):print('您的體型偏胖')if(sex==0):if(rate<25):print('您的體型偏瘦')elif(25>=rate<=28):print('您的體型正常')else:print('您的體型偏胖')案例【案例描述】在大學學習階段,某門課程的期末考試采用“n頁開卷”形式考查學生的學習情況?!皀頁開卷”是指考生可以攜帶不超過n頁A4紙大小的手抄紙質(zhì)資料進入考場應考?!景咐蟆磕M考生進入考場前的身份查驗流程,只有具備以下3個條件,才能進入考場參加考試(在本案例中,假設(shè)n=3)。學生校園卡姓名出現(xiàn)在考生名單中。學生身份證信息與學生校園卡中的信息一致。 沒有攜帶手抄紙質(zhì)資料或所攜帶的手抄紙質(zhì)資料頁數(shù)不超過3頁。案例02循環(huán)結(jié)構(gòu)在日常生活中,人類、動物每天都要吃飯、睡覺,太陽每天都會東升西落,在編程語言中,類似這樣反復做同一件事情叫做循環(huán)。在Python中主要有while循環(huán)和for循環(huán)兩種類型。while循環(huán)介紹while循環(huán)又稱為條件循環(huán),是通過一個判斷條件來控制是否需要反復執(zhí)行循環(huán)體中的語句。while循環(huán)由while關(guān)鍵字、條件表達式、冒號和循環(huán)體組成,語法如下:while判斷條件:

循環(huán)體while循環(huán)介紹循環(huán)體即執(zhí)行語句,可以是單個語句或語句塊,當判斷條件為真時則執(zhí)行循環(huán)體,執(zhí)行完畢后,重新進入while循環(huán)進行條件判斷,如果判斷條件為真時則執(zhí)行循環(huán)體,以此類推,直到判斷條件為假時退出循環(huán)。while循環(huán)的執(zhí)行過程如右圖所示。while循環(huán)的使用#構(gòu)建數(shù)據(jù)numbers=list(range(1,20,3))print('數(shù)字列表:',numbers)#用于存放奇數(shù)odd=[]#用于存放偶數(shù)even=[]#使用while循環(huán),直到列表中沒有元素停止循環(huán)while(len(numbers)>0):number=numbers.pop()if(number%2==0):even.append(number)else:odd.append(number)print('奇數(shù):',odd)print('偶數(shù):',even)while循環(huán)的使用舉例如下圖所示。while循環(huán)使用總結(jié)在使用while循環(huán)時,如果條件判斷語句一直是True,循環(huán)就會一直執(zhí)行下去,也就是常說的死循環(huán),如右圖所示。遇到這種情況,可以單擊JupyterNotebook上方的“中斷服務”按鈕(如右圖)強制終止程序。while循環(huán)使用總結(jié)在使用while循環(huán)時,需注意以下幾點:①在使用while循環(huán)時,需添加將循環(huán)條件變?yōu)镕alse的代碼。②循環(huán)體既可以由單個語句組成,也可以由多條語句組成。③如果循環(huán)體中的語句尚未確定,可以先使用pass語句占位。for循環(huán)介紹for循環(huán)也稱計次循環(huán)、遍歷循環(huán),是重復執(zhí)行一定次數(shù)的循環(huán),可以用于數(shù)值循環(huán)和遍歷字符串、列表等序列。for循環(huán)由保留字for和in組成,語法如下:for循環(huán)變量in對象:

循環(huán)體if語句其中循環(huán)變量表示每次循環(huán)所獲得的元素,對象指的是待遍歷或迭代的對象,循環(huán)體即執(zhí)行語句,可以是單個語句或語句塊。簡單理解for循環(huán)是由保留字for和in構(gòu)成的循環(huán)結(jié)構(gòu),它可以從遍歷對象中逐一提取元素放到循環(huán)變量里,當遍歷對象中的所有元素都放入循環(huán)變量,且已執(zhí)行完成循環(huán)體操作,那么循環(huán)結(jié)束,程序退出。for循環(huán)的執(zhí)行過程如右圖所示。使用for循環(huán)進行數(shù)值循環(huán)for循環(huán)最基本的用法就是進行數(shù)值循環(huán),常常和range函數(shù)結(jié)合使用,舉例如右圖所示。sum1=0sum2=0sum3=0#計算1到100的累加foriinrange(101):sum1+=iprint('1+2+3+...+100=',sum1)#計算1到100的奇數(shù)累加foriinrange(1,101,2):sum2+=iprint('1+3+5+...+99=',sum2)#計算1到100的偶數(shù)累加foriinrange(2,101,2):sum3+=iprint('2+4+6+...+100=',sum3)使用for循環(huán)進行序列遍歷使用for循環(huán)可以對字符串、列表、元組等序列類型進行遍歷,舉例如右圖所示。#遍歷字符串text1='萬事皆有可能'foriinrange(len(text1)):print(i,text1[i])foriintext1:print(i)#遍歷列表text2=['嶺外音書斷','經(jīng)冬復歷春','近鄉(xiāng)情更怯','不敢問來人']foriinrange(len(text2)):print(i,text2[i])foritemintext2:print(item)#遍歷元組text3=('春','夏','秋','冬')foriinrange(len(text3)):print(i,text3[i])foritemintext3:print(item)#遍歷字典#通過items方法或者字典的“鍵值對”列表text4={'語文':89,'數(shù)學':96,'英語':80}foritemintext4.items():print(item)forkey,valueintext4.items():print(key,value)使用for循環(huán)進行序列遍歷上頁的運行結(jié)果如右圖所示。通過以上案例可以看出字符串、列表、元組的遍歷方式基本一致,而字典因為存儲的是“鍵值對”且無序,遍歷的方式會有所不同。for循環(huán)和enumerate函數(shù)在上頁代碼中,我們?yōu)榱双@取字符串、列表、元組的索引值,采用的方式是range()函數(shù)和len()函數(shù)結(jié)合使用,除此之外,我們還可以借助enumerate()函數(shù)同時輸出索引值和元素內(nèi)容。enumerate()函數(shù)用于將一個可遍歷的數(shù)據(jù)對象組合成一個索引序列,同時列出數(shù)據(jù)和數(shù)據(jù)下標,一般用在for循環(huán)當中。enumerate()函數(shù)的語法如下:enumerate(sequence,[start=0])enumerate()函數(shù)的參數(shù)說明如下圖所示。參數(shù)描述sequence用于指定一個序列、迭代器或其它支持迭代的對象start【可選】用于指定下標起始位置,默認為0for循環(huán)和enumerate函數(shù)使用for循環(huán)和enumerate()函數(shù)進行序列遍歷的舉例如下圖所示。list1=['向晚意不適','驅(qū)車登古原','夕陽無限好','只是近黃昏']#默認索引從0開始forindex,iteminenumerate(list1):print(index,item)#指定索引從1開始forindex,iteminenumerate(list1,start=1):print(index,item)在Python中,有一種方法可以快速創(chuàng)建序列,就是利用for循環(huán)來循環(huán)創(chuàng)建序列,也就是推導式。推導式是Python的一種獨有特性,列表推導式的語法如下:使用for循環(huán)快速創(chuàng)建序列[conditionforvariniterator[ifcondition]]使用for循環(huán)快速創(chuàng)建序列其中[ifcondition]是可選的,元組推導式和列表的類似,只是將[]換成(),接下來我們看具體使用,如右圖所示。使用for循環(huán)快速創(chuàng)建序列上頁代碼中用到了random模塊,Python中的random模塊用于生成隨機數(shù),其中randint()方法用于生成隨機整數(shù),random模塊下還有一些其它的用于生成隨機數(shù)的方法,我們將在第7章展開介紹。字典的推導式與列表、元組有一些不同,其語法如下:使用for循環(huán)快速創(chuàng)建序列和列表推導式類似,[ifcondition]是可選的,字典推導式的使用舉例如下圖所示。循環(huán)嵌套和if語句類似,循環(huán)也可以嵌套使用,循環(huán)嵌套顧名思義就是在一個循環(huán)中嵌入另一個循環(huán)。循環(huán)嵌套可以是兩個while循環(huán)嵌套、兩個for循環(huán)嵌套、while循環(huán)和for循環(huán)嵌套、多層循環(huán)嵌套等,在開發(fā)過程中,可以結(jié)合需求靈活運用。循環(huán)嵌套1.使用循環(huán)嵌套打印九九乘法表接下來用一個最經(jīng)典的九九乘法表來了解循環(huán)嵌套的使用。如果想要生成如圖3-20的九九乘法表,通過觀察我們發(fā)現(xiàn),它是由9行9列組成,我們可以用外層循環(huán)控制行,里層循環(huán)控制列(如下圖所示)。循環(huán)嵌套打印九九乘法表循環(huán)嵌套使用循環(huán)嵌套打印空心四邊形為了加深對循環(huán)嵌套的理解,我們再舉一個使用while循環(huán)嵌套打印空心四邊形的例子,如代碼左圖所示。循環(huán)嵌套也可以使用for循環(huán)嵌套實現(xiàn)循環(huán)嵌套結(jié)合上面的案例,我們可以總結(jié)出:一般用外層循環(huán)控制行,內(nèi)層循環(huán)控制列。for循環(huán)和while循環(huán)之間可以相互轉(zhuǎn)化。外層循環(huán)執(zhí)行一次,里層循環(huán)會執(zhí)行多次。循環(huán)控制在使用循環(huán)語句時,可以使用break語句和continue語句對循環(huán)進行控制,break語句用于結(jié)束整個循環(huán),continue用于結(jié)束當次循環(huán)。舉個生活中例子,假如你正在看一個電視劇,由于某個演員你不喜歡你想棄劇,不想繼續(xù)看下去了,此時使用break;如果是某一集劇情設(shè)置不合理,你打算跳過本集,繼續(xù)觀看下一集,此時使用continue。除此之外,在Python中還有一個起到占位作用的空語句pass。break語句break語句用于結(jié)束當前正在執(zhí)行的循環(huán)(for、while),轉(zhuǎn)而執(zhí)行這些循環(huán)后面的語句。break語句一般與if語句搭配使用,表示在某種條件下跳出循環(huán)。break語句的使用形式如下所示:下圖為for循環(huán)中break語句的執(zhí)行過程(while循環(huán)和for循環(huán)類似)。break語句break語句的使用舉例如下圖所示。continue語句continue語句用于結(jié)束當前正在執(zhí)行的這一次循環(huán)(for、while),接著執(zhí)行下一次循環(huán)。即跳過循環(huán)體中尚未執(zhí)行的語句或語句序列,接著進行下一次是否執(zhí)行循環(huán)的判定。continue語句的使用形式如下所示:右圖為for循環(huán)中continue語句的執(zhí)行過程(while循環(huán)和for循環(huán)類似)。continue語句continue語句的使用舉例如下圖所示。我們可以總結(jié)出continue語句只是結(jié)束本次循環(huán),進入到下一循環(huán);而break語句則是結(jié)束整個循環(huán),不再進行條件判斷。pass語句Python中提供了一個pass空語句,表示不做任何事情,應用場景是為了保持程序結(jié)構(gòu)的完整性時,用來占位。舉例如下圖所示。案例【案例描述】剪刀石頭布游戲又稱“猜丁殼”、“猜拳”,是比較古老的游戲,游戲的起源可追溯到漢朝的手勢令。在中國很小的孩子都會玩這個游戲,因為它的規(guī)則很簡單,石頭克剪刀,剪刀克布,布克石頭。這個游戲的主要目的是為了解決爭議,因為三者相互制約,因此不論平局幾次,總會有勝負的時候?!景咐蟆吭O(shè)計一個剪刀石頭布游戲,游戲規(guī)則如下:①玩家出剪刀或石頭或布。②電腦隨機輸出一個剪刀或石頭或布。③將玩家出的結(jié)果和電腦出的結(jié)果進行比對。案例案例運行結(jié)果本章回顧1.關(guān)于Python選擇結(jié)構(gòu),描述錯誤的是()。A.選擇結(jié)構(gòu)也稱為分支結(jié)構(gòu),對應現(xiàn)實生活中的選擇問題B.Python中的選擇結(jié)構(gòu)分為單分支(if語句)、雙分支(if...else語句)和多分支(if...elif...else語句)三種C.if...else語句可以理解為,如果表達式為真則執(zhí)行“語句塊”,如果表達式為假則跳過“語句塊”D.多分支使用if...elif...else語句表達2.【多選】Python中的選擇結(jié)構(gòu)包括()。A.if語句

B.if...else語句 C.if...elseif...else語句 D.if...elif...else語句3.【多選】Python中的循環(huán)結(jié)構(gòu)包括()。A.do...while循環(huán) B.for循環(huán) C.do循環(huán)

D.while循環(huán)本章回顧4.關(guān)于Python循環(huán)結(jié)構(gòu),描述錯誤的是()。A.while循環(huán)又稱為條件循環(huán),是通過一個判斷條件來控制是否需要反復執(zhí)行循環(huán)體中的語句B.for循環(huán)也稱計次循環(huán)、遍歷循環(huán),是重復執(zhí)行一定次數(shù)的循環(huán),可以用于數(shù)值循環(huán)和遍歷字符串、列表等序列C.for循環(huán)不能和range函數(shù)結(jié)合使用D.可以使用for循環(huán)和enumerate函數(shù)進行序列遍歷5.關(guān)于循環(huán)嵌套的描述錯誤的是()。A.循環(huán)嵌套可以是兩個while循環(huán)嵌套、兩個for循環(huán)嵌套、但不能是while循環(huán)和for循環(huán)嵌套B.在循環(huán)嵌套中,一般用外層循環(huán)控制行,內(nèi)層循環(huán)控制列C.在循環(huán)嵌套中,外層循環(huán)執(zhí)行一次,里層循環(huán)會執(zhí)行多次D.循環(huán)嵌套就是在一個循環(huán)中嵌入另一個循環(huán)本章回顧6.【多選】關(guān)于循環(huán)控制的描述正確的有()。A.在使用循環(huán)語句時,可以使用break語句和continue語句對循環(huán)進行控制B.break語句用于結(jié)束當前正在執(zhí)行的循環(huán),轉(zhuǎn)而執(zhí)行這些循環(huán)后面的語句C.continue語句用于結(jié)束當前正在執(zhí)行的這一次循環(huán),接著執(zhí)行下一次循環(huán)D.break語句用于結(jié)束整個循環(huán),continue用于結(jié)束當次循環(huán)7.簡述單分支、雙分支、多分支的執(zhí)行過程。8.簡述while循環(huán)、for循環(huán)的執(zhí)行過程。期待您的寶貴意見Python程序設(shè)計教學團隊第四章

函數(shù)Python程序設(shè)計01函數(shù)的基本使用02參數(shù)傳遞與變量作用域03本章回顧函數(shù)函數(shù)是可一次定義多次使用的代碼段。若把Python類比漢語,函數(shù)相當于典故等,能提高代碼可讀性和開發(fā)效率。比如班級有40人,需按固定格式打印個人信息,常需此功能,用函數(shù)可定義一次后隨時調(diào)用。本章將介紹函數(shù)基本使用、參數(shù)傳遞、變量作用域等內(nèi)容。第4章函數(shù)4.1函數(shù)的基本使用4.1.1函數(shù)的定義與調(diào)用4.1.2函數(shù)的返回值4.1.3Python常用內(nèi)置函數(shù)4.1.4案例5:驗證哥德巴赫猜想4.2參數(shù)傳遞與變量作用域4.2.1函數(shù)的參數(shù)傳遞4.2.2函數(shù)傳遞的參數(shù)分類4.2.3變量作用域4.2.4匿名函數(shù)與高階函數(shù)4.2.5案例6:計算某公司銷售員工的獎金01函數(shù)的基本使用在計算機中,函數(shù)是可被引用的程序或代碼段,用于實現(xiàn)某種功能且可重復使用。其作用包括通過友好命名讓代碼易讀易調(diào)試、減少重復代碼使程序更短小且便于后續(xù)修改、將長程序拆分為函數(shù)方便單獨調(diào)試后組裝。之前使用過的input()、print()、range()等是Python提供的標準內(nèi)置函數(shù)。而我們也可以自己定義函數(shù)并使用,本節(jié)將學習函數(shù)的定義和調(diào)用。函數(shù)的定義Python中函數(shù)的定義使用def關(guān)鍵字實現(xiàn),具體的語法如下:deffunctionname(parameters):functionbody參數(shù)描述functionname用于指定函數(shù)名稱,在調(diào)用函數(shù)時使用parameters【可選】用于指定函數(shù)參數(shù),如果不指定,則說明該函數(shù)沒有參數(shù),在調(diào)用時也不用傳遞參數(shù);如有多個參數(shù),參數(shù)間使用逗號“,”分隔functionbody【可選】函數(shù)體,即在函數(shù)被調(diào)用時,要執(zhí)行的功能代碼,如果想要定義一個什么都不干的函數(shù),可以使用pass語句占位;如果函數(shù)有返回值,可以使用return語句參數(shù)說明如表4-1所示。函數(shù)的定義接下來我們定義一個打印個人信息的函數(shù),如下圖所示。上圖中,函數(shù)的名稱是showinfo,調(diào)用時即使用這個名字;小括號“()”中的name、sex和age是函數(shù)的參數(shù),用逗號“,”進行分隔;冒號“:”后邊的兩句代碼是函數(shù)體,即功能代碼,這里就是使用格式化字符串來打印個人信息;此代碼沒有return語句,代表沒有返回值。由于此部分代碼只是函數(shù)定義,還沒有對其進行調(diào)用,所以運行此代碼沒有輸出。函數(shù)的調(diào)用函數(shù)的定義是通過參數(shù)和函數(shù)體決定函數(shù)能做什么,但函數(shù)并沒有被執(zhí)行。如果想要執(zhí)行該函數(shù)就需要調(diào)用函數(shù),如調(diào)用圖4-1中的函數(shù)showinfo的代碼為showinfo('張三','男',23),輸出結(jié)果就是格式化打印“張三”的姓名、性別、年齡信息。調(diào)用函數(shù)的語法格式為:functionname(parameters_value)functionname是要調(diào)用函數(shù)的函數(shù)名,parameters_value指的是需要傳遞的參數(shù)值,多個參數(shù)之間用逗號“,”分隔,如果定義的函數(shù)中有返回值,可以使用一個變量進行接收。函數(shù)的定義與調(diào)用應用舉例函數(shù)的定義與調(diào)用舉例如右圖所示。右圖中定義了一個獲取偶數(shù)的函數(shù),此函數(shù)體中有返回值,在調(diào)用時使用變量evenlist對其進行接收,并將其打印出來。函數(shù)的定義與調(diào)用應用舉例函數(shù)也是可以嵌套使用的,如右圖所示。函數(shù)的定義與調(diào)用應用舉例函數(shù)的定義與調(diào)用應用舉例在上頁代碼中將“案例1:計算體脂率”進行改造,定義一個計算體脂率的函數(shù)count_bodyfat,在此函數(shù)中又定義了一個根據(jù)體脂率判斷體型的函數(shù)decide_health,此代碼的運行結(jié)果如右圖所示。函數(shù)的定義與調(diào)用應用舉例上頁代碼中還為函數(shù)添加了說明文檔,函數(shù)的說明文檔放在字符串中,通常位于函數(shù)內(nèi)部、所有代碼的最前面(如右圖),可以通過內(nèi)置的help()函數(shù)或__doc__屬性獲取說明文檔的內(nèi)容,如下圖所示。函數(shù)的返回值在函數(shù)定義中,若需要獲取返回結(jié)果可使用return語句指定返回值。函數(shù)調(diào)用的參數(shù)傳遞解決向函數(shù)內(nèi)部輸入數(shù)據(jù)問題,返回值解決向外部輸出數(shù)據(jù)問題。當函數(shù)中有return語句時,執(zhí)行該語句會直接結(jié)束函數(shù)執(zhí)行,可簡單理解為return語句用于退出函數(shù)。其語法格式為return[value],value為可選參數(shù),不指定則返回None,可一個或多個值,任意類型。return語句的應用舉例見下頁。函數(shù)的返回值return語句的使用Python常用內(nèi)置函數(shù)我們在前面3章已經(jīng)使用了很多Python的內(nèi)置函數(shù),最常用的就是在2.1.1中介紹的基本輸入輸出函數(shù)input()和print(),除此之外我們在學習第2章的時候也用到了很多內(nèi)置函數(shù),如int()、list()、range()等。為了能夠讓大家更容易記憶常用的內(nèi)置函數(shù),這里按照功能將其分為數(shù)學運算、序列相關(guān)、類型轉(zhuǎn)換、邏輯判斷和對象操作。其中類型轉(zhuǎn)換類在第2章已經(jīng)介紹過,此處不再贅述。數(shù)學運算數(shù)學運算相關(guān)的常用內(nèi)置函數(shù)總結(jié)如表4-2所示。數(shù)學運算數(shù)學運算類的常用內(nèi)置函數(shù)使用舉例如【代碼4-4】所示。數(shù)學運算序列相關(guān)序列相關(guān)的常用內(nèi)置函數(shù)總結(jié)如下圖所示。下圖中列舉的序列相關(guān)函數(shù)我們在2.3中都使用過,此處不再舉例說明邏輯判斷邏輯判斷相關(guān)的常用內(nèi)置函數(shù)總結(jié)如表4-4所示。邏輯判斷邏輯判斷類的常用內(nèi)置函數(shù)使用舉例如下圖所示。對象操作對象操作類的常用內(nèi)置函數(shù)總結(jié)如下圖所示。上圖中列舉的對象操作相關(guān)函數(shù),都很簡單且大部分函數(shù)在之前章節(jié)都使用過,此處不再舉例說明。案例【案例描述】哥德巴赫是一位德國數(shù)學家,1742年哥德巴赫在給歐拉的信中提出了以下猜想:任一個大于2的整數(shù)都可寫成三個質(zhì)數(shù)之和。但是哥德巴赫自己無法證明它,于是就寫信請教赫赫有名的大數(shù)學家歐拉幫忙證明,歐拉在回信中提到了另一個等價版本,即任一大于2的偶數(shù)都可寫成兩個質(zhì)數(shù)之和,現(xiàn)在常說的的哥德巴赫猜想指的是歐拉的版本。歐拉雖然提出了等價版本,但是他直到死也始終無法證明這個猜想?!景咐蟆吭O(shè)計一個程序用于驗證哥德巴赫的猜想,從鍵盤隨意輸入一個大于2的偶數(shù),輸出其分解式,如果輸入的偶數(shù)找不到分解式,則代表哥德巴赫猜想不成立,如果隨意輸入的每個偶數(shù)都能有分解式,則認為歌德巴赫猜想是不能證偽的。案例02參數(shù)傳遞與變量作用域上節(jié)我們學習了函數(shù)的定義、調(diào)用、返回值等函數(shù)的基礎(chǔ)知識,掌握了這些知識之后,我們可以自定義一個函數(shù)并使用,但是如果想在開發(fā)中熟練應用函數(shù)或是能讀懂其他人寫的函數(shù)相關(guān)代碼,還需要掌握參數(shù)傳遞和變量作用域的相關(guān)知識。形式參數(shù)與實際參數(shù)函數(shù)調(diào)用時的參數(shù)傳遞實現(xiàn)了從函數(shù)外部向函數(shù)內(nèi)部輸入數(shù)據(jù)的問題,定義函數(shù)時函數(shù)名后括號中的參數(shù)為形式參數(shù),調(diào)用函數(shù)時函數(shù)名后括號中的為實際參數(shù),如下圖所示。在定義函數(shù)時,函數(shù)的形式參數(shù)不代表任何具體的值,只有在函數(shù)調(diào)用時,才會有實際參數(shù)傳給函數(shù)。參數(shù)傳遞的分類實際參數(shù)傳遞給形式參數(shù)時,根據(jù)實際參數(shù)類型不同分為傳遞不可變對象和傳遞可變對象。傳遞不可變對象時,參數(shù)傳遞后改變形式參數(shù)值,實際參數(shù)值不變;傳遞可變對象時,參數(shù)傳遞后改變形式參數(shù)值,實際參數(shù)值也改變。在Python中,字符串、元組、數(shù)字類型是不可變對象,列表、字典是可變對象,關(guān)于參數(shù)傳遞的舉例見右圖。參數(shù)傳遞的分類上頁的運行結(jié)果如下圖所示。參數(shù)傳遞的分類

從上頁的運行結(jié)果可看出,不可變對象的參數(shù)傳遞過程中傳遞的只是對象的值,沒有影響對象本身,在執(zhí)行函數(shù)體過程中,會在內(nèi)存中生成一個新的對象,被調(diào)用后對象的內(nèi)容沒有改變;而可變對象的參數(shù)傳遞過程中傳遞的是引用,在執(zhí)行函數(shù)體過程中,沒有生成新對象,被調(diào)用后對象的內(nèi)容隨著形式參數(shù)的改變而改變。函數(shù)傳遞的參數(shù)分類在函數(shù)調(diào)用過程中根據(jù)傳遞的參數(shù)類型,可將參數(shù)分為位置參數(shù)、關(guān)鍵字參數(shù)、默認參數(shù)、不定長參數(shù)和強制關(guān)鍵字參數(shù)。1.位置參數(shù)位置參數(shù)也稱為必須參數(shù),就是必須以正確的順序傳入給函數(shù)。我們之前使用的參數(shù)傳遞均是位置參數(shù),位置參數(shù)需要確保兩點,第一點是數(shù)量必須與定義時一致,第二點是位置必須與定義時一致。接下來以調(diào)用【代碼4-2】中定義的count_bodyfat函數(shù)為例,分別介紹一下數(shù)量與定義時不一致、位置與定義時不一致時會出現(xiàn)的情況。位置參數(shù)(1)參數(shù)數(shù)量與定義時不一致當數(shù)量與定義時不一致時,將出現(xiàn)TypeError錯誤,如圖4-12所示,出現(xiàn)錯誤的原因是缺少“height”和“weight”兩個參數(shù)。位置參數(shù)(2)參數(shù)位置與定義時不一致當位置與定義時不一致時,也將出現(xiàn)TypeError錯誤,如圖4-13所示,出現(xiàn)錯誤的原因是形式參數(shù)的類型與實際參數(shù)的類型不一致,并且在函數(shù)中,這兩種類型還不能正常轉(zhuǎn)換。位置參數(shù)但是有一種情況,就是在調(diào)用函數(shù)過程中,雖然指定的實際參數(shù)與形式參數(shù)的位置不一致,但是它們之間的數(shù)據(jù)類型一致,那么程序不會報錯,但是會出現(xiàn)得到的結(jié)果與實際不符的情況,如下圖所示。上圖中,年齡和身高參數(shù)調(diào)換了位置,程序可以正常運行,但是計算出的體脂率是負數(shù),明顯不符合實際情況。關(guān)鍵字參數(shù)關(guān)鍵字參數(shù)是在調(diào)用函數(shù)時用形式參數(shù)的名字指定輸入?yún)?shù)。使用關(guān)鍵字參數(shù),函數(shù)調(diào)用時只需寫正確參數(shù)名,無需考慮參數(shù)順序與聲明不一致的問題,因為Python解釋器能根據(jù)參數(shù)名匹配參數(shù)值,使參數(shù)傳遞更靈活方便。以調(diào)用【代碼4-2】中定義的count_bodyfat函數(shù)為例理解關(guān)鍵字參數(shù),如下圖所示。上圖中,身高和年齡的位置是與定義函數(shù)時不一致的,但是此函數(shù)能正常運行,且得到的結(jié)果是合理的。默認參數(shù)如果在函數(shù)定義時,直接指定了默認值,那么在調(diào)用函數(shù)時,即使沒有傳入這個參數(shù),程序也不會報錯。需要注意的時,在定義函數(shù)時,默認參數(shù)必須放在所有參數(shù)之后,不然會報錯,如下圖所示。默認參數(shù)關(guān)于默認參數(shù)的使用舉例如下圖所示。不定長參數(shù)不定長參數(shù)也叫可變參數(shù),即可傳入的實際參數(shù)可以是多個。不定長參數(shù)有兩種形式,一種是加一個星號“*”以元組的形式傳入,還有一種是加兩個星號“**”以字典的形式傳入。不定長參數(shù)*parameter一個星號“*”形式的參數(shù)是和元組結(jié)合起來一起使用的,表示接收任意多個實際參數(shù)并將其放入到一個元組中,使用舉例如右圖所示。不定長參數(shù)上圖的運行結(jié)果如下圖所示。強制關(guān)鍵字參數(shù)除了上述介紹的4種參數(shù)之外,函數(shù)傳遞過程中的參數(shù)還有一種強制關(guān)鍵字參數(shù),如果開發(fā)過程中需要限制關(guān)鍵字參數(shù)的名字時則可以使用這種參數(shù)。強制關(guān)鍵字參數(shù)需要一個特殊分隔符“*”,后面的參數(shù)被強制設(shè)為關(guān)鍵字參數(shù)。在函數(shù)調(diào)用時,分隔符“*”后面的參數(shù)一定要給出名字,否則會報SyntaxError錯誤,如下圖1所示。變量作用域所謂變量的作用域就是變量的有效區(qū)域,即變量在該區(qū)域內(nèi)能被解釋器識別,超出該區(qū)域時訪問會報錯。變量的作用域由變量的定義位置決定,在不同位置定義的變量,它的作用域是不一樣的。本節(jié)我們主要介紹局部變量和全局變量。局部變量局部變量是指在函數(shù)內(nèi)部定義并使用的變量,它的作用域也僅限于函數(shù)內(nèi)部,出了函數(shù)再使用就會報錯。如圖4-22所示,由于template是在showinfo()函數(shù)內(nèi)部定義的變量,在函數(shù)之外使用即會出現(xiàn)NameError錯

溫馨提示

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

最新文檔

評論

0/150

提交評論