Python程序設(shè)計(含視頻分析) 課件全套 第1-15章 計算機(jī)與編程基礎(chǔ) - 大數(shù)據(jù)分析_第1頁
Python程序設(shè)計(含視頻分析) 課件全套 第1-15章 計算機(jī)與編程基礎(chǔ) - 大數(shù)據(jù)分析_第2頁
Python程序設(shè)計(含視頻分析) 課件全套 第1-15章 計算機(jī)與編程基礎(chǔ) - 大數(shù)據(jù)分析_第3頁
Python程序設(shè)計(含視頻分析) 課件全套 第1-15章 計算機(jī)與編程基礎(chǔ) - 大數(shù)據(jù)分析_第4頁
Python程序設(shè)計(含視頻分析) 課件全套 第1-15章 計算機(jī)與編程基礎(chǔ) - 大數(shù)據(jù)分析_第5頁
已閱讀5頁,還剩655頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

主講教師:單

位:Python程序設(shè)計第1章計算機(jī)與編程基礎(chǔ)第1章計算機(jī)與編程基礎(chǔ)1.1導(dǎo)論1.2硬件與軟件1.3存儲數(shù)據(jù)1.4運行程序1.5使用Python1.6總結(jié)第1章計算機(jī)與編程基礎(chǔ)1.1導(dǎo)論1.1程序計算機(jī)是可以被編程的;計算機(jī)可以完成程序告訴他們做的任何工作;程序:計算機(jī)完成某種任務(wù)時執(zhí)行的一組指令集合;程序通常也被稱為軟件;程序員:(經(jīng)過培訓(xùn)后)具備一個設(shè)計,編寫和測試計算機(jī)程序技能的人員;程序員也可以被稱為軟件開發(fā)人員或軟件工程師;第1章計算機(jī)與編程基礎(chǔ)1.2硬件與軟件1.2硬件硬件:組成計算機(jī)的物理設(shè)備或組件;計算機(jī)是一個由多個設(shè)備組成,能夠協(xié)同工作的系統(tǒng);最典型的組件;中央處理器(CPU);內(nèi)存;輔助存儲設(shè)備;輸入,輸出設(shè)備;1.2中央處理器(一)中央處理器(CPU):是計算機(jī)中實際運行程序設(shè)備;最重要的設(shè)備,沒有之一;沒有中央處理器(CPU),計算機(jī)將無法運行軟件;曾經(jīng)是巨型設(shè)備;1.2中央處理器(二)中央處理器(CPU)發(fā)展的歷程;真空管(1957年以前);晶體管(1958-1963年);集成電路(1964-1969年);大規(guī)模集成電路(1970年以后);微處理器:如今CPU是被稱為微處理器的小芯片;1.2內(nèi)存內(nèi)存:是計算機(jī)在程序運行時存儲程序代碼以及程序正在處理數(shù)據(jù)的地方;內(nèi)存通常被稱為隨機(jī)存取儲存器(RAM);CPU能快速訪問存儲在RAM中任意位置的數(shù)據(jù);RAM通常時一種易失性內(nèi)存,僅在程序運行時用于臨時存儲;計算機(jī)關(guān)閉時,RAM的內(nèi)容將被刪除;1.2輔助存儲設(shè)備輔組存儲(簡稱輔存):可以長時間保存數(shù)據(jù),即使在計算機(jī)關(guān)閉時,任能保存數(shù)據(jù);程序通常存儲在輔存中,并根據(jù)需要加載到內(nèi)存中;輔助存儲設(shè)備的種類;磁盤驅(qū)動器(簡稱硬盤):傳統(tǒng)的硬盤(HDD)將數(shù)據(jù)通過磁編碼寫入旋轉(zhuǎn)的圓盤上存儲;固態(tài)驅(qū)動器(也稱固態(tài)硬盤):固態(tài)硬盤(SSD)不存在移動的部件,運行速度比傳統(tǒng)硬盤快;USB驅(qū)動器(閃存):是插入計算機(jī)USB(通用串行總線)端口的小型設(shè)備,攜帶方便,數(shù)據(jù)存儲在稱為閃存的特殊類型存儲器上;光學(xué)設(shè)備:如CD(光盤)和DVD(數(shù)字多功能磁盤),數(shù)據(jù)通過一系列凹坑儲存在光盤上,光驅(qū)通過激光檢測凹坑讀取編碼數(shù)據(jù);1.2輸入設(shè)備輸入:指計算機(jī)從人和其他設(shè)備手機(jī)的任何數(shù)據(jù);輸入設(shè)備:收集數(shù)據(jù)并將其發(fā)送到計算機(jī)系統(tǒng)的設(shè)備稱為輸入設(shè)備;例如,鍵盤,鼠標(biāo),掃描儀,麥克風(fēng)和數(shù)碼相機(jī);磁盤驅(qū)動器和光盤驅(qū)動器也可以被視為輸入設(shè)備,因為程序和數(shù)據(jù)從它們中獲取并加載到計算機(jī)的內(nèi)存中;1.2輸出設(shè)備輸出:是指計算機(jī)為人或其他設(shè)備生成的數(shù)據(jù);輸出可以是文本,圖像,音頻,或者是比特流(一串二進(jìn)制代碼);輸出設(shè)備:能格式化和顯示計算機(jī)生成數(shù)據(jù)的設(shè)備;例如,顯示器和打印機(jī);磁盤驅(qū)動器和CD刻錄機(jī)也可以被視為輸出設(shè)備,因為計算機(jī)系統(tǒng)將數(shù)據(jù)發(fā)送給它們以便保存;1.2軟件從打開電源到關(guān)閉系統(tǒng),計算機(jī)所有的操作都由軟件控制;軟件一般分為一下兩類;例如,顯示器和打印機(jī);系統(tǒng)軟件;應(yīng)用軟件;1.2系統(tǒng)軟件控制和管理計算機(jī)基本操作的程序稱為系統(tǒng)軟件;操作系統(tǒng):控制,管理計算機(jī)中所有硬件的運行;在臺式機(jī)和筆記本電腦中的操作系統(tǒng)如Windows,MacOS,Linux,移動設(shè)備的操作系統(tǒng)如Android,iOS;實用工具:執(zhí)行專門的任務(wù),輔助計算機(jī)的運行或保護(hù)數(shù)據(jù);如殺毒軟件(McAfee),解壓縮軟件(winrar),數(shù)據(jù)備份軟件;軟件開發(fā)工具:程序員用來創(chuàng)建,修改和測試軟件的程序,如編譯程序,解釋程序;1.2應(yīng)用軟件使計算機(jī)處理日常工作的程序稱為應(yīng)用軟件;例如,文字處理程序(WPSWord),網(wǎng)頁瀏覽器(Chrome,F(xiàn)irefox),游戲程序(Dota2,LOL,PUBG)等;第1章計算機(jī)與編程基礎(chǔ)1.3存儲數(shù)據(jù)1.3計算機(jī)如何存儲數(shù)據(jù)?存儲在計算機(jī)中的所有數(shù)據(jù)都被轉(zhuǎn)換為0和1的序列;字節(jié):1字節(jié)的內(nèi)存只夠存儲字母或者小數(shù)字;每個字節(jié)被分成8個位(比特);位(比特):將其看作能保持正電荷或負(fù)電荷的電氣元件,如可以開/關(guān)的微小開關(guān);字節(jié)中位(比特)的開/關(guān)模式表示存儲在字節(jié)中的數(shù)據(jù);1.3存儲數(shù)字(一)位(比特)有兩個取值,分別是0和1;計算機(jī)使用二進(jìn)制編碼系統(tǒng);二進(jìn)制數(shù)中每個進(jìn)位都代表一個值,從最右邊往左,進(jìn)位的值費別為1,2,4,8等;要確定二進(jìn)制數(shù)的值,只需將所有值為1的進(jìn)位值相加;1.3存儲數(shù)字(二)一個字節(jié)的存儲的數(shù)字大小范圍為0到255;0表示所有位(比特)都是關(guān)(00000000),255表示所有位(比特)都是開(11111111);為了存儲更大的數(shù)字,我們需要使用多個字節(jié);1.3存儲字符(一)存儲在計算機(jī)內(nèi)存中的任何數(shù)據(jù)都必須作為二進(jìn)制數(shù)存儲;一個字符被存儲在內(nèi)存中時,它首先被轉(zhuǎn)換成一個數(shù)字編碼,在把數(shù)字編碼轉(zhuǎn)化為二進(jìn)制數(shù)存儲在內(nèi)存中;最重要的編碼方案稱為美國信息交換標(biāo)準(zhǔn)碼(ASCII),例如A的ASCII碼是65;ASCII只定義了128個字符的數(shù)字編碼;Unicode編碼方案與ASCII兼容,也可以表示世界上許多語言的字符1.3存儲字符(二)計算機(jī)使用編碼方案和二進(jìn)制編號系統(tǒng)也能將負(fù)數(shù)和實數(shù)存儲在內(nèi)存中;負(fù)數(shù)使用二進(jìn)制補(bǔ)碼即使進(jìn)行編碼;實數(shù)使用浮點符號進(jìn)行編碼;1.3其他類型數(shù)據(jù)數(shù)字設(shè)備是可以與二進(jìn)制數(shù)據(jù)一起工作的任何設(shè)備,以二進(jìn)制形式存儲的數(shù)據(jù)可以用來描述任何事物;數(shù)字圖像由被稱為像素(圖像的元素)的小點構(gòu)成;圖像中的每個像素點都轉(zhuǎn)換為代表像素的顏色的一個二進(jìn)制數(shù)存儲在內(nèi)存中;數(shù)字歌曲由被稱為樣本的小塊構(gòu)成;每個樣本都被轉(zhuǎn)換成一個二進(jìn)制數(shù)存儲在內(nèi)存中,歌曲分成的樣本越多,播放時聽起來就越像原始音樂;第1章計算機(jī)與編程基礎(chǔ)1.4運行程序1.4程序如何運行?(一)CPU被設(shè)計用于對數(shù)據(jù)執(zhí)行簡單的操作,比如;從內(nèi)存中讀取數(shù)據(jù),將兩個數(shù)相加、相減、相乘、相除;理解由機(jī)器語言編寫的指令及指令集(每個不用品牌的CPU都有自己獨特的指令集),機(jī)器語言指令總是二進(jìn)制的;因為CPU只知道如何執(zhí)行最基本的操作,所以為了完成一項任務(wù)需要CPU執(zhí)行許多操作才行;1.4程序如何運行?(二)程序存儲在輔存中,每次CPU執(zhí)行時都必須將其復(fù)制到內(nèi)存中;1.4程序如何運行?(三)當(dāng)CPU執(zhí)行一個程序中的指令時,進(jìn)行讀取-解析-執(zhí)行的指令周期過程;讀取:將下一條待執(zhí)行的指令從內(nèi)存中讀取到CPU中;解析:CPU解析剛從內(nèi)存中取出的指令,以確認(rèn)接下來應(yīng)該執(zhí)行的操作;執(zhí)行:執(zhí)行操作;1.4從機(jī)器語言到匯編語言(一)使用機(jī)器語言來編寫程序是不切實際的(編寫二進(jìn)制代碼非常煩瑣和耗時);匯編語言:不使用二進(jìn)制數(shù)來表示指令,而使用稱為助記符的縮寫來表示指令,從而也簡化,方便了程序員的工作;add表示數(shù)據(jù)相加;mul表示數(shù)據(jù)相乘;mov表示將值移動到內(nèi)存中的指定位置;1.4從機(jī)器語言到匯編語言(二)匯編器:將匯編語言程序翻譯成CPU可直接執(zhí)行的機(jī)器語言程序;匯編語言的缺點:與機(jī)器語言一樣,必須對CPU的硬件結(jié)構(gòu)和工作原理有一定的了解,最簡單的程序也要編寫大量匯編語言指令;1.4高級語言低級語言:類似于匯編語言之類的都稱為低級語言,低級語言都是機(jī)器語言的直接替代品,其本質(zhì)是上與機(jī)器語言非常接近的語言;高級語言:允許程序員專注于想要用程序執(zhí)行的任務(wù),而不是CPU如何執(zhí)行這些程序的細(xì)節(jié),同時也允許編寫功能強(qiáng)大且復(fù)雜的程序;無需知道CPU如何工作,也無需編寫大量的低級指令;大多高級語言使用易于理解的詞語;從某種程度上說,機(jī)器語言和匯編語言都是一種機(jī)器友好型的語言,而高級語言則是人類友好型的語言;1.4關(guān)鍵字,操作符和語法關(guān)鍵字:在高級語言中用來編寫程序的預(yù)定義字;每個關(guān)鍵字都有特定的意義;操作符:在高級語言程序中用來對數(shù)據(jù)執(zhí)行各種操作;算數(shù)運算符、關(guān)系運算符等;語法:編寫程序時必須嚴(yán)格遵循的一組規(guī)則;語句:高級語言中用于編寫程序的單個指令;1.4編譯器和解釋器(一)使用高級語言編寫的程序必須翻譯成機(jī)器語言才能被執(zhí)行;編譯器;解釋器;1.4編譯器和解釋器(二)編譯器:將高級語言程序轉(zhuǎn)換為獨立機(jī)器語言程序的程序;轉(zhuǎn)換后的機(jī)器語言程序可以隨時執(zhí)行;1.4編譯器和解釋器(三)解釋器:翻譯件并執(zhí)行高級語言程序的特殊程序;讀取程序中的每條獨立指令后,會將其轉(zhuǎn)換為機(jī)器語言指令,然后立即執(zhí)行它們;不斷重復(fù)上面的過程執(zhí)行程序中的每個指令;解釋器將翻譯和執(zhí)行兩個過程合并在一起完成,不會創(chuàng)建獨立的機(jī)器語言程序;1.4編譯器和解釋器(四)源代碼:高級語言編寫的語句;語法錯誤:在源代碼中,不嚴(yán)格遵循語法而出現(xiàn)的能阻止程序被翻譯的錯誤;第1章計算機(jī)與編程基礎(chǔ)1.5使用Python1.5Python在運行Python程序之前,我們必須在確保Python已安裝在計算機(jī)上且正確配置;下載地址:/downloads/在安裝Pyhton時,安裝的其中一項就是Python解釋器;Python解釋器可以在兩種模式下使用:交互模式:在此模式下,Python解釋器等待鍵盤上輸入的Pyhton語句。一旦輸入一條語句,解釋器就是執(zhí)行它,然后等待輸入下一條語句;腳本模式:將Pyhton語句寫入并保存在Python腳本中,解釋器讀取Python腳本中的每個語句并執(zhí)行;1.5交互模式首先打開操作系統(tǒng)的命令行,然后輸入python,即啟動了Python的交互模式,我們將看到如下提示;表示解釋器正在等待鍵入Python語句;在執(zhí)行完上一條語句后,提示符>>>將重新出現(xiàn);如果鍵入的語句不正確,則顯示錯誤消息;交互模式是學(xué)習(xí)Python新知識的好方法;1.5在腳本模式下編寫和運行Python程序(一)在交互模式輸入的Python語句不會另存為程序,交互模式下Python語句只是簡單的被執(zhí)行且將結(jié)果顯示在屏幕上;如果想創(chuàng)建Python程序,我們可以使用腳本模式;在腳本中保存一組Python語句;Python腳本文件的擴(kuò)展名為.py;若要運行Python腳本,先在操作系統(tǒng)命令行中進(jìn)入保存腳本的路徑,然后輸入以下命令,1.5在腳本模式下編寫和運行Python程序(二)首先打開文本編輯器,在其中輸入如下,然后保存該文件腳本,并命名為test.py;再打開操作系統(tǒng)的命令行,使用cd命令進(jìn)入test.py的路徑,比如,最后,在正確的文件路徑下,使用python命令解釋并運行test.py腳本,如下,1.5集成開發(fā)環(huán)境除了在交互模式和腳本模式啟動Python解釋器以外,還有另外一種方式編寫,執(zhí)行和測試Pyhton程序,即使用集成開發(fā)環(huán)境IDE;IDE是一個提供編寫,執(zhí)行和測試程序所需的所有工具的程序;PyCharm和JupyterNotebook都是比較主流的PythonIDE;在IDE中,關(guān)鍵詞和程序其他部分以獨特的顏色顯示,易于程序的閱讀;第1章計算機(jī)與編程基礎(chǔ)1.6總結(jié)1.5總結(jié)本章所包含的內(nèi)容有:計算機(jī)的主要硬件設(shè)備;軟件的類型;如何在計算機(jī)中存儲數(shù)據(jù);CPU的基本操作和機(jī)器語言;讀取-解析-操作的指令周期;如何將低級語言和高級語言翻譯成機(jī)器語言;Python的安裝及Python的解釋器模式;Python程序設(shè)計第2章Python基礎(chǔ)第2章Python基礎(chǔ)1.1Python基本類型1.2Python基本運算1.3常量與變量1.4輸入輸出及處理1.5注釋1.6turtle庫簡介2.1Python數(shù)據(jù)類型第2章Python基礎(chǔ)2.1Python數(shù)據(jù)類型6類標(biāo)準(zhǔn)數(shù)據(jù)類型:Number(數(shù)字)String(字符串)List(列表)Tuple(元組)Set(集合)Dictionary(字典)2.1Python數(shù)據(jù)類型表2-1Python中的數(shù)據(jù)類型2.1Python數(shù)據(jù)類型type()函數(shù)可在交互式環(huán)境中或腳本中獲得該對象的類型信息2.1Python數(shù)據(jù)類型表2-2類型轉(zhuǎn)換函數(shù)2.2Python基本運算1、算術(shù)運算表2-3算術(shù)運算2.2Python基本運算1、算術(shù)運算各運算符的優(yōu)先級2.2Python基本運算2、關(guān)系運算表2-4關(guān)系運算符2.2Python基本運算3、邏輯運算表2-5邏輯運算符2.2Python基本運算3、邏輯運算交互模式下,邏輯運算測試如下:2.3常量和變量1、常量:在程序運行期間其值固定不變的量(如圓周率π)2、變量:引用計算機(jī)內(nèi)存中特定位置所存儲值的名稱2.3常量和變量變量命名規(guī)則:(1)字符組成:變量名應(yīng)由字母、數(shù)字和下劃線組成,且首字符不得為數(shù)字。(2)下劃線的使用:為提高可讀性,推薦使用下劃線分隔單詞,如student_age而非studentage。(3)大小寫敏感:Python區(qū)分大小寫,Name、name、NAME被視為三個不同變量。2.3常量和變量變量命名規(guī)則:(4)避免關(guān)鍵字與函數(shù)名:確保變量名不與Python的保留關(guān)鍵字(如表3-6)或內(nèi)置函數(shù)名沖突,以免引發(fā)語法錯誤。(5)命名規(guī)范:變量名應(yīng)簡短且富有描述性,如age優(yōu)于s,student_name比s_n更能明確表達(dá)其意。(6)易混淆字符警告:避免使用容易與數(shù)字混淆的字符,如l(與1相似)和O(與0相似)作為變量名開頭,以減少視覺誤解。2.4輸入輸出及處理計算機(jī)程序執(zhí)行的處理通常分為以下三個步驟:(1)接收輸入;(2)對輸入進(jìn)行某種處理;(3)產(chǎn)生輸出。2.4輸入輸出及處理1、print()函數(shù)顯示輸出(1)輸出單一值2.4輸入輸出及處理1、print()函數(shù)顯示輸出(2)輸出變量2.4輸入輸出及處理1、print()函數(shù)顯示輸出(3)輸出多個值2.4輸入輸出及處理1、print()函數(shù)顯示輸出(4)定制輸出格式2.4輸入輸出及處理2、input()函數(shù)接收輸入input()函數(shù)是Python中用于接收用戶鍵盤輸入的內(nèi)置函數(shù)#簡單獲取用戶輸入并打印message=input("請輸入一些文字:")print("你輸入的是:",message)#獲取數(shù)值輸入并進(jìn)行數(shù)學(xué)運算num1=int(input("請輸入第一個數(shù)字:"))num2=int(input("請輸入第二個數(shù)字:"))sum=num1+num2print("兩數(shù)之和為:",sum)2.4輸入輸出及處理2、input()函數(shù)接收輸入input()函數(shù)是Python中用于接收用戶鍵盤輸入的內(nèi)置函數(shù)#簡單獲取用戶輸入并打印radius=float(input("請輸入圓的半徑:"))#獲取浮點數(shù)輸入area=3.14*radius**2print("圓的面積為:",area)expression=eval(input(‘請輸入表達(dá)式3+4并計算:’))print(‘3+4=’,expression)2.4輸入輸出及處理2、input()函數(shù)接收輸入#提示用戶輸入多個以空格分隔的字符串myString=input("請輸入三個以空格分隔的字符串:")#使用split()方法按空格分割字符串,得到三個字符串對象str1,str2,str3=myString.split()#打印出分割后的每個字符串print(str1,str2,str3,sep=’\n’)2.4輸入輸出及處理2、input()函數(shù)接收輸入#提示用戶輸入多個以逗號分隔的整數(shù)myInteger=input("請輸入三個以逗號分隔的整數(shù):")#使用split()方法按逗號分割字符串,得到三個整數(shù)對象a,b,c=map(int,myInteger.split(‘,’))#打印出分割后的每個整數(shù)print(a,b,c,sep=’\n’)#如果多個數(shù)值之間以逗號隔開,上一功能也可以用如下代碼分割a1,b1,c1=eval(myInteger)#打印出分割后的每個整數(shù)print(a1,b1,c1,sep=’\n’)2.4輸入輸出及處理3、應(yīng)用實例【例2-1】編寫一個計算身體質(zhì)量指數(shù)BMI的程序。用戶輸入身高和體重的值,計算并輸出身體質(zhì)量指數(shù)BMI的值。name=input()print("你好!"+name)height=float(input("請輸入你的身高(m):"))weight=float(input("請輸入你的體總(kg):"))bmi=weight/height**2print("你的BMI的數(shù)值為:",bmi)2.4輸入輸出及處理3、應(yīng)用實例【例2-1】編寫一個計算身體質(zhì)量指數(shù)BMI的程序。用戶輸入身高和體重的值,計算并輸出身體質(zhì)量指數(shù)BMI的值。2.4輸入輸出及處理3、應(yīng)用實例【例2-2】編寫一個程序,提示用戶輸入球的半徑,計算并輸出球的體積。#這是一個求球體積的程序。radius=float(input('請輸入球的半徑:'))pi=3.14volume=4/3*pi*radius**3print('球的體積為:',volume)2.4輸入輸出及處理3、應(yīng)用實例【例2-2】編寫一個程序,提示用戶輸入球的半徑,計算并輸出球的體積。2.4輸入輸出及處理3、應(yīng)用實例【例2-3】在同一行依次輸入三個值a,b,c,用空格分開,輸出的值。a,b,c=map(int,input().split(''))print(b**2-4*a*c)2.4輸入輸出及處理4、格式化輸出Python提供的三種格式化輸出技術(shù):百分號(%)格式化format()方法f-string(格式化字符串字面量)2.4輸入輸出及處理4、格式化輸出(1)百分號(%)格式化1)基本格式化符號(1)%s-用于字符串或者任何可轉(zhuǎn)換為字符串的對象。>>>print("名字:%s"%"張三")名字:張三(2)%d-用于整數(shù)。>>>print("年齡:%d"%25)年齡:252.4輸入輸出及處理4、格式化輸出(1)百分號(%)格式化1)基本格式化符號(3)%f-用于浮點數(shù),默認(rèn)保留六位小數(shù)。>>>print("成績:%f"%98.6)成績:98.600000若要限制小數(shù)位數(shù),可以在%f后加點和數(shù)字,如%.2f保留兩位小數(shù)。>>>print("成績:%.2f"%98.6)成績:98.602.4輸入輸出及處理4、格式化輸出(1)百分號(%)格式化1)基本格式化符號(4)%x和%X-分別用于以小寫和大寫形式輸出十六進(jìn)制整數(shù)。>>>print("十六進(jìn)制:%x"%255)十六進(jìn)制:ff(5)%o-用于八進(jìn)制整數(shù)。>>>print("八進(jìn)制:%o"%255)八進(jìn)制:3772.4輸入輸出及處理4、格式化輸出2)高級用法(1)寬度和對齊:可以在類型代碼前指定寬度和對齊方式。默認(rèn)右對齊,加-表示左對齊,例如:>>>print("編號:%5d"%42)#右對齊,總寬度5編號:42>>>print("編號:%-5d"%42)#左對齊,總寬度5編號:42(2)精度:對于浮點數(shù),可以在%f之后指定精度(小數(shù)點后的位數(shù)),例如:>>>print("價格:%.2f"%3.14159)價格:3.142.4輸入輸出及處理4、格式化輸出2)高級用法【例2-4】定義一個人的基本信息(包括姓名、年齡和身高),并以格式化的方式輸出這些信息。name="Alice"age=30height=1.75print("姓名:%s,年齡:%d,身高:%.2f米"%(name,age,height))2.4輸入輸出及處理4、格式化輸出(2)內(nèi)置的format()函數(shù)(自Python2.6起被引入)1)基礎(chǔ)應(yīng)用:精確控制浮點數(shù)顯示>>>print(format(12345.6789,'.2f'))12345.68'.2f'指定輸出為浮點數(shù)形式,并保留兩位小數(shù)。2)科學(xué)計數(shù)法與逗號分隔(1)科學(xué)計數(shù)法:>>>print(format(12345.6789,'e'))1.234568e+042.4輸入輸出及處理4、格式化輸出(2)內(nèi)置的format()函數(shù)(自Python2.6起被引入)(1)科學(xué)計數(shù)法>>>print(format(12345.6789,'.2e'))1.23e+04(2)插入逗號分隔符>>>print(format(12345.6789,',.2f'))12,345.682.4輸入輸出及處理4、格式化輸出3)控制定位與寬度>>>print('Thenumberis',format(12345.6789,'12,.2f'))Thenumberis12,345.684)百分?jǐn)?shù)格式>>>print(format(0.5,'%'))50.000000%>>>print(format(0.5,'.0%'))50%2.4輸入輸出及處理4、格式化輸出5)整數(shù)格式化>>>print(format(123456,'10,d'))123,4566)參數(shù)化字符串格式化>>>name='張三'>>>age='20'>>>print('{}今年{}歲'.format(name,age))張三今年20歲>>>print('{1}的首都是{0},我是{1}人'.format('北京','中國'))中國的首都是北京,我是中國人2.4輸入輸出及處理4、格式化輸出(3)f-string(格式化的字符串文本)(Python3.6及以上版本引入)1)占位符表達(dá)式name='Alice'age=30print(f"Mynameis{name}andIam{age-5}yearsold.")運行結(jié)果:MynameisAliceandIam25yearsold.2.4輸入輸出及處理4、格式化輸出(3)f-string(格式化的字符串文本)(Python3.6及以上版本引入)2)格式化數(shù)值value=3.14159print(f"Thevalueis{value:.2f}.")運行結(jié)果:Thevalueis3.143)插入逗號分隔符number=123456789print(f"Numberwithcommas:{number:,}")Numberwithcommas:123,456,7892.4輸入輸出及處理4、格式化輸出4)百分?jǐn)?shù)形式percentage=0.25print(f"{percentage:.0%}complete.")運行結(jié)果:25%complete.5)科學(xué)計數(shù)法sci_num=123456789print(f"Scientificnotation:{sci_num:.2e}")運行結(jié)果:Scientificnotation:1.23e+082.4輸入輸出及處理4、格式化輸出6)指定最小域?qū)捄蛯R方式width=10num=42print(f"Widthspecified:{num:<{width}}.")運行結(jié)果:Widthspecified:42.#42后面填充有8個空格2.4輸入輸出及處理4、格式化輸出7)指示符的順序在f-string中,多個指示符的正確順序:[對齊][寬度][,][.][精度][數(shù)值類型]1num=123.4562print(f"Customorder:{num:<10.2f}.")運行結(jié)果:Customorder:123.46.如果上面的第2行代碼改為:print(f"Customorder:{num:10<.2f}.")則運行結(jié)果:ValueError:Invalidformatspecifier2.5注釋(1)行注釋#在Python中,注釋前面必須放一個#號。Python解釋器看到#號后,它將忽略掉從#號開始到本行結(jié)束的所有內(nèi)容。把注釋寫在出現(xiàn)在代碼行末尾的注釋稱為行末注釋。它是專門解釋所在行的代碼。2.5注釋(2)段注釋'''Python的段注釋使用一對三引號('''或""")把需要注釋的段落括起來。使用PyCharm這樣的集成開發(fā)環(huán)境(IDE)時,選中需要注釋的語句,再按快捷鍵"ctrl+/"可以把所選中的語句一起注釋。再按一次"ctrl+/",可以取消剛才的注釋。2.6turtle庫簡介1、模塊導(dǎo)入標(biāo)準(zhǔn)導(dǎo)入方式為:importturtle為了簡化后續(xù)調(diào)用,可賦予該模塊一個別名:importturtleast采用從模塊中導(dǎo)入所有函數(shù)方式,以直接調(diào)用函數(shù)而無需前綴模塊名:fromturtleimport*但請注意:這種導(dǎo)入方式可能會導(dǎo)致命名空間沖突,故在編寫復(fù)雜程序時應(yīng)謹(jǐn)慎使用。2.6turtle庫簡介2、畫布配置(1)turtle.screensize(canvwidth,canvheight,bg):此命令用于設(shè)定畫布的尺寸與背景色。例如:turtle.screensize(500,600,'red')#設(shè)定畫布為500x600像素,背景為紅色(2)turtle.setup(width,height,startx=None,starty=None):此命令控制畫布窗口的尺寸及屏幕上的初始位置。turtle.setup(width=0.6,height=0.4)turtle.setup(width=400,height=300,startx=200,starty=200)2.6turtle庫簡介3、畫筆操作2.6turtle庫簡介4、turtle中的繪圖命令(見表2-8,2-9,2-10)2.6turtle庫簡介5、turtle繪圖實例【例2-5】繪制五角星,并在下面書寫“愛國心”importturtleturtle.setup(400,400)turtle.speed(1)#設(shè)置畫筆速度turtle.penup()turtle.goto(-60,60)turtle.pendown()turtle.pencolor('red')turtle.fillcolor('red')turtle.begin_fill()turtle.forward(100)turtle.right(144)turtle.forward(100)turtle.right(144)turtle.forward(100)turtle.right(144)turtle.forward(100)2.6turtle庫簡介5、turtle繪圖實例turtle.right(144)turtle.forward(100)turtle.end_fill()turtle.penup()turtle.goto(-10,-60)turtle.pendown()font_style=("Arial",24,"bold")turtle.write(“愛國心”,align="center",font=font_style)turtle.hideturtle()turtle.done()2.6turtle庫簡介5、turtle繪圖實例【例2-5】繪制五角星,并在下面書寫“愛國心”2.6turtle庫簡介5、turtle繪圖實例【例2-6】設(shè)置畫布大小為300x300像素,繪制彩色環(huán)形圖案,并在中央顯示文字“CUZ”。importturtleturtle.setup(300,300)turtle.hideturtle()turtle.dot(200,"red")turtle.dot(180,"orange")turtle.dot(160,"yellow")turtle.dot(140,"violet")turtle.dot(120,"blue")turtle.dot(100,"indigo")turtle.dot(80,"green")turtle.dot(60,"white")turtle.write("CUZ",align="center",font=('Verdana',12,'bold'))turtle.done()2.6turtle庫簡介5、turtle繪圖實例【例2-6】設(shè)置畫布大小為300x300像素,繪制彩色環(huán)形圖案,并在中央顯示文字“CUZ”。2.6turtle庫簡介5、turtle繪圖實例【例2-7】繪制一個貪吃蛇形狀的圖案。fromturtleimport*setup(600,350,200,200)penup()fd(-250)pendown()pensize(20)pencolor("purple")seth(-40)circle(40,80)circle(-40,80)circle(40,80/2)fd(40)circle(16,180)fd(40*2/3)done()2.6turtle庫簡介5、turtle繪圖實例【例2-7】繪制一個貪吃蛇形狀的圖案。主講教師:單

