《Python程序設(shè)計(jì)》高職全套教學(xué)課件_第1頁
《Python程序設(shè)計(jì)》高職全套教學(xué)課件_第2頁
《Python程序設(shè)計(jì)》高職全套教學(xué)課件_第3頁
《Python程序設(shè)計(jì)》高職全套教學(xué)課件_第4頁
《Python程序設(shè)計(jì)》高職全套教學(xué)課件_第5頁
已閱讀5頁,還剩497頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

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

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

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

在網(wǎng)絡(luò)爬蟲方面應(yīng)用廣泛,Google等公司大量使用。網(wǎng)絡(luò)爬蟲程序主要由四部分組成:1.爬蟲調(diào)度器:是爬蟲入口,負(fù)責(zé)程序的開始、運(yùn)行和結(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實(shí)現(xiàn)。Python可直接調(diào)用OpenGL實(shí)現(xiàn)3D繪制,是高性能游戲引擎技術(shù)基礎(chǔ),有很多Python語言的游戲引擎如Pygame、Pyglet、Cocos2d等。自動化運(yùn)維Python自動化運(yùn)營1.運(yùn)維自動化目的是實(shí)現(xiàn)IT運(yùn)維質(zhì)量、降低成本,是將靜態(tài)設(shè)備結(jié)構(gòu)轉(zhuǎn)化為動態(tài)彈性響應(yīng)策略。2.在很多操作系統(tǒng)中,Python是標(biāo)準(zhǔn)組件,可在終端直接運(yùn)行。3.Python編寫的系統(tǒng)管理腳本在可讀性、性能、代碼重用度及擴(kuò)展性方面優(yōu)于普通Shell腳本,適合做自動化運(yùn)維。4.常用Python運(yùn)維工具包括Pexpect、Paramiko、Fabric、Ansible、Saltstack等,涵蓋自動化操作、系統(tǒng)管理、配置管理、集群管理等主題??茖W(xué)計(jì)算Python科學(xué)計(jì)算1.Python擅長科學(xué)計(jì)算和數(shù)據(jù)分析,能繪制高質(zhì)量2D和3D圖像,有很多成熟開發(fā)庫如Numpy、SciPy、Pandas、Matplotlib等。2.Numpy是專門用于數(shù)值計(jì)算的庫,可存儲處理大型矩陣,底層函數(shù)多為C編寫,運(yùn)算速度快,是Scipy、Pandas、SKlearn、Tensorflow等框架基礎(chǔ)庫。3.Scipy基于Numpy,用于數(shù)學(xué)、工程等領(lǐng)域,可高效處理統(tǒng)計(jì)、積分等問題,與Numpy結(jié)合提高科學(xué)計(jì)算效率。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è)置方法。科學(xué)計(jì)算Python科學(xué)計(jì)算1.人工智能是熱點(diǎn)領(lǐng)域,與傳統(tǒng)行業(yè)結(jié)合是未來方向,人工智能領(lǐng)域工程師熱門且工資高。2.

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

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

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

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

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

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

