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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

列表是可變序列,元組是不可變序列。列表可以使用索引和切片的方式訪問(wèn)和修改元素,元組也可以使用索引和切片訪問(wèn)元素,但不支持修改元素。列表中可以使用append()、insert()、remove()等方法添加、刪除元素,而元組中沒(méi)有這些方法。元組比列表的訪問(wèn)和處理速度快,所以元組可以用于保存程序中不會(huì)修改的內(nèi)容。字典字典即Dict,也是Python中使用非常頻繁的數(shù)據(jù)類型,與列表類似,不同的是字典是無(wú)序可變序列。字典中的所有元素都放在一對(duì)大括號(hào)“{}”中,兩個(gè)相鄰元素間使用逗號(hào)“,”分隔,字典中的元素是“鍵(key)值(value)對(duì)”類型,每個(gè)鍵和值之間用冒號(hào)“:”分隔,通過(guò)key可以快速找到value。元組字典的創(chuàng)建可以使用最基本的“{}”形式,也可以使用dict方法。舉例如下圖所示。字典的常用方法字典的常用方法總結(jié)如下圖所示。應(yīng)用舉例集合集合即Set,用于表示不重復(fù)元素,是無(wú)序、可變序列。在Python中,集合中的所有元素都放在一對(duì)大括號(hào)“{}”中,兩個(gè)相鄰元素間使用逗號(hào)“,”分隔。1.集合的創(chuàng)建集合有兩種創(chuàng)建方式,一種是直接使用大括號(hào)“{}”創(chuàng)建,另一種是使用set()函數(shù),set()函數(shù)可以將字符串、列表等類型轉(zhuǎn)換為集合,舉例如下頁(yè)所示應(yīng)用舉例從下圖的運(yùn)行結(jié)果可看出,集合是無(wú)序的,且如果創(chuàng)建集合時(shí)有重復(fù)元素,將只保留一個(gè)元素,還有一點(diǎn)需要注意的是創(chuàng)建空集合只能使用set()函數(shù),因?yàn)槭褂么罄ㄌ?hào)“{}”創(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是動(dòng)態(tài)類型的編程語(yǔ)言,也稱為弱類型編程語(yǔ)言,它不需要像Java、C一樣在使用變量前聲明變量類型,但有時(shí)需要用到類型轉(zhuǎn)換。右圖為常用的數(shù)據(jù)類型轉(zhuǎn)換函數(shù)。應(yīng)用舉例列表、元組、字典的遍歷案例【案例描述】某健身培訓(xùn)班學(xué)生分為A、B、C三組,每組共有學(xué)員5人。A組成員包括趙錢、孫李、周吳、鄭王、馮陳,成績(jī)分別為79、68、77、86、92;B組成員包括褚衛(wèi)、蔣沈、韓楊、朱秦、尤許,成績(jī)分別為81、83、62、76、82;C組成員包括何呂、施張、孔曹、嚴(yán)華、金魏,成績(jī)分別為96、73、76、81、82。【案例要求】①分別打印輸出A組、B組、C組的總分?jǐn)?shù)、平均分?jǐn)?shù)、最高分和最低分。②分別打印輸出A組、B組、C組的成績(jī)單。③統(tǒng)計(jì)該班級(jí)的總成績(jī)并按照分?jǐn)?shù)從高到低打印成績(jī)單。案例案例04本章回顧1.關(guān)于Python語(yǔ)法和命名規(guī)范,描述錯(cuò)誤的是()。A.Python采用大括號(hào)“{}”來(lái)分隔代碼塊B.Python注釋分為單行注釋和多行注釋C.在Python中,模塊名不宜過(guò)長(zhǎng),全部使用小寫字母D.在Python中,常量、全局變量全部使用大寫字母2.關(guān)于PEP8編碼規(guī)范,描述錯(cuò)誤的是()。A.PEP是PythonEnhancementProposal(Python增提案)的縮寫,

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

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

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

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

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

語(yǔ)句塊1else:

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

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

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

語(yǔ)句塊3......else:

語(yǔ)句塊nif...elif...else語(yǔ)句介紹

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

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

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

B.if...else語(yǔ)句 C.if...elseif...else語(yǔ)句 D.if...elif...else語(yǔ)句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),描述錯(cuò)誤的是()。A.while循環(huán)又稱為條件循環(huán),是通過(guò)一個(gè)判斷條件來(lái)控制是否需要反復(fù)執(zhí)行循環(huán)體中的語(yǔ)句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)嵌套的描述錯(cuò)誤的是()。A.循環(huán)嵌套可以是兩個(gè)while循環(huán)嵌套、兩個(gè)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)會(huì)執(zhí)行多次D.循環(huán)嵌套就是在一個(gè)循環(huán)中嵌入另一個(gè)循環(huán)本章回顧6.【多選】關(guān)于循環(huán)控制的描述正確的有()。A.在使用循環(huán)語(yǔ)句時(shí),可以使用break語(yǔ)句和continue語(yǔ)句對(duì)循環(huán)進(jìn)行控制B.break語(yǔ)句用于結(jié)束當(dāng)前正在執(zhí)行的循環(huán),轉(zhuǎn)而執(zhí)行這些循環(huán)后面的語(yǔ)句C.continue語(yǔ)句用于結(jié)束當(dāng)前正在執(zhí)行的這一次循環(huán),接著執(zhí)行下一次循環(huán)D.break語(yǔ)句用于結(jié)束整個(gè)循環(huán),continue用于結(jié)束當(dāng)次循環(huán)7.簡(jiǎn)述單分支、雙分支、多分支的執(zhí)行過(guò)程。8.簡(jiǎn)述while循環(huán)、for循環(huán)的執(zhí)行過(guò)程。期待您的寶貴意見(jiàn)Python程序設(shè)計(jì)教學(xué)團(tuán)隊(duì)第四章

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論