位:Python程序設(shè)計基礎(chǔ)第3章程序結(jié)構(gòu)第3章程序結(jié)構(gòu)3.1程序結(jié)構(gòu)3.2選擇結(jié)構(gòu)3.3循環(huán)結(jié)構(gòu)3.4機(jī)器龜圖形庫3.1控制結(jié)構(gòu)1.控制結(jié)構(gòu):為了控制一級語句的執(zhí)行順序而引入的邏輯結(jié)構(gòu)2.程序的結(jié)構(gòu)一般有三種:順序結(jié)構(gòu)選擇結(jié)構(gòu)(也稱分支結(jié)構(gòu))循環(huán)結(jié)構(gòu)

順序結(jié)構(gòu)(sequencestructure)結(jié)構(gòu)的特點是:程序從入口點a開始,按語句的順序執(zhí)行所有操作,直到出口點b處,所以稱為順序結(jié)構(gòu)。選擇結(jié)構(gòu)(selectionstructure)decisionstructure它需要根據(jù)某一特定的條件選擇其中的一個分支執(zhí)行。選擇結(jié)構(gòu)有單選擇、雙選擇和多選擇三種形式。循環(huán)結(jié)構(gòu)(repetitionstructure)表示程序反復(fù)執(zhí)行某個或某些操作,直到某條件為假(或為真)時才可終止循環(huán)。3.1控制結(jié)構(gòu)示例:計算貸款支付額第1階段:需求分析必須由用戶鍵入利率、貸款數(shù)以及貸款的年限必須計算出每月還貸和總還款數(shù)第2階段:系統(tǒng)分析輸出是月供和總還款數(shù),可以通過下面的公式來獲?。?/p>