列表是可變序列,元組是不可變序列。列表可以使用索引和切片的方式訪問和修改元素,元組也可以使用索引和切片訪問元素,但不支持修改元素。列表中可以使用append()、insert()、remove()等方法添加、刪除元素,而元組中沒有這些方法。元組比列表的訪問和處理速度快,所以元組可以用于保存程序中不會修改的內(nèi)容。字典字典即Dict,也是Python中使用非常頻繁的數(shù)據(jù)類型,與列表類似,不同的是字典是無序可變序列。字典中的所有元素都放在一對大括號“{}”中,兩個相鄰元素間使用逗號“,”分隔,字典中的元素是“鍵(key)值(value)對”類型,每個鍵和值之間用冒號“:”分隔,通過key可以快速找到value。元組字典的創(chuàng)建可以使用最基本的“{}”形式,也可以使用dict方法。舉例如下圖所示。字典的常用方法字典的常用方法總結(jié)如下圖所示。應(yīng)用舉例集合集合即Set,用于表示不重復(fù)元素,是無序、可變序列。在Python中,集合中的所有元素都放在一對大括號“{}”中,兩個相鄰元素間使用逗號“,”分隔。1.集合的創(chuàng)建集合有兩種創(chuàng)建方式,一種是直接使用大括號“{}”創(chuàng)建,另一種是使用set()函數(shù),set()函數(shù)可以將字符串、列表等類型轉(zhuǎn)換為集合,舉例如下頁所示應(yīng)用舉例從下圖的運(yùn)行結(jié)果可看出,集合是無序的,且如果創(chuàng)建集合時有重復(fù)元素,將只保留一個元素,還有一點(diǎn)需要注意的是創(chuàng)建空集合只能使用set()函數(shù),因?yàn)槭褂么罄ㄌ枴皗}”創(chuàng)建,將代表是空字典。集合的常用方法集合的常用方法總結(jié)如下圖所示。應(yīng)用舉例集合的運(yùn)算集合可以進(jìn)行交集、并集、差集運(yùn)算,這是和列表、字典等其它序列的最大區(qū)別。關(guān)于集合運(yù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ù)。應(yīng)用舉例列表、元組、字典的遍歷案例【案例描述】某健身培訓(xùn)班學(xué)生分為A、B、C三組,每組共有學(xué)員5人。A組成員包括趙錢、孫李、周吳、鄭王、馮陳,成績分別為79、68、77、86、92;B組成員包括褚衛(wèi)、蔣沈、韓楊、朱秦、尤許,成績分別為81、83、62、76、82;C組成員包括何呂、施張、孔曹、嚴(yán)華、金魏,成績分別為96、73、76、81、82?!景咐蟆竣俜謩e打印輸出A組、B組、C組的總分?jǐn)?shù)、平均分?jǐn)?shù)、最高分和最低分。②分別打印輸出A組、B組、C組的成績單。③統(tǒng)計(jì)該班級的總成績并按照分?jǐn)?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.注釋塊通常應(yīng)用在代碼前,并和這些代碼有同樣的縮進(jìn)3.Python的數(shù)字類型不包括()。A.整數(shù) B.字符串 C.浮點(diǎn)數(shù) D.復(fù)數(shù)04本章回顧4.關(guān)于字符串的描述,以下說法錯誤的是()。A.字符串是用于表示文本的數(shù)據(jù)類型,可由數(shù)字、字母、下劃線組成B.可以使用加號“+”進(jìn)行字符串連接C.字符串中的title()方法用于將所有的字符轉(zhuǎn)換為大寫D.格式化字符串是指先制定好一個模板,在這個模板上預(yù)留幾個空位,然后再根據(jù)需要填上相應(yīng)的內(nèi)容5.以下不屬于序列的是()。A.元組 B.字符串 C.字典 D.復(fù)數(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.列表是有序、可變、不可重復(fù)序列9.元組的表示形式是()。A.[] B.{} C.() D.<>10.簡要闡述列表、元組、字典、集合的區(qū)別。期待您的寶貴意見第三章

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

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

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

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

語句塊1else:

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

語句塊1elif表達(dá)式2:

語句塊2elif表達(dá)式3:

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

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

if...elif...else語句的執(zhí)行邏輯,即若表達(dá)式1為真執(zhí)行語句塊1,否則依次判斷后續(xù)elif的表達(dá)式,直到所有表達(dá)式為假則執(zhí)行else下的語句塊n。同時指出如果業(yè)務(wù)不需要,最后的else語句塊可以省略,且沒有else語句時就沒有其對應(yīng)的縮進(jìn)語句。還提到多分支語句有流程圖如右圖所示。if...elif...else語句的使用接下來我們使用if...elif...else語句將下圖中的情況進(jìn)行進(jìn)一步區(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:計(jì)算體脂率”中得到的結(jié)果用分支結(jié)構(gòu)進(jìn)行判斷,如下圖所示。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嵌套進(jìn)行判斷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('您的體型偏胖')案例【案例描述】在大學(xué)學(xué)習(xí)階段,某門課程的期末考試采用“n頁開卷”形式考查學(xué)生的學(xué)習(xí)情況?!皀頁開卷”是指考生可以攜帶不超過n頁A4紙大小的手抄紙質(zhì)資料進(jìn)入考場應(yīng)考?!景咐蟆磕M考生進(jìn)入考場前的身份查驗(yàn)流程,只有具備以下3個條件,才能進(jìn)入考場參加考試(在本案例中,假設(shè)n=3)。學(xué)生校園卡姓名出現(xiàn)在考生名單中。學(xué)生身份證信息與學(xué)生校園卡中的信息一致。 沒有攜帶手抄紙質(zhì)資料或所攜帶的手抄紙質(zhì)資料頁數(shù)不超過3頁。案例02循環(huán)結(jié)構(gòu)在日常生活中,人類、動物每天都要吃飯、睡覺,太陽每天都會東升西落,在編程語言中,類似這樣反復(fù)做同一件事情叫做循環(huán)。在Python中主要有while循環(huán)和for循環(huán)兩種類型。while循環(huán)介紹while循環(huán)又稱為條件循環(huán),是通過一個判斷條件來控制是否需要反復(fù)執(zhí)行循環(huán)體中的語句。while循環(huán)由while關(guān)鍵字、條件表達(dá)式、冒號和循環(huán)體組成,語法如下:while判斷條件:

循環(huán)體while循環(huán)介紹循環(huán)體即執(zhí)行語句,可以是單個語句或語句塊,當(dāng)判斷條件為真時則執(zhí)行循環(huán)體,執(zhí)行完畢后,重新進(jìn)入while循環(huán)進(jì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上方的“中斷服務(wù)”按鈕(如右圖)強(qiáng)制終止程序。while循環(huán)使用總結(jié)在使用while循環(huán)時,需注意以下幾點(diǎn):①在使用while循環(huán)時,需添加將循環(huán)條件變?yōu)镕alse的代碼。②循環(huán)體既可以由單個語句組成,也可以由多條語句組成。③如果循環(huán)體中的語句尚未確定,可以先使用pass語句占位。for循環(huán)介紹for循環(huán)也稱計(jì)次循環(huán)、遍歷循環(huán),是重復(fù)執(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)變量里,當(dāng)遍歷對象中的所有元素都放入循環(huán)變量,且已執(zhí)行完成循環(huán)體操作,那么循環(huán)結(jié)束,程序退出。for循環(huán)的執(zhí)行過程如右圖所示。使用for循環(huán)進(jìn)行數(shù)值循環(huán)for循環(huán)最基本的用法就是進(jìn)行數(shù)值循環(huán),常常和range函數(shù)結(jié)合使用,舉例如右圖所示。sum1=0sum2=0sum3=0#計(jì)算1到100的累加foriinrange(101):sum1+=iprint('1+2+3+...+100=',sum1)#計(jì)算1到100的奇數(shù)累加foriinrange(1,101,2):sum2+=iprint('1+3+5+...+99=',sum2)#計(jì)算1到100的偶數(shù)累加foriinrange(2,101,2):sum3+=iprint('2+4+6+...+100=',sum3)使用for循環(huán)進(jìn)行序列遍歷使用for循環(huán)可以對字符串、列表、元組等序列類型進(jìn)行遍歷,舉例如右圖所示。#遍歷字符串text1='萬事皆有可能'foriinrange(len(text1)):print(i,text1[i])foriintext1:print(i)#遍歷列表text2=['嶺外音書斷','經(jīng)冬復(fù)歷春','近鄉(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ù)學(xué)':96,'英語':80}foritemintext4.items():print(item)forkey,valueintext4.items():print(key,value)使用for循環(huán)進(jìn)行序列遍歷上頁的運(yùn)行結(jié)果如右圖所示。通過以上案例可以看出字符串、列表、元組的遍歷方式基本一致,而字典因?yàn)榇鎯Φ氖恰版I值對”且無序,遍歷的方式會有所不同。for循環(huán)和enumerate函數(shù)在上頁代碼中,我們?yōu)榱双@取字符串、列表、元組的索引值,采用的方式是range()函數(shù)和len()函數(shù)結(jié)合使用,除此之外,我們還可以借助enumerate()函數(shù)同時輸出索引值和元素內(nèi)容。enumerate()函數(shù)用于將一個可遍歷的數(shù)據(jù)對象組合成一個索引序列,同時列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在for循環(huán)當(dāng)中。enumerate()函數(shù)的語法如下:enumerate(sequence,[start=0])enumerate()函數(shù)的參數(shù)說明如下圖所示。參數(shù)描述sequence用于指定一個序列、迭代器或其它支持迭代的對象start【可選】用于指定下標(biāo)起始位置,默認(rèn)為0for循環(huán)和enumerate函數(shù)使用for循環(huán)和enumerate()函數(shù)進(jìn)行序列遍歷的舉例如下圖所示。list1=['向晚意不適','驅(qū)車登古原','夕陽無限好','只是近黃昏']#默認(rèn)索引從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)建序列,也就是推導(dǎo)式。推導(dǎo)式是Python的一種獨(dú)有特性,列表推導(dǎo)式的語法如下:使用for循環(huán)快速創(chuàng)建序列[conditionforvariniterator[ifcondition]]使用for循環(huán)快速創(chuàng)建序列其中[ifcondition]是可選的,元組推導(dǎo)式和列表的類似,只是將[]換成(),接下來我們看具體使用,如右圖所示。使用for循環(huán)快速創(chuàng)建序列上頁代碼中用到了random模塊,Python中的random模塊用于生成隨機(jī)數(shù),其中randint()方法用于生成隨機(jī)整數(shù),random模塊下還有一些其它的用于生成隨機(jī)數(shù)的方法,我們將在第7章展開介紹。字典的推導(dǎo)式與列表、元組有一些不同,其語法如下:使用for循環(huán)快速創(chuàng)建序列和列表推導(dǎo)式類似,[ifcondition]是可選的,字典推導(dǎo)式的使用舉例如下圖所示。循環(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é)合需求靈活運(yùn)用。循環(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)嵌套實(shí)現(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)進(jìn)行控制,break語句用于結(jié)束整個循環(huán),continue用于結(jié)束當(dāng)次循環(huán)。舉個生活中例子,假如你正在看一個電視劇,由于某個演員你不喜歡你想棄劇,不想繼續(xù)看下去了,此時使用break;如果是某一集劇情設(shè)置不合理,你打算跳過本集,繼續(xù)觀看下一集,此時使用continue。除此之外,在Python中還有一個起到占位作用的空語句pass。break語句break語句用于結(jié)束當(dāng)前正在執(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é)束當(dāng)前正在執(zhí)行的這一次循環(huán)(for、while),接著執(zhí)行下一次循環(huán)。即跳過循環(huán)體中尚未執(zhí)行的語句或語句序列,接著進(jìn)行下一次是否執(zhí)行循環(huán)的判定。continue語句的使用形式如下所示:右圖為for循環(huán)中continue語句的執(zhí)行過程(while循環(huán)和for循環(huán)類似)。continue語句continue語句的使用舉例如下圖所示。我們可以總結(jié)出continue語句只是結(jié)束本次循環(huán),進(jìn)入到下一循環(huán);而break語句則是結(jié)束整個循環(huán),不再進(jìn)行條件判斷。pass語句Python中提供了一個pass空語句,表示不做任何事情,應(yīng)用場景是為了保持程序結(jié)構(gòu)的完整性時,用來占位。舉例如下圖所示。案例【案例描述】剪刀石頭布游戲又稱“猜丁殼”、“猜拳”,是比較古老的游戲,游戲的起源可追溯到漢朝的手勢令。在中國很小的孩子都會玩這個游戲,因?yàn)樗囊?guī)則很簡單,石頭克剪刀,剪刀克布,布克石頭。這個游戲的主要目的是為了解決爭議,因?yàn)槿呦嗷ブ萍s,因此不論平局幾次,總會有勝負(fù)的時候。【案例要求】設(shè)計(jì)一個剪刀石頭布游戲,游戲規(guī)則如下:①玩家出剪刀或石頭或布。②電腦隨機(jī)輸出一個剪刀或石頭或布。③將玩家出的結(jié)果和電腦出的結(jié)果進(jìn)行比對。案例案例運(yùn)行結(jié)果本章回顧1.關(guān)于Python選擇結(jié)構(gòu),描述錯誤的是()。A.選擇結(jié)構(gòu)也稱為分支結(jié)構(gòu),對應(yīng)現(xiàn)實(shí)生活中的選擇問題B.Python中的選擇結(jié)構(gòu)分為單分支(if語句)、雙分支(if...else語句)和多分支(if...elif...else語句)三種C.if...else語句可以理解為,如果表達(dá)式為真則執(zhí)行“語句塊”,如果表達(dá)式為假則跳過“語句塊”D.多分支使用if...elif...else語句表達(dá)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),是通過一個判斷條件來控制是否需要反復(fù)執(zhí)行循環(huán)體中的語句B.for循環(huán)也稱計(jì)次循環(huán)、遍歷循環(huán),是重復(fù)執(zhí)行一定次數(shù)的循環(huán),可以用于數(shù)值循環(huán)和遍歷字符串、列表等序列C.for循環(huán)不能和range函數(shù)結(jié)合使用D.可以使用for循環(huán)和enumerate函數(shù)進(jìn)行序列遍歷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)進(jìn)行控制B.break語句用于結(jié)束當(dāng)前正在執(zhí)行的循環(huán),轉(zhuǎn)而執(zhí)行這些循環(huán)后面的語句C.continue語句用于結(jié)束當(dāng)前正在執(zhí)行的這一次循環(huán),接著執(zhí)行下一次循環(huán)D.break語句用于結(jié)束整個循環(huán),continue用于結(jié)束當(dāng)次循環(huán)7.簡述單分支、雙分支、多分支的執(zhí)行過程。8.簡述while循環(huán)、for循環(huán)的執(zhí)行過程。期待您的寶貴意見第四章

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

從上頁的運(yùn)行結(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ù)、默認(rèn)參數(shù)、不定長參數(shù)和強(qiáng)制關(guān)鍵字參數(shù)。1.位置參數(shù)位置參數(shù)也稱為必須參數(shù),就是必須以正確的順序傳入給函數(shù)。我們之前使用的參數(shù)傳遞均是位置參數(shù),位置參數(shù)需要確保兩點(diǎn),第一點(diǎn)是數(shù)量必須與定義時一致,第二點(diǎn)是位置必須與定義時一致。接下來以調(diào)用【代碼4-2】中定義的count_bodyfat函數(shù)為例,分別介紹一下數(shù)量與定義時不一致、位置與定義時不一致時會出現(xiàn)的情況。位置參數(shù)(1)參數(shù)數(shù)量與定義時不一致當(dāng)數(shù)量與定義時不一致時,將出現(xiàn)TypeError錯誤,如圖4-12所示,出現(xiàn)錯誤的原因是缺少“height”和“weight”兩個參數(shù)。位置參數(shù)(2)參數(shù)位置與定義時不一致當(dāng)位置與定義時不一致時,也將出現(xiàn)TypeError錯誤,如圖4-13所示,出現(xiàn)錯誤的原因是形式參數(shù)的類型與實(shí)際參數(shù)的類型不一致,并且在函數(shù)中,這兩種類型還不能正常轉(zhuǎn)換。位置參數(shù)但是有一種情況,就是在調(diào)用函數(shù)過程中,雖然指定的實(shí)際參數(shù)與形式參數(shù)的位置不一致,但是它們之間的數(shù)據(jù)類型一致,那么程序不會報錯,但是會出現(xiàn)得到的結(jié)果與實(shí)際不符的情況,如下圖所示。上圖中,年齡和身高參數(shù)調(diào)換了位置,程序可以正常運(yùn)行,但是計(jì)算出的體脂率是負(fù)數(shù),明顯不符合實(shí)際情況。關(guān)鍵字參數(shù)關(guān)鍵字參數(shù)是在調(diào)用函數(shù)時用形式參數(shù)的名字指定輸入?yún)?shù)。使用關(guān)鍵字參數(shù),函數(shù)調(diào)用時只需寫正確參數(shù)名,無需考慮參數(shù)順序與聲明不一致的問題,因?yàn)镻ython解釋器能根據(jù)參數(shù)名匹配參數(shù)值,使參數(shù)傳遞更靈活方便。以調(diào)用【代碼4-2】中定義的count_bodyfat函數(shù)為例理解關(guān)鍵字參數(shù),如下圖所示。上圖中,身高和年齡的位置是與定義函數(shù)時不一致的,但是此函數(shù)能正常運(yùn)行,且得到的結(jié)果是合理的。默認(rèn)參數(shù)如果在函數(shù)定義時,直接指定了默認(rèn)值,那么在調(diào)用函數(shù)時,即使沒有傳入這個參數(shù),程序也不會報錯。需要注意的時,在定義函數(shù)時,默認(rèn)參數(shù)必須放在所有參數(shù)之后,不然會報錯,如下圖所示。默認(rèn)參數(shù)關(guān)于默認(rèn)參數(shù)的使用舉例如下圖所示。不定長參數(shù)不定長參數(shù)也叫可變參數(shù),即可傳入的實(shí)際參數(shù)可以是多個。不定長參數(shù)有兩種形式,一種是加一個星號“*”以元組的形式傳入,還有一種是加兩個星號“**”以字典的形式傳入。不定長參數(shù)*parameter一個星號“*”形式的參數(shù)是和元組結(jié)合起來一起使用的,表示接收任意多個實(shí)際參數(shù)并將其放入到一個元組中,使用舉例如右圖所示。不定長參數(shù)上圖的運(yùn)行結(jié)果如下圖所示。強(qiáng)制關(guān)鍵字參數(shù)除了上述介紹的4種參數(shù)之外,函數(shù)傳遞過程中的參數(shù)還有一種強(qiáng)制關(guān)鍵字參數(shù),如果開發(fā)過程中需要限制關(guān)鍵字參數(shù)的名字時則可以使用這種參數(shù)。強(qiáng)制關(guān)鍵字參數(shù)需要一個特殊分隔符“*”,后面的參數(shù)被強(qiáng)制設(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錯誤。局部變量需要注意的是函數(shù)參數(shù)也屬于局部變量,在函數(shù)外部使用會報錯,如下圖所示。全局變量全局變量是指既能在函數(shù)內(nèi)使用也能在函數(shù)外使用的變量。如下圖所示。全局變量需要注意的是如果想在函數(shù)內(nèi)修改函數(shù)外定義的變量,可以使用global關(guān)鍵字,舉例如下圖所示。全局變量下圖為分別調(diào)用demo1()和demo2()的結(jié)果。匿名函數(shù)與高階函數(shù)匿名函數(shù)就是沒有名字的函數(shù),與普通函數(shù)相比,匿名函數(shù)除了沒有名字外,功能也比較單一,不包括循環(huán)結(jié)構(gòu),沒有return語句,通常只是一個表達(dá)式。而高階函數(shù)就是允許把函數(shù)作為參數(shù)傳入到另一個函數(shù)中,還允許返回一個函數(shù),所謂的函數(shù)式編程就是指這種高度抽象的編程范式。在Python中,匿名函數(shù)常被使用在高階函數(shù)中。匿名函數(shù)的定義與使用在Python中,匿名函數(shù)又叫l(wèi)ambda表達(dá)式,使用lambda關(guān)鍵字來創(chuàng)建,其語法格式如下:參數(shù)說明如下圖所示。匿名函數(shù)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論