示例:計算貸款支付額第3階段:系統(tǒng)設(shè)計第1步:提示用戶輸入年利率、貸款年限和總貸款數(shù)目第2步:輸入的年利率是百分比格式的數(shù)字,除以100轉(zhuǎn)換為小數(shù),再除以12得到月利率。第3步:使用公式計算月供第4步:通過將月供乘以12再乘以貸款年限求出總還款總額。第5步:顯示月供和還款總額。示例:計算貸款支付額第4階段:實現(xiàn)過程編寫代碼,其中要寫成:(1+月利率)**(年限*12)第5階段:測試過程利用幾組樣本輸入數(shù)據(jù)來驗證輸出是否正確順序結(jié)構(gòu):程序流程圖輸入年利率輸入年數(shù)輸入總貸款額計算月利率

計算月供

計算總還款數(shù)

輸出結(jié)果開始結(jié)束代碼示例:#計算貸款支付額#輸入年利率,如7.25annualInterestRate=eval(input("輸入年利率:"))#輸入年數(shù)numberOfYears=eval(input("輸入年數(shù):"))#輸入總貸款額loanAmount=eval(input("輸入總貸款額:"))#計算月利率monthlyInterestRate=annualInterestRate/1200#計算月供monthlyPayment=(loanAmount*monthlyInterestRate)/\(1-1/(1+monthlyInterestRate)**(numberOfYears*12))#計算總還款數(shù)totalPayment=monthlyPayment*numberOfYears*12#顯示結(jié)果print("月供是:",int(monthlyPayment*100)/100)#保留兩位小數(shù)print("總還款數(shù)是:",int(totalPayment*100)/100)3.2.1.單分支選擇結(jié)構(gòu)3.2.2.雙分支選擇結(jié)構(gòu)3.2.3多分支選擇結(jié)構(gòu)3.2.4嵌套選擇結(jié)構(gòu)3.2選擇結(jié)構(gòu)3.2選擇結(jié)構(gòu)基本的條件語句有分支的條件語句多分支if-elif-else嵌套選擇結(jié)構(gòu)if條件:

語句塊1

if條件:

語句塊1else:

語句塊2if條件1:

語句塊1elif條件2:

語句塊2…elif條件n:

語句塊nelse:

語句塊n+1

if條件:

語句塊1else:

語句塊2語句塊中包含選擇結(jié)構(gòu)語句a=3ifa:print(“true”)else:

print(“false”)a=3ifa=2:print(“true”)else print(“false”)a=Trueifa:print(“true”)else print(“false”)示例:求某年某月包含多少天開始輸入年year輸入月month是2月?是閏年?29天YYNN28天1,3,5,7,8,10,12月?31天YN30天結(jié)束示例#輸入年、月year=int(input("年:"))month=int(input("月:"))ifmonth==2:#判斷該年是否是閏年else:print(str(year)+"年"+str(month)+"月是"+str(days)+"天")ifmonth==1ormonth==3ormonth==5ormonth==7ormonth==8ormonth==10ormonth==12:days=31else:days=30if(year%4==0andyear%100!=0)or(year%400==0):days=29else:days=28#也可以用標(biāo)記

leap=(year%4==0andyear%100!=0)or(year%400==0)ifleap:days=29else:days=28Ifa=3:

如同程序結(jié)構(gòu)中有分支結(jié)構(gòu),在人生的道路上也不會一直是一條直道,會面臨著很多的選擇,但只要你認(rèn)準(zhǔn)了方向,做你認(rèn)為正確的選擇,勇往直前,就一定能到達(dá)你的目標(biāo)。注:max=aifa>belseb這是一種類似于其它編程語言中三目運算符?:的寫法。Python是一種極簡主義的編程語言,它沒有引入?:這個新的運算符,而是使用已有的ifelse關(guān)鍵字來實現(xiàn)相同的功能。3.3.1單分支選擇結(jié)構(gòu)格式:

if條件:

語句塊1#分支語句塊,書寫時必須縮進(jìn)。語句塊1條件TrueFalse只有一條選擇執(zhí)行的路徑,如果條件不是True,退出結(jié)構(gòu)3.3.1單分支選擇結(jié)構(gòu)一個基本的條件語句由一個關(guān)鍵字if開頭,跟上一個表示條件的邏輯表達(dá)式,然后是一個冒號:。從下一行開始,所有縮進(jìn)了的語句就是當(dāng)條件成立(邏輯表達(dá)式計算的結(jié)果為True)的時候要執(zhí)行的語句。如果條件不成立,就跳過這些語句不執(zhí)行,而繼續(xù)下面的其他語句。3.3.1單分支選擇結(jié)構(gòu)3.3.1單分支選擇結(jié)構(gòu)(1)輸入一個學(xué)生的成績,判斷其是否及格了輸入成績scorescore>=60YN輸出及格了結(jié)束開始3.3.1單分支選擇結(jié)構(gòu)score=int(input("請輸入分?jǐn)?shù):"))ifscore>=60:print("恭喜!"+str(score)+"分及格了!")print("恭喜!",score,"分及格了!")3.3.1單分支選擇結(jié)構(gòu)x=int(input())y=z=0ifx>20:y=100 #書寫縮進(jìn),當(dāng)x>20時執(zhí)行z=200 #書寫縮進(jìn),當(dāng)x>20時執(zhí)行print(y+z) #if語句后續(xù)的語句3.3.2雙分支選擇結(jié)構(gòu)(2)輸入一個學(xué)生的成績,判斷其是及格還是不及格輸入成績scorescore>=60YN輸出及格了結(jié)束開始輸出不及格3.3.2雙分支選擇結(jié)構(gòu)格式:if條件:

語句塊1#條件成立時執(zhí)行。else:

語句塊2#條件不成立時執(zhí)行。if-else的流程圖

語句塊1條件TrueFalse語句塊23.3.2雙分支選擇結(jié)構(gòu)score=int(input("請輸入分?jǐn)?shù):"))ifscore>=60:print("恭喜!"+str(score)+"分及格了!")else:print("很遺憾!"+str(score)+"分不及格!")3.3.2雙分支選擇結(jié)構(gòu)num1=int(input())num2=int(input())ifnum1>num2:

max=num1

else:

max=num2

print(max)例

比較2個數(shù)的大小語句塊2(條件不成立時執(zhí)行)語句塊1(條件成立時執(zhí)行)3.3.3多分支選擇結(jié)構(gòu)if-elif-else

語句if

condition_1:

statement(s)elif

condition_2:

statement(s)elif

condition_3:

statement(s)else:statement(s)根據(jù)需要可以插入多個elif從句3.3.3多分支選擇結(jié)構(gòu)x=1;y=2;ifx==1:print("true")elify==2:print("false")else:print("truefalse")3.3.3多分支選擇結(jié)構(gòu)(3)輸入一個學(xué)生的成績,判斷其是優(yōu)秀、良好、中等、及格還是不及格3.3.3多分支選擇結(jié)構(gòu)score=int(input("請輸入分?jǐn)?shù):"))ifscore>=90:print(str(score)+"分是優(yōu)秀!")elifscore>=80:print(str(score)+"分是良好!")elifscore>=70:print(str(score)+"分是中等!")elifscore>=60:print(str(score)+"分是及格!")else:print("很遺憾!"+str(score)+"分不及格!")3.3.4嵌套的選擇結(jié)構(gòu)3.3.4嵌套的選擇結(jié)構(gòu)在嵌套if語句里,最重要的問題是else的匹配。else總是根據(jù)它自己所處的縮進(jìn)和同列的最近那個if匹配。編寫嵌套的if語句時應(yīng)遵守下列規(guī)則:確保每一個else從句都與它對應(yīng)的if從句對齊。確保每一個語句塊內(nèi)的語句都保持一致的縮進(jìn)3.3.4嵌套的選擇結(jié)構(gòu)score=int(input("請輸入分?jǐn)?shù):"))ifscore>=70:ifscore>=80:ifscore>=90:print(str(score)+"分是優(yōu)秀!")else:print(str(score)+"分是良好!")else:print(str(score)+"分是中等!")else:ifscore>=60:print(str(score)+"分是及格!")else:print("很遺憾!"+str(score)+"分不及格!")第3章循環(huán)結(jié)構(gòu)3.3.1.while循環(huán)3.3.2for循環(huán)語句3.3.3嵌套循環(huán)3.3.4跳轉(zhuǎn)語句使用循環(huán)目的:告訴程序重復(fù)執(zhí)行某些語句。示例:計算1~5之間數(shù)的和num=1,sum=0num<=5?Ysum=sum+numN輸出累加和sum開始結(jié)束num=1sum=0whilenum<=5sum=sum+num

num=num+1print(“1-5的和為:"+str(sum))num=1sum=0whilenum<=5:sum=sum+num

num=num+1print(“1-5的和為:"+str(sum))num=num+1指出程序中的錯誤3.3.1while循環(huán)語句while循環(huán)也稱為先測試循環(huán),一個循環(huán)體單次執(zhí)行被稱作循環(huán)的一次迭代。注:條件表達(dá)式永遠(yuǎn)為true,無限循環(huán)(死循環(huán))

。3.3.1while循環(huán)語句累加和:通過循環(huán)的每一次迭代累加得到一組數(shù)據(jù)的和。3.3.1while循環(huán)語句while條件:

語句塊1#書寫縮進(jìn)else:

語句塊2#書寫縮進(jìn)條件語句塊1TrueFalse語句塊23.3.1while循環(huán)語句執(zhí)行while語句的流程:判斷條件是否成立如果條件成立,則執(zhí)行語句塊1回到第1步如果條件不成立,若有else子句,執(zhí)行語句塊2結(jié)束循環(huán)語句書寫必須縮進(jìn)在循環(huán)體內(nèi)部,應(yīng)該有改變循環(huán)條件的語句,以控制循環(huán)的次數(shù),避免產(chǎn)生無限循環(huán)(死循環(huán))。示例:成績輸入錯誤重新輸入輸入一個學(xué)生的成績,首先判斷輸入的分?jǐn)?shù)是否是0和100之間#判斷輸入的成績是否正確score=int(input("請輸入分?jǐn)?shù):"))whilescore<0orscore>100:score=int(input("請重新輸入分?jǐn)?shù):"))ifscore>=90:print(str(score)+"分是優(yōu)秀!")elifscore>=80:print(str(score)+"分是良好!")elifscore>=70:print(str(score)+"分是中等!")elifscore>=60:print(str(score)+"分是及格!")else:print("很遺憾!"+str(score)+"分不及格!")輸入成績scorescore>=0并且score<=100YN判斷成績等級結(jié)束開始示例:計算1~100內(nèi)的偶數(shù)累加和sum=0num=0;whilenum<=100: sum=sum+numnum=num+2print("sum="+str(sum))示例:計算1~100內(nèi)的偶數(shù)累加和sum=0num=1;whilenum<=100:ifnum%2==0:sum=sum+numnum=num+1print("sum="+str(sum))判斷一個數(shù)是否為完全立方數(shù)num=int(input("輸入一個整數(shù):"))ans=0whileans**3<abs(num):ans=ans+1ifans**3==num:ifnum<0:ans=-ansprint(str(ans)+"是"+str(num)+"的立方根")else:print(str(num)+“不是完全立方數(shù)“)示例:成績統(tǒng)計輸入一個班級的成績,統(tǒng)計及格的人數(shù)和不及格的人數(shù),并求出平均成績。注:事先不知道班級人數(shù),成績輸入-1結(jié)束總?cè)藬?shù)count=0總分total=0及格人數(shù)passNums=0不及格人數(shù)nopassNums=0平均成績average=0總?cè)藬?shù)count=0總分total=0及格人數(shù)passNums=0不及格人數(shù)nopassNums=0平均成績average=0輸入成績scorescore!=-1?count+=1,total+=scorescore>=60?passNums+=1nopassNums+=1輸入成績score輸出信息average=total/countYYNN3.3.2for循環(huán)語句:計數(shù)控制循環(huán)循環(huán)迭代執(zhí)行的次數(shù)是確定的

一般格式:

for變量in[值1,值2,…]:

語句塊示例:計算1~5之間數(shù)的累加和(for循環(huán))num=1,sum=0num<=5?Ysum=sum+numN輸出累加和sum開始結(jié)束sum=0fornumin[1,2,3,4,5]:sum=sum+numprint("1-5的累加和為:"+str(sum))num=1sum=0whilenum<=5:sum=sum+numnum=num+1print("1-5的累加和為:"+str(sum))3.3.2for循環(huán)語句forweekin['Sun','Mon','Tues','Wed','Thur','Fri','Sat']:print(week)SunMonTuesWedThurFriSatfornumin[1,2,3,4,5]:print(num,end=',')1,2,3,4,5,3.3.2for循環(huán)語句fornumin[1,2,3,4,5]:fornuminrange(5):fornuminrange(1,end+1):sum=0fornumin[1,2,3,4,5]:sum=sum+numprint("1-5的累加和為:"+str(sum))3.3.2for循環(huán)語句range函數(shù)可以簡化計數(shù)控制的for循環(huán)的編寫過程

range

返回一個稱為iterable(迭代器)對象迭代器:包含了供迭代處理的一組數(shù)據(jù)

range

參數(shù)含義:一個參數(shù):上限值兩個參數(shù):初始和上限值三個參數(shù):初始值、上限值、步長3.3.2for循環(huán)語句fornuminrange(1,10,2)示例:計算1~100內(nèi)的偶數(shù)累加和#第二種方法:for方法sum2=0fornum2inrange(1,100+1):ifnum2%2==0:sum2=sum2+num2print("sum2="+str(sum2))#第三種方法:for方法sum3=0fornum3inrange(2,100+1,2):sum3=sum3+num3print("sum3="+str(sum3))#第一種方法:while方法sum1=0num1=1;whilenum1<=100:ifnum1%2==0:sum1=sum1+num1num1=num1+1print("sum1="+str(sum1))num1=2,sum=0whilenum1<=100:sum1=sum1+num1num1=num1+2示例:打印圖案153*****************************************************************foriinrange(1,5+1):forjinrange(1,10+1)print(“*”,end=‘’)print()3.3.3嵌套循環(huán)語句嵌套循環(huán):在一個循環(huán)內(nèi)包含了另一個循環(huán)例如:打印如下圖案row=int(input("請輸入行數(shù):"))col=int(input("請輸入列數(shù):"))foriinrange(row):forjinrange(col):print('*',end='')print()foriinrange(row):forjinrange(i+1):print('*',end='')print()3.3.3嵌套循環(huán)語句對外層循環(huán)的每一次迭代,內(nèi)層循環(huán)都要完成全部的迭代。內(nèi)層循環(huán)完成全部迭代的速度要比外層循環(huán)快。要想得到嵌套循環(huán)的總的迭代次數(shù),需要將每一層循環(huán)的迭代次數(shù)相乘。示例:打印圖案156print(“MultiplicationTable”)

print(“”,end=‘’)#空一行

forjinrange(1,9+1):

print("",j,"",end='')

print()

print("-----------------------------")foriinrange(1,9+1):

print(i,"|",end='')

forjinrange(1,9+1):

print(format(i*j,"3d"),end='')

print()示例:九九乘法表3.3.4跳出循環(huán)語句跳出整個循環(huán):breakbreak語句的作用是跳出整個循環(huán),并且break后面的語句都不執(zhí)行。跳過一輪循環(huán):continuecontinue語句作用是跳過一輪循環(huán),continue后面的語句不執(zhí)行。Python程序設(shè)計第4章函數(shù)和模塊第4章函數(shù)和模塊4.1引言4.2函數(shù)的基本概念4.3參數(shù)傳遞4.4參數(shù)類型4.5返回值4.6結(jié)構(gòu)化程序設(shè)計4.7命名空間與作用域4.8匿名函數(shù)4.9內(nèi)置函數(shù)4.10模塊4.11遞歸4.12在turtle中使用函數(shù)第4章函數(shù)和模塊4.1引言4.1引言函數(shù)是程序中執(zhí)行特定任務(wù)的一組語句。使用函數(shù)封裝每個任務(wù)所編寫的程序稱為模塊化程序。使用函數(shù)模塊化程序的好處:可讀性好代碼重用易于測試便于團(tuán)隊合作Python中的函數(shù)包括:內(nèi)置函數(shù)標(biāo)準(zhǔn)庫函數(shù)自定義函數(shù)第4章函數(shù)和模塊4.2函數(shù)的基本概念4.2函數(shù)的基本概念4.2.1函數(shù)的定義函數(shù)三要素:輸入、輸出和處理函數(shù)定義的一般形式:函數(shù)體中的所有語句具有相同的縮進(jìn)。def函數(shù)名(參數(shù)表):

函數(shù)體4.2函數(shù)的基本概念4.2.2函數(shù)的調(diào)用調(diào)用函數(shù)時,解釋器跳轉(zhuǎn)到該函數(shù),并執(zhí)行對應(yīng)語句塊中的語句。當(dāng)?shù)竭_(dá)語句塊的末尾時,解釋器跳回到當(dāng)初調(diào)用該函數(shù)的位置,并在該處恢復(fù)執(zhí)行。第4章函數(shù)和模塊4.3參數(shù)傳遞4.3參數(shù)傳遞形參:定義函數(shù)時,函數(shù)名后面的小括號內(nèi)的變量實參:調(diào)用函數(shù)時,函數(shù)名后面提供的值或變量不可變類型參數(shù):字符串、元組和數(shù)值。如果在函數(shù)內(nèi)部修改參數(shù)的值,則會生成一個新的對象,并不會影響到函數(shù)外變量的值。defchange(a):#這里a是形參,是不可變類型參數(shù)print(id(a))#指向的是同一個對象a=10print(id(a))#一個新對象a=1print(id(a))change(a)#這里a是實參###################################程序輸出4379369136437936913643793691244.3參數(shù)傳遞可變類型參數(shù):列表和字典。在函數(shù)內(nèi)修改可變類型參數(shù),函數(shù)外的對應(yīng)變量也會受影響。defchangeme(mylist):mylist.append([1,2,3,4])print("函數(shù)內(nèi)取值:",mylist)mylist=[10,20,30]changeme(mylist)print("函數(shù)外取值:",mylist)###################################程序輸出函數(shù)內(nèi)取值:[10,20,30,[1,2,3,4]]函數(shù)外取值:[10,20,30,[1,2,3,4]]第4章函數(shù)和模塊4.4參數(shù)類型4.4參數(shù)類型調(diào)用函數(shù)時,可使用的參數(shù)類型有:位置參數(shù)關(guān)鍵字參數(shù)默認(rèn)參數(shù)不定長參數(shù)4.4參數(shù)類型4.4.1位置參數(shù)也稱必須參數(shù),指參數(shù)必須以正確順序傳入函數(shù),調(diào)用時數(shù)量必須和聲明的數(shù)量一致。如果不一致,執(zhí)行后會出錯。例如:defprintme(str):print(str)#調(diào)用printme函數(shù),不加參數(shù)會報錯printme()###################################程序輸出Traceback(mostrecentcalllast):File"C:\programming\Python\test.py",line6,in<module>printme()TypeError:printme()missing1requiredpositionalargument:'str'4.4參數(shù)類型4.4.2關(guān)鍵字參數(shù)指在函數(shù)調(diào)用時通過傳遞參數(shù)名=傳遞參數(shù)值的形式來傳入?yún)?shù)。使用關(guān)鍵字參數(shù)允許函數(shù)調(diào)用時參數(shù)順序與聲明時不一致。defprintinfo(name,age):print("名字:",name)print("年齡:",age)printinfo(age=50,name="小明")###################################程序輸出名字:小明年齡:504.4參數(shù)類型4.4.3默認(rèn)參數(shù)定義函數(shù)時給參數(shù)賦默認(rèn)值,這個參數(shù)就成了默認(rèn)參數(shù)。調(diào)用函數(shù)時,默認(rèn)參數(shù)可以不寫,此時默認(rèn)參數(shù)會使用默認(rèn)值。defprintinfo(name,age=35):print("名字:",name)print("年齡:",age)#調(diào)用printinfo函數(shù)printinfo(age=50,name="lsy")print("------------------------")printinfo(name="lsy")###################################輸出結(jié)果名字:lsy年齡:50------------------------名字:lsy年齡:354.4參數(shù)類型可以將參數(shù)值變化小的設(shè)置為默認(rèn)參數(shù)。默認(rèn)參數(shù)一般是不可變對象。如果是可變對象,在多次調(diào)用函數(shù)時,默認(rèn)參數(shù)都指向同一對象。如果在函數(shù)內(nèi)改變了默認(rèn)參數(shù)的值,會在下次調(diào)用時使用上次默認(rèn)參數(shù)的結(jié)果。4.4參數(shù)類型4.4.4不定長參數(shù)如果一個函數(shù)能處理比聲明時更多的參數(shù),這些參數(shù)就叫做不定長參數(shù)。不定長參數(shù)在聲明時不會命名。不定長參數(shù)有兩種導(dǎo)入類型:元組形式:加一個*號的參數(shù)會以元組的形式導(dǎo)入,存放所有未命名的參數(shù)。例如:defprintinfo(arg1,*vartuple):print("輸出:")print(arg1)print(vartuple)#調(diào)用printinfo函數(shù)printinfo(70,60,50)###################################輸出結(jié)果70(60,50)4.4參數(shù)類型字典形式:加了兩個星號**的參數(shù)會以字典的形式導(dǎo)入。例如:defprintinfo(arg1,**vardict):print("輸出:")print(arg1)print(vardict)#調(diào)用printinfo函數(shù)printinfo(1,a=2,b=3)###################################輸出結(jié)果1{‘a(chǎn)’:2,’b’:3}4.4參數(shù)類型4.4.5命名關(guān)鍵字參數(shù)聲明函數(shù)時,參數(shù)中*可以單獨出現(xiàn)。若單獨出現(xiàn)*,*右側(cè)參數(shù)必須用關(guān)鍵字傳入。此時這些參數(shù)也叫命名關(guān)鍵字參數(shù)。例如:>>>deff(a,b,*,c):...returna+b+c...>>>f(1,2,3)#報錯Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>TypeError:f()takes2positionalargumentsbut3weregiven>>>f(1,2,c=3)#正常6>>>4.4參數(shù)類型4.4.5命名關(guān)鍵字參數(shù)聲明函數(shù)時,參數(shù)中*可以單獨出現(xiàn)。若單獨出現(xiàn)*,*右側(cè)參數(shù)必須用關(guān)鍵字傳入。此時這些參數(shù)也叫命名關(guān)鍵字參數(shù)。例如:>>>deff(a,b,*,c):...returna+b+c...>>>f(1,2,3)#報錯Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>TypeError:f()takes2positionalargumentsbut3weregiven>>>f(1,2,c=3)#正常6>>>4.4參數(shù)類型4.4.5命名關(guān)鍵字參數(shù)聲明函數(shù)時,參數(shù)中*可以單獨出現(xiàn)。若單獨出現(xiàn)*,*右側(cè)參數(shù)必須用關(guān)鍵字傳入。此時這些參數(shù)也叫命名關(guān)鍵字參數(shù)。例如:>>>deff(a,b,*,c):...returna+b+c...>>>f(1,2,3)#報錯 Traceback(mostrecentcalllast): File"<stdin>",li

溫馨提示

  • 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

提交評論