




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Python程序設(shè)計(jì)第1章計(jì)算機(jī)與編程基礎(chǔ)第1章計(jì)算機(jī)與編程基礎(chǔ)1.1導(dǎo)論1.2硬件與軟件1.3存儲(chǔ)數(shù)據(jù)1.4運(yùn)行程序1.5使用Python1.6總結(jié)第1章計(jì)算機(jī)與編程基礎(chǔ)1.1導(dǎo)論1.1程序計(jì)算機(jī)是可以被編程的;計(jì)算機(jī)可以完成程序告訴他們做的任何工作;程序:計(jì)算機(jī)完成某種任務(wù)時(shí)執(zhí)行的一組指令集合;程序通常也被稱為軟件;程序員:(經(jīng)過培訓(xùn)后)具備一個(gè)設(shè)計(jì),編寫和測(cè)試計(jì)算機(jī)程序技能的人員;程序員也可以被稱為軟件開發(fā)人員或軟件工程師;第1章計(jì)算機(jī)與編程基礎(chǔ)1.2硬件與軟件1.2硬件硬件:組成計(jì)算機(jī)的物理設(shè)備或組件;計(jì)算機(jī)是一個(gè)由多個(gè)設(shè)備組成,能夠協(xié)同工作的系統(tǒng);最典型的組件;中央處理器(CPU);內(nèi)存;輔助存儲(chǔ)設(shè)備;輸入,輸出設(shè)備;1.2中央處理器(一)中央處理器(CPU):是計(jì)算機(jī)中實(shí)際運(yùn)行程序設(shè)備;最重要的設(shè)備,沒有之一;沒有中央處理器(CPU),計(jì)算機(jī)將無法運(yùn)行軟件;曾經(jīng)是巨型設(shè)備;1.2中央處理器(二)中央處理器(CPU)發(fā)展的歷程;真空管(1957年以前);晶體管(1958-1963年);集成電路(1964-1969年);大規(guī)模集成電路(1970年以后);微處理器:如今CPU是被稱為微處理器的小芯片;1.2內(nèi)存內(nèi)存:是計(jì)算機(jī)在程序運(yùn)行時(shí)存儲(chǔ)程序代碼以及程序正在處理數(shù)據(jù)的地方;內(nèi)存通常被稱為隨機(jī)存取儲(chǔ)存器(RAM);CPU能快速訪問存儲(chǔ)在RAM中任意位置的數(shù)據(jù);RAM通常時(shí)一種易失性內(nèi)存,僅在程序運(yùn)行時(shí)用于臨時(shí)存儲(chǔ);計(jì)算機(jī)關(guān)閉時(shí),RAM的內(nèi)容將被刪除;1.2輔助存儲(chǔ)設(shè)備輔組存儲(chǔ)(簡(jiǎn)稱輔存):可以長(zhǎng)時(shí)間保存數(shù)據(jù),即使在計(jì)算機(jī)關(guān)閉時(shí),任能保存數(shù)據(jù);程序通常存儲(chǔ)在輔存中,并根據(jù)需要加載到內(nèi)存中;輔助存儲(chǔ)設(shè)備的種類;磁盤驅(qū)動(dòng)器(簡(jiǎn)稱硬盤):傳統(tǒng)的硬盤(HDD)將數(shù)據(jù)通過磁編碼寫入旋轉(zhuǎn)的圓盤上存儲(chǔ);固態(tài)驅(qū)動(dòng)器(也稱固態(tài)硬盤):固態(tài)硬盤(SSD)不存在移動(dòng)的部件,運(yùn)行速度比傳統(tǒng)硬盤快;USB驅(qū)動(dòng)器(閃存):是插入計(jì)算機(jī)USB(通用串行總線)端口的小型設(shè)備,攜帶方便,數(shù)據(jù)存儲(chǔ)在稱為閃存的特殊類型存儲(chǔ)器上;光學(xué)設(shè)備:如CD(光盤)和DVD(數(shù)字多功能磁盤),數(shù)據(jù)通過一系列凹坑儲(chǔ)存在光盤上,光驅(qū)通過激光檢測(cè)凹坑讀取編碼數(shù)據(jù);1.2輸入設(shè)備輸入:指計(jì)算機(jī)從人和其他設(shè)備手機(jī)的任何數(shù)據(jù);輸入設(shè)備:收集數(shù)據(jù)并將其發(fā)送到計(jì)算機(jī)系統(tǒng)的設(shè)備稱為輸入設(shè)備;例如,鍵盤,鼠標(biāo),掃描儀,麥克風(fēng)和數(shù)碼相機(jī);磁盤驅(qū)動(dòng)器和光盤驅(qū)動(dòng)器也可以被視為輸入設(shè)備,因?yàn)槌绦蚝蛿?shù)據(jù)從它們中獲取并加載到計(jì)算機(jī)的內(nèi)存中;1.2輸出設(shè)備輸出:是指計(jì)算機(jī)為人或其他設(shè)備生成的數(shù)據(jù);輸出可以是文本,圖像,音頻,或者是比特流(一串二進(jìn)制代碼);輸出設(shè)備:能格式化和顯示計(jì)算機(jī)生成數(shù)據(jù)的設(shè)備;例如,顯示器和打印機(jī);磁盤驅(qū)動(dòng)器和CD刻錄機(jī)也可以被視為輸出設(shè)備,因?yàn)橛?jì)算機(jī)系統(tǒng)將數(shù)據(jù)發(fā)送給它們以便保存;1.2軟件從打開電源到關(guān)閉系統(tǒng),計(jì)算機(jī)所有的操作都由軟件控制;軟件一般分為一下兩類;例如,顯示器和打印機(jī);系統(tǒng)軟件;應(yīng)用軟件;1.2系統(tǒng)軟件控制和管理計(jì)算機(jī)基本操作的程序稱為系統(tǒng)軟件;操作系統(tǒng):控制,管理計(jì)算機(jī)中所有硬件的運(yùn)行;在臺(tái)式機(jī)和筆記本電腦中的操作系統(tǒng)如Windows,MacOS,Linux,移動(dòng)設(shè)備的操作系統(tǒng)如Android,iOS;實(shí)用工具:執(zhí)行專門的任務(wù),輔助計(jì)算機(jī)的運(yùn)行或保護(hù)數(shù)據(jù);如殺毒軟件(McAfee),解壓縮軟件(winrar),數(shù)據(jù)備份軟件;軟件開發(fā)工具:程序員用來創(chuàng)建,修改和測(cè)試軟件的程序,如編譯程序,解釋程序;1.2應(yīng)用軟件使計(jì)算機(jī)處理日常工作的程序稱為應(yīng)用軟件;例如,文字處理程序(WPSWord),網(wǎng)頁(yè)瀏覽器(Chrome,F(xiàn)irefox),游戲程序(Dota2,LOL,PUBG)等;第1章計(jì)算機(jī)與編程基礎(chǔ)1.3存儲(chǔ)數(shù)據(jù)1.3計(jì)算機(jī)如何存儲(chǔ)數(shù)據(jù)?存儲(chǔ)在計(jì)算機(jī)中的所有數(shù)據(jù)都被轉(zhuǎn)換為0和1的序列;字節(jié):1字節(jié)的內(nèi)存只夠存儲(chǔ)字母或者小數(shù)字;每個(gè)字節(jié)被分成8個(gè)位(比特);位(比特):將其看作能保持正電荷或負(fù)電荷的電氣元件,如可以開/關(guān)的微小開關(guān);字節(jié)中位(比特)的開/關(guān)模式表示存儲(chǔ)在字節(jié)中的數(shù)據(jù);1.3存儲(chǔ)數(shù)字(一)位(比特)有兩個(gè)取值,分別是0和1;計(jì)算機(jī)使用二進(jìn)制編碼系統(tǒng);二進(jìn)制數(shù)中每個(gè)進(jìn)位都代表一個(gè)值,從最右邊往左,進(jìn)位的值費(fèi)別為1,2,4,8等;要確定二進(jìn)制數(shù)的值,只需將所有值為1的進(jìn)位值相加;1.3存儲(chǔ)數(shù)字(二)一個(gè)字節(jié)的存儲(chǔ)的數(shù)字大小范圍為0到255;0表示所有位(比特)都是關(guān)(00000000),255表示所有位(比特)都是開(11111111);為了存儲(chǔ)更大的數(shù)字,我們需要使用多個(gè)字節(jié);1.3存儲(chǔ)字符(一)存儲(chǔ)在計(jì)算機(jī)內(nèi)存中的任何數(shù)據(jù)都必須作為二進(jìn)制數(shù)存儲(chǔ);一個(gè)字符被存儲(chǔ)在內(nèi)存中時(shí),它首先被轉(zhuǎn)換成一個(gè)數(shù)字編碼,在把數(shù)字編碼轉(zhuǎn)化為二進(jìn)制數(shù)存儲(chǔ)在內(nèi)存中;最重要的編碼方案稱為美國(guó)信息交換標(biāo)準(zhǔn)碼(ASCII),例如A的ASCII碼是65;ASCII只定義了128個(gè)字符的數(shù)字編碼;Unicode編碼方案與ASCII兼容,也可以表示世界上許多語言的字符1.3存儲(chǔ)字符(二)計(jì)算機(jī)使用編碼方案和二進(jìn)制編號(hào)系統(tǒng)也能將負(fù)數(shù)和實(shí)數(shù)存儲(chǔ)在內(nèi)存中;負(fù)數(shù)使用二進(jìn)制補(bǔ)碼即使進(jìn)行編碼;實(shí)數(shù)使用浮點(diǎn)符號(hào)進(jìn)行編碼;1.3其他類型數(shù)據(jù)數(shù)字設(shè)備是可以與二進(jìn)制數(shù)據(jù)一起工作的任何設(shè)備,以二進(jìn)制形式存儲(chǔ)的數(shù)據(jù)可以用來描述任何事物;數(shù)字圖像由被稱為像素(圖像的元素)的小點(diǎn)構(gòu)成;圖像中的每個(gè)像素點(diǎn)都轉(zhuǎn)換為代表像素的顏色的一個(gè)二進(jìn)制數(shù)存儲(chǔ)在內(nèi)存中;數(shù)字歌曲由被稱為樣本的小塊構(gòu)成;每個(gè)樣本都被轉(zhuǎn)換成一個(gè)二進(jìn)制數(shù)存儲(chǔ)在內(nèi)存中,歌曲分成的樣本越多,播放時(shí)聽起來就越像原始音樂;第1章計(jì)算機(jī)與編程基礎(chǔ)1.4運(yùn)行程序1.4程序如何運(yùn)行?(一)CPU被設(shè)計(jì)用于對(duì)數(shù)據(jù)執(zhí)行簡(jiǎn)單的操作,比如;從內(nèi)存中讀取數(shù)據(jù),將兩個(gè)數(shù)相加、相減、相乘、相除;理解由機(jī)器語言編寫的指令及指令集(每個(gè)不用品牌的CPU都有自己獨(dú)特的指令集),機(jī)器語言指令總是二進(jìn)制的;因?yàn)镃PU只知道如何執(zhí)行最基本的操作,所以為了完成一項(xiàng)任務(wù)需要CPU執(zhí)行許多操作才行;1.4程序如何運(yùn)行?(二)程序存儲(chǔ)在輔存中,每次CPU執(zhí)行時(shí)都必須將其復(fù)制到內(nèi)存中;1.4程序如何運(yùn)行?(三)當(dāng)CPU執(zhí)行一個(gè)程序中的指令時(shí),進(jìn)行讀取-解析-執(zhí)行的指令周期過程;讀?。簩⑾乱粭l待執(zhí)行的指令從內(nèi)存中讀取到CPU中;解析:CPU解析剛從內(nèi)存中取出的指令,以確認(rèn)接下來應(yīng)該執(zhí)行的操作;執(zhí)行:執(zhí)行操作;1.4從機(jī)器語言到匯編語言(一)使用機(jī)器語言來編寫程序是不切實(shí)際的(編寫二進(jìn)制代碼非常煩瑣和耗時(shí));匯編語言:不使用二進(jìn)制數(shù)來表示指令,而使用稱為助記符的縮寫來表示指令,從而也簡(jiǎn)化,方便了程序員的工作;add表示數(shù)據(jù)相加;mul表示數(shù)據(jù)相乘;mov表示將值移動(dòng)到內(nèi)存中的指定位置;1.4從機(jī)器語言到匯編語言(二)匯編器:將匯編語言程序翻譯成CPU可直接執(zhí)行的機(jī)器語言程序;匯編語言的缺點(diǎn):與機(jī)器語言一樣,必須對(duì)CPU的硬件結(jié)構(gòu)和工作原理有一定的了解,最簡(jiǎn)單的程序也要編寫大量匯編語言指令;1.4高級(jí)語言低級(jí)語言:類似于匯編語言之類的都稱為低級(jí)語言,低級(jí)語言都是機(jī)器語言的直接替代品,其本質(zhì)是上與機(jī)器語言非常接近的語言;高級(jí)語言:允許程序員專注于想要用程序執(zhí)行的任務(wù),而不是CPU如何執(zhí)行這些程序的細(xì)節(jié),同時(shí)也允許編寫功能強(qiáng)大且復(fù)雜的程序;無需知道CPU如何工作,也無需編寫大量的低級(jí)指令;大多高級(jí)語言使用易于理解的詞語;從某種程度上說,機(jī)器語言和匯編語言都是一種機(jī)器友好型的語言,而高級(jí)語言則是人類友好型的語言;1.4關(guān)鍵字,操作符和語法關(guān)鍵字:在高級(jí)語言中用來編寫程序的預(yù)定義字;每個(gè)關(guān)鍵字都有特定的意義;操作符:在高級(jí)語言程序中用來對(duì)數(shù)據(jù)執(zhí)行各種操作;算數(shù)運(yùn)算符、關(guān)系運(yùn)算符等;語法:編寫程序時(shí)必須嚴(yán)格遵循的一組規(guī)則;語句:高級(jí)語言中用于編寫程序的單個(gè)指令;1.4編譯器和解釋器(一)使用高級(jí)語言編寫的程序必須翻譯成機(jī)器語言才能被執(zhí)行;編譯器;解釋器;1.4編譯器和解釋器(二)編譯器:將高級(jí)語言程序轉(zhuǎn)換為獨(dú)立機(jī)器語言程序的程序;轉(zhuǎn)換后的機(jī)器語言程序可以隨時(shí)執(zhí)行;1.4編譯器和解釋器(三)解釋器:翻譯件并執(zhí)行高級(jí)語言程序的特殊程序;讀取程序中的每條獨(dú)立指令后,會(huì)將其轉(zhuǎn)換為機(jī)器語言指令,然后立即執(zhí)行它們;不斷重復(fù)上面的過程執(zhí)行程序中的每個(gè)指令;解釋器將翻譯和執(zhí)行兩個(gè)過程合并在一起完成,不會(huì)創(chuàng)建獨(dú)立的機(jī)器語言程序;1.4編譯器和解釋器(四)源代碼:高級(jí)語言編寫的語句;語法錯(cuò)誤:在源代碼中,不嚴(yán)格遵循語法而出現(xiàn)的能阻止程序被翻譯的錯(cuò)誤;第1章計(jì)算機(jī)與編程基礎(chǔ)1.5使用Python1.5Python在運(yùn)行Python程序之前,我們必須在確保Python已安裝在計(jì)算機(jī)上且正確配置;下載地址:/downloads/在安裝Pyhton時(shí),安裝的其中一項(xiàng)就是Python解釋器;Python解釋器可以在兩種模式下使用:交互模式:在此模式下,Python解釋器等待鍵盤上輸入的Pyhton語句。一旦輸入一條語句,解釋器就是執(zhí)行它,然后等待輸入下一條語句;腳本模式:將Pyhton語句寫入并保存在Python腳本中,解釋器讀取Python腳本中的每個(gè)語句并執(zhí)行;1.5交互模式首先打開操作系統(tǒng)的命令行,然后輸入python,即啟動(dòng)了Python的交互模式,我們將看到如下提示;表示解釋器正在等待鍵入Python語句;在執(zhí)行完上一條語句后,提示符>>>將重新出現(xiàn);如果鍵入的語句不正確,則顯示錯(cuò)誤消息;交互模式是學(xué)習(xí)Python新知識(shí)的好方法;1.5在腳本模式下編寫和運(yùn)行Python程序(一)在交互模式輸入的Python語句不會(huì)另存為程序,交互模式下Python語句只是簡(jiǎn)單的被執(zhí)行且將結(jié)果顯示在屏幕上;如果想創(chuàng)建Python程序,我們可以使用腳本模式;在腳本中保存一組Python語句;Python腳本文件的擴(kuò)展名為.py;若要運(yùn)行Python腳本,先在操作系統(tǒng)命令行中進(jìn)入保存腳本的路徑,然后輸入以下命令,1.5在腳本模式下編寫和運(yùn)行Python程序(二)首先打開文本編輯器,在其中輸入如下,然后保存該文件腳本,并命名為test.py;再打開操作系統(tǒng)的命令行,使用cd命令進(jìn)入test.py的路徑,比如,最后,在正確的文件路徑下,使用python命令解釋并運(yùn)行test.py腳本,如下,1.5集成開發(fā)環(huán)境除了在交互模式和腳本模式啟動(dòng)Python解釋器以外,還有另外一種方式編寫,執(zhí)行和測(cè)試Pyhton程序,即使用集成開發(fā)環(huán)境IDE;IDE是一個(gè)提供編寫,執(zhí)行和測(cè)試程序所需的所有工具的程序;PyCharm和JupyterNotebook都是比較主流的PythonIDE;在IDE中,關(guān)鍵詞和程序其他部分以獨(dú)特的顏色顯示,易于程序的閱讀;第1章計(jì)算機(jī)與編程基礎(chǔ)1.6總結(jié)1.5總結(jié)本章所包含的內(nèi)容有:計(jì)算機(jī)的主要硬件設(shè)備;軟件的類型;如何在計(jì)算機(jī)中存儲(chǔ)數(shù)據(jù);CPU的基本操作和機(jī)器語言;讀取-解析-操作的指令周期;如何將低級(jí)語言和高級(jí)語言翻譯成機(jī)器語言;Python的安裝及Python的解釋器模式;Python程序設(shè)計(jì)第2章Python基礎(chǔ)第2章Python基礎(chǔ)1.1Python基本類型1.2Python基本運(yùn)算1.3常量與變量1.4輸入輸出及處理1.5注釋1.6turtle庫(kù)簡(jiǎn)介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)境中或腳本中獲得該對(duì)象的類型信息2.1Python數(shù)據(jù)類型表2-2類型轉(zhuǎn)換函數(shù)2.2Python基本運(yùn)算1、算術(shù)運(yùn)算表2-3算術(shù)運(yùn)算2.2Python基本運(yùn)算1、算術(shù)運(yùn)算各運(yùn)算符的優(yōu)先級(jí)2.2Python基本運(yùn)算2、關(guān)系運(yùn)算表2-4關(guān)系運(yùn)算符2.2Python基本運(yùn)算3、邏輯運(yùn)算表2-5邏輯運(yùn)算符2.2Python基本運(yùn)算3、邏輯運(yùn)算交互模式下,邏輯運(yùn)算測(cè)試如下:2.3常量和變量1、常量:在程序運(yùn)行期間其值固定不變的量(如圓周率π)2、變量:引用計(jì)算機(jī)內(nèi)存中特定位置所存儲(chǔ)值的名稱2.3常量和變量變量命名規(guī)則:(1)字符組成:變量名應(yīng)由字母、數(shù)字和下劃線組成,且首字符不得為數(shù)字。(2)下劃線的使用:為提高可讀性,推薦使用下劃線分隔單詞,如student_age而非studentage。(3)大小寫敏感:Python區(qū)分大小寫,Name、name、NAME被視為三個(gè)不同變量。2.3常量和變量變量命名規(guī)則:(4)避免關(guān)鍵字與函數(shù)名:確保變量名不與Python的保留關(guān)鍵字(如表3-6)或內(nèi)置函數(shù)名沖突,以免引發(fā)語法錯(cuò)誤。(5)命名規(guī)范:變量名應(yīng)簡(jiǎn)短且富有描述性,如age優(yōu)于s,student_name比s_n更能明確表達(dá)其意。(6)易混淆字符警告:避免使用容易與數(shù)字混淆的字符,如l(與1相似)和O(與0相似)作為變量名開頭,以減少視覺誤解。2.4輸入輸出及處理計(jì)算機(jī)程序執(zhí)行的處理通常分為以下三個(gè)步驟:(1)接收輸入;(2)對(duì)輸入進(jìn)行某種處理;(3)產(chǎn)生輸出。2.4輸入輸出及處理1、print()函數(shù)顯示輸出(1)輸出單一值2.4輸入輸出及處理1、print()函數(shù)顯示輸出(2)輸出變量2.4輸入輸出及處理1、print()函數(shù)顯示輸出(3)輸出多個(gè)值2.4輸入輸出及處理1、print()函數(shù)顯示輸出(4)定制輸出格式2.4輸入輸出及處理2、input()函數(shù)接收輸入input()函數(shù)是Python中用于接收用戶鍵盤輸入的內(nèi)置函數(shù)#簡(jiǎn)單獲取用戶輸入并打印message=input("請(qǐng)輸入一些文字:")print("你輸入的是:",message)#獲取數(shù)值輸入并進(jìn)行數(shù)學(xué)運(yùn)算num1=int(input("請(qǐng)輸入第一個(gè)數(shù)字:"))num2=int(input("請(qǐng)輸入第二個(gè)數(shù)字:"))sum=num1+num2print("兩數(shù)之和為:",sum)2.4輸入輸出及處理2、input()函數(shù)接收輸入input()函數(shù)是Python中用于接收用戶鍵盤輸入的內(nèi)置函數(shù)#簡(jiǎn)單獲取用戶輸入并打印radius=float(input("請(qǐng)輸入圓的半徑:"))#獲取浮點(diǎn)數(shù)輸入area=3.14*radius**2print("圓的面積為:",area)expression=eval(input(‘請(qǐng)輸入表達(dá)式3+4并計(jì)算:’))print(‘3+4=’,expression)2.4輸入輸出及處理2、input()函數(shù)接收輸入#提示用戶輸入多個(gè)以空格分隔的字符串myString=input("請(qǐng)輸入三個(gè)以空格分隔的字符串:")#使用split()方法按空格分割字符串,得到三個(gè)字符串對(duì)象str1,str2,str3=myString.split()#打印出分割后的每個(gè)字符串print(str1,str2,str3,sep=’\n’)2.4輸入輸出及處理2、input()函數(shù)接收輸入#提示用戶輸入多個(gè)以逗號(hào)分隔的整數(shù)myInteger=input("請(qǐng)輸入三個(gè)以逗號(hào)分隔的整數(shù):")#使用split()方法按逗號(hào)分割字符串,得到三個(gè)整數(shù)對(duì)象a,b,c=map(int,myInteger.split(‘,’))#打印出分割后的每個(gè)整數(shù)print(a,b,c,sep=’\n’)#如果多個(gè)數(shù)值之間以逗號(hào)隔開,上一功能也可以用如下代碼分割a1,b1,c1=eval(myInteger)#打印出分割后的每個(gè)整數(shù)print(a1,b1,c1,sep=’\n’)2.4輸入輸出及處理3、應(yīng)用實(shí)例【例2-1】編寫一個(gè)計(jì)算身體質(zhì)量指數(shù)BMI的程序。用戶輸入身高和體重的值,計(jì)算并輸出身體質(zhì)量指數(shù)BMI的值。name=input()print("你好!"+name)height=float(input("請(qǐng)輸入你的身高(m):"))weight=float(input("請(qǐng)輸入你的體總(kg):"))bmi=weight/height**2print("你的BMI的數(shù)值為:",bmi)2.4輸入輸出及處理3、應(yīng)用實(shí)例【例2-1】編寫一個(gè)計(jì)算身體質(zhì)量指數(shù)BMI的程序。用戶輸入身高和體重的值,計(jì)算并輸出身體質(zhì)量指數(shù)BMI的值。2.4輸入輸出及處理3、應(yīng)用實(shí)例【例2-2】編寫一個(gè)程序,提示用戶輸入球的半徑,計(jì)算并輸出球的體積。#這是一個(gè)求球體積的程序。radius=float(input('請(qǐng)輸入球的半徑:'))pi=3.14volume=4/3*pi*radius**3print('球的體積為:',volume)2.4輸入輸出及處理3、應(yīng)用實(shí)例【例2-2】編寫一個(gè)程序,提示用戶輸入球的半徑,計(jì)算并輸出球的體積。2.4輸入輸出及處理3、應(yīng)用實(shí)例【例2-3】在同一行依次輸入三個(gè)值a,b,c,用空格分開,輸出的值。a,b,c=map(int,input().split(''))print(b**2-4*a*c)2.4輸入輸出及處理4、格式化輸出Python提供的三種格式化輸出技術(shù):百分號(hào)(%)格式化format()方法f-string(格式化字符串字面量)2.4輸入輸出及處理4、格式化輸出(1)百分號(hào)(%)格式化1)基本格式化符號(hào)(1)%s-用于字符串或者任何可轉(zhuǎn)換為字符串的對(duì)象。>>>print("名字:%s"%"張三")名字:張三(2)%d-用于整數(shù)。>>>print("年齡:%d"%25)年齡:252.4輸入輸出及處理4、格式化輸出(1)百分號(hào)(%)格式化1)基本格式化符號(hào)(3)%f-用于浮點(diǎn)數(shù),默認(rèn)保留六位小數(shù)。>>>print("成績(jī):%f"%98.6)成績(jī):98.600000若要限制小數(shù)位數(shù),可以在%f后加點(diǎn)和數(shù)字,如%.2f保留兩位小數(shù)。>>>print("成績(jī):%.2f"%98.6)成績(jī):98.602.4輸入輸出及處理4、格式化輸出(1)百分號(hào)(%)格式化1)基本格式化符號(hào)(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)高級(jí)用法(1)寬度和對(duì)齊:可以在類型代碼前指定寬度和對(duì)齊方式。默認(rèn)右對(duì)齊,加-表示左對(duì)齊,例如:>>>print("編號(hào):%5d"%42)#右對(duì)齊,總寬度5編號(hào):42>>>print("編號(hào):%-5d"%42)#左對(duì)齊,總寬度5編號(hào):42(2)精度:對(duì)于浮點(diǎn)數(shù),可以在%f之后指定精度(小數(shù)點(diǎn)后的位數(shù)),例如:>>>print("價(jià)格:%.2f"%3.14159)價(jià)格:3.142.4輸入輸出及處理4、格式化輸出2)高級(jí)用法【例2-4】定義一個(gè)人的基本信息(包括姓名、年齡和身高),并以格式化的方式輸出這些信息。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)用:精確控制浮點(diǎn)數(shù)顯示>>>print(format(12345.6789,'.2f'))12345.68'.2f'指定輸出為浮點(diǎn)數(shù)形式,并保留兩位小數(shù)。2)科學(xué)計(jì)數(shù)法與逗號(hào)分隔(1)科學(xué)計(jì)數(shù)法:>>>print(format(12345.6789,'e'))1.234568e+042.4輸入輸出及處理4、格式化輸出(2)內(nèi)置的format()函數(shù)(自Python2.6起被引入)(1)科學(xué)計(jì)數(shù)法>>>print(format(12345.6789,'.2e'))1.23e+04(2)插入逗號(hào)分隔符>>>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('北京','中國(guó)'))中國(guó)的首都是北京,我是中國(guó)人2.4輸入輸出及處理4、格式化輸出(3)f-string(格式化的字符串文本)(Python3.6及以上版本引入)1)占位符表達(dá)式name='Alice'age=30print(f"Mynameis{name}andIam{age-5}yearsold.")運(yùn)行結(jié)果:MynameisAliceandIam25yearsold.2.4輸入輸出及處理4、格式化輸出(3)f-string(格式化的字符串文本)(Python3.6及以上版本引入)2)格式化數(shù)值value=3.14159print(f"Thevalueis{value:.2f}.")運(yùn)行結(jié)果:Thevalueis3.143)插入逗號(hào)分隔符number=123456789print(f"Numberwithcommas:{number:,}")Numberwithcommas:123,456,7892.4輸入輸出及處理4、格式化輸出4)百分?jǐn)?shù)形式percentage=0.25print(f"{percentage:.0%}complete.")運(yùn)行結(jié)果:25%complete.5)科學(xué)計(jì)數(shù)法sci_num=123456789print(f"Scientificnotation:{sci_num:.2e}")運(yùn)行結(jié)果:Scientificnotation:1.23e+082.4輸入輸出及處理4、格式化輸出6)指定最小域?qū)捄蛯?duì)齊方式width=10num=42print(f"Widthspecified:{num:<{width}}.")運(yùn)行結(jié)果:Widthspecified:42.#42后面填充有8個(gè)空格2.4輸入輸出及處理4、格式化輸出7)指示符的順序在f-string中,多個(gè)指示符的正確順序:[對(duì)齊][寬度][,][.][精度][數(shù)值類型]1num=123.4562print(f"Customorder:{num:<10.2f}.")運(yùn)行結(jié)果:Customorder:123.46.如果上面的第2行代碼改為:print(f"Customorder:{num:10<.2f}.")則運(yùn)行結(jié)果:ValueError:Invalidformatspecifier2.5注釋(1)行注釋#在Python中,注釋前面必須放一個(gè)#號(hào)。Python解釋器看到#號(hào)后,它將忽略掉從#號(hào)開始到本行結(jié)束的所有內(nèi)容。把注釋寫在出現(xiàn)在代碼行末尾的注釋稱為行末注釋。它是專門解釋所在行的代碼。2.5注釋(2)段注釋'''Python的段注釋使用一對(duì)三引號(hào)('''或""")把需要注釋的段落括起來。使用PyCharm這樣的集成開發(fā)環(huán)境(IDE)時(shí),選中需要注釋的語句,再按快捷鍵"ctrl+/"可以把所選中的語句一起注釋。再按一次"ctrl+/",可以取消剛才的注釋。2.6turtle庫(kù)簡(jiǎn)介1、模塊導(dǎo)入標(biāo)準(zhǔn)導(dǎo)入方式為:importturtle為了簡(jiǎn)化后續(xù)調(diào)用,可賦予該模塊一個(gè)別名:importturtleast采用從模塊中導(dǎo)入所有函數(shù)方式,以直接調(diào)用函數(shù)而無需前綴模塊名:fromturtleimport*但請(qǐng)注意:這種導(dǎo)入方式可能會(huì)導(dǎo)致命名空間沖突,故在編寫復(fù)雜程序時(shí)應(yīng)謹(jǐn)慎使用。2.6turtle庫(kù)簡(jiǎn)介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庫(kù)簡(jiǎn)介3、畫筆操作2.6turtle庫(kù)簡(jiǎn)介4、turtle中的繪圖命令(見表2-8,2-9,2-10)2.6turtle庫(kù)簡(jiǎn)介5、turtle繪圖實(shí)例【例2-5】繪制五角星,并在下面書寫“愛國(guó)心”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庫(kù)簡(jiǎn)介5、turtle繪圖實(shí)例turtle.right(144)turtle.forward(100)turtle.end_fill()turtle.penup()turtle.goto(-10,-60)turtle.pendown()font_style=("Arial",24,"bold")turtle.write(“愛國(guó)心”,align="center",font=font_style)turtle.hideturtle()turtle.done()2.6turtle庫(kù)簡(jiǎn)介5、turtle繪圖實(shí)例【例2-5】繪制五角星,并在下面書寫“愛國(guó)心”2.6turtle庫(kù)簡(jiǎn)介5、turtle繪圖實(shí)例【例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庫(kù)簡(jiǎn)介5、turtle繪圖實(shí)例【例2-6】設(shè)置畫布大小為300x300像素,繪制彩色環(huán)形圖案,并在中央顯示文字“CUZ”。2.6turtle庫(kù)簡(jiǎn)介5、turtle繪圖實(shí)例【例2-7】繪制一個(gè)貪吃蛇形狀的圖案。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庫(kù)簡(jiǎn)介5、turtle繪圖實(shí)例【例2-7】繪制一個(gè)貪吃蛇形狀的圖案。主講教師:?jiǎn)?/p>
位:Python程序設(shè)計(jì)基礎(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ī)器龜圖形庫(kù)3.1控制結(jié)構(gòu)1.控制結(jié)構(gòu):為了控制一級(jí)語句的執(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)的特點(diǎn)是:程序從入口點(diǎn)a開始,按語句的順序執(zhí)行所有操作,直到出口點(diǎn)b處,所以稱為順序結(jié)構(gòu)。選擇結(jié)構(gòu)(selectionstructure)decisionstructure它需要根據(jù)某一特定的條件選擇其中的一個(gè)分支執(zhí)行。選擇結(jié)構(gòu)有單選擇、雙選擇和多選擇三種形式。循環(huán)結(jié)構(gòu)(repetitionstructure)表示程序反復(fù)執(zhí)行某個(gè)或某些操作,直到某條件為假(或?yàn)檎妫r(shí)才可終止循環(huán)。3.1控制結(jié)構(gòu)示例:計(jì)算貸款支付額第1階段:需求分析必須由用戶鍵入利率、貸款數(shù)以及貸款的年限必須計(jì)算出每月還貸和總還款數(shù)第2階段:系統(tǒng)分析輸出是月供和總還款數(shù),可以通過下面的公式來獲?。?/p>
示例:計(jì)算貸款支付額第3階段:系統(tǒng)設(shè)計(jì)第1步:提示用戶輸入年利率、貸款年限和總貸款數(shù)目第2步:輸入的年利率是百分比格式的數(shù)字,除以100轉(zhuǎn)換為小數(shù),再除以12得到月利率。第3步:使用公式計(jì)算月供第4步:通過將月供乘以12再乘以貸款年限求出總還款總額。第5步:顯示月供和還款總額。示例:計(jì)算貸款支付額第4階段:實(shí)現(xiàn)過程編寫代碼,其中要寫成:(1+月利率)**(年限*12)第5階段:測(cè)試過程利用幾組樣本輸入數(shù)據(jù)來驗(yàn)證輸出是否正確順序結(jié)構(gòu):程序流程圖輸入年利率輸入年數(shù)輸入總貸款額計(jì)算月利率
計(jì)算月供
計(jì)算總還款數(shù)
輸出結(jié)果開始結(jié)束代碼示例:#計(jì)算貸款支付額#輸入年利率,如7.25annualInterestRate=eval(input("輸入年利率:"))#輸入年數(shù)numberOfYears=eval(input("輸入年數(shù):"))#輸入總貸款額loanAmount=eval(input("輸入總貸款額:"))#計(jì)算月利率monthlyInterestRate=annualInterestRate/1200#計(jì)算月供monthlyPayment=(loanAmount*monthlyInterestRate)/\(1-1/(1+monthlyInterestRate)**(numberOfYears*12))#計(jì)算總還款數(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),在人生的道路上也不會(huì)一直是一條直道,會(huì)面臨著很多的選擇,但只要你認(rèn)準(zhǔn)了方向,做你認(rèn)為正確的選擇,勇往直前,就一定能到達(dá)你的目標(biāo)。注:max=aifa>belseb這是一種類似于其它編程語言中三目運(yùn)算符?:的寫法。Python是一種極簡(jiǎn)主義的編程語言,它沒有引入?:這個(gè)新的運(yùn)算符,而是使用已有的ifelse關(guān)鍵字來實(shí)現(xiàn)相同的功能。3.3.1單分支選擇結(jié)構(gòu)格式:
if條件:
語句塊1#分支語句塊,書寫時(shí)必須縮進(jìn)。語句塊1條件TrueFalse只有一條選擇執(zhí)行的路徑,如果條件不是True,退出結(jié)構(gòu)3.3.1單分支選擇結(jié)構(gòu)一個(gè)基本的條件語句由一個(gè)關(guān)鍵字if開頭,跟上一個(gè)表示條件的邏輯表達(dá)式,然后是一個(gè)冒號(hào):。從下一行開始,所有縮進(jìn)了的語句就是當(dāng)條件成立(邏輯表達(dá)式計(jì)算的結(jié)果為True)的時(shí)候要執(zhí)行的語句。如果條件不成立,就跳過這些語句不執(zhí)行,而繼續(xù)下面的其他語句。3.3.1單分支選擇結(jié)構(gòu)3.3.1單分支選擇結(jié)構(gòu)(1)輸入一個(gè)學(xué)生的成績(jī),判斷其是否及格了輸入成績(jī)scorescore>=60YN輸出及格了結(jié)束開始3.3.1單分支選擇結(jié)構(gòu)score=int(input("請(qǐng)輸入分?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時(shí)執(zhí)行z=200 #書寫縮進(jìn),當(dāng)x>20時(shí)執(zhí)行print(y+z) #if語句后續(xù)的語句3.3.2雙分支選擇結(jié)構(gòu)(2)輸入一個(gè)學(xué)生的成績(jī),判斷其是及格還是不及格輸入成績(jī)scorescore>=60YN輸出及格了結(jié)束開始輸出不及格3.3.2雙分支選擇結(jié)構(gòu)格式:if條件:
語句塊1#條件成立時(shí)執(zhí)行。else:
語句塊2#條件不成立時(shí)執(zhí)行。if-else的流程圖
語句塊1條件TrueFalse語句塊23.3.2雙分支選擇結(jié)構(gòu)score=int(input("請(qǐng)輸入分?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個(gè)數(shù)的大小語句塊2(條件不成立時(shí)執(zhí)行)語句塊1(條件成立時(shí)執(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ù)需要可以插入多個(gè)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)輸入一個(gè)學(xué)生的成績(jī),判斷其是優(yōu)秀、良好、中等、及格還是不及格3.3.3多分支選擇結(jié)構(gòu)score=int(input("請(qǐng)輸入分?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)和同列的最近那個(gè)if匹配。編寫嵌套的if語句時(shí)應(yīng)遵守下列規(guī)則:確保每一個(gè)else從句都與它對(duì)應(yīng)的if從句對(duì)齊。確保每一個(gè)語句塊內(nèi)的語句都保持一致的縮進(jìn)3.3.4嵌套的選擇結(jié)構(gòu)score=int(input("請(qǐng)輸入分?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í)行某些語句。示例:計(jì)算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指出程序中的錯(cuò)誤3.3.1while循環(huán)語句while循環(huán)也稱為先測(cè)試循環(huán),一個(gè)循環(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))。示例:成績(jī)輸入錯(cuò)誤重新輸入輸入一個(gè)學(xué)生的成績(jī),首先判斷輸入的分?jǐn)?shù)是否是0和100之間#判斷輸入的成績(jī)是否正確score=int(input("請(qǐng)輸入分?jǐn)?shù):"))whilescore<0orscore>100:score=int(input("請(qǐng)重新輸入分?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)+"分不及格!")輸入成績(jī)scorescore>=0并且score<=100YN判斷成績(jī)等級(jí)結(jié)束開始示例:計(jì)算1~100內(nèi)的偶數(shù)累加和sum=0num=0;whilenum<=100: sum=sum+numnum=num+2print("sum="+str(sum))示例:計(jì)算1~100內(nèi)的偶數(shù)累加和sum=0num=1;whilenum<=100:ifnum%2==0:sum=sum+numnum=num+1print("sum="+str(sum))判斷一個(gè)數(shù)是否為完全立方數(shù)num=int(input("輸入一個(gè)整數(shù):"))ans=0whileans**3<abs(num):ans=ans+1ifans**3==num:ifnum<0:ans=-ansprint(str(ans)+"是"+str(num)+"的立方根")else:print(str(num)+“不是完全立方數(shù)“)示例:成績(jī)統(tǒng)計(jì)輸入一個(gè)班級(jí)的成績(jī),統(tǒng)計(jì)及格的人數(shù)和不及格的人數(shù),并求出平均成績(jī)。注:事先不知道班級(jí)人數(shù),成績(jī)輸入-1結(jié)束總?cè)藬?shù)count=0總分total=0及格人數(shù)passNums=0不及格人數(shù)nopassNums=0平均成績(jī)average=0總?cè)藬?shù)count=0總分total=0及格人數(shù)passNums=0不及格人數(shù)nopassNums=0平均成績(jī)average=0輸入成績(jī)scorescore!=-1?count+=1,total+=scorescore>=60?passNums+=1nopassNums+=1輸入成績(jī)score輸出信息average=total/countYYNN3.3.2for循環(huán)語句:計(jì)數(shù)控制循環(huán)循環(huán)迭代執(zhí)行的次數(shù)是確定的
一般格式:
for變量in[值1,值2,…]:
語句塊示例:計(jì)算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ù)可以簡(jiǎn)化計(jì)數(shù)控制的for循環(huán)的編寫過程
range
返回一個(gè)稱為iterable(迭代器)對(duì)象迭代器:包含了供迭代處理的一組數(shù)據(jù)
range
參數(shù)含義:一個(gè)參數(shù):上限值兩個(gè)參數(shù):初始和上限值三個(gè)參數(shù):初始值、上限值、步長(zhǎng)3.3.2for循環(huán)語句fornuminrange(1,10,2)示例:計(jì)算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):在一個(gè)循環(huán)內(nèi)包含了另一個(gè)循環(huán)例如:打印如下圖案row=int(input("請(qǐng)輸入行數(shù):"))col=int(input("請(qǐng)輸入列數(shù):"))foriinrange(row):forjinrange(col):print('*',end='')print()foriinrange(row):forjinrange(i+1):print('*',end='')print()3.3.3嵌套循環(huán)語句對(duì)外層循環(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)語句跳出整個(gè)循環(huán):breakbreak語句的作用是跳出整個(gè)循環(huán),并且break后面的語句都不執(zhí)行。跳過一輪循環(huán):continuecontinue語句作用是跳過一輪循環(huán),continue后面的語句不執(zhí)行。Python程序設(shè)計(jì)第4章函數(shù)和模塊第4章函數(shù)和模塊4.1引言4.2函數(shù)的基本概念4.3參數(shù)傳遞4.4參數(shù)類型4.5返回值4.6結(jié)構(gòu)化程序設(shè)計(jì)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ù)封裝每個(gè)任務(wù)所編寫的程序稱為模塊化程序。使用函數(shù)模塊化程序的好處:可讀性好代碼重用易于測(cè)試便于團(tuán)隊(duì)合作Python中的函數(shù)包括:內(nèi)置函數(shù)標(biāo)準(zhǔn)庫(kù)函數(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ù)時(shí),解釋器跳轉(zhuǎn)到該函數(shù),并執(zhí)行對(duì)應(yīng)語句塊中的語句。當(dāng)?shù)竭_(dá)語句塊的末尾時(shí),解釋器跳回到當(dāng)初調(diào)用該函數(shù)的位置,并在該處恢復(fù)執(zhí)行。第4章函數(shù)和模塊4.3參數(shù)傳遞4.3參數(shù)傳遞形參:定義函數(shù)時(shí),函數(shù)名后面的小括號(hào)內(nèi)的變量實(shí)參:調(diào)用函數(shù)時(shí),函數(shù)名后面提供的值或變量不可變類型參數(shù):字符串、元組和數(shù)值。如果在函數(shù)內(nèi)部修改參數(shù)的值,則會(huì)生成一個(gè)新的對(duì)象,并不會(huì)影響到函數(shù)外變量的值。defchange(a):#這里a是形參,是不可變類型參數(shù)print(id(a))#指向的是同一個(gè)對(duì)象a=10print(id(a))#一個(gè)新對(duì)象a=1print(id(a))change(a)#這里a是實(shí)參###################################程序輸出4379369136437936913643793691244.3參數(shù)傳遞可變類型參數(shù):列表和字典。在函數(shù)內(nèi)修改可變類型參數(shù),函數(shù)外的對(duì)應(yīng)變量也會(huì)受影響。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ù)類型有:位置參數(shù)關(guān)鍵字參數(shù)默認(rèn)參數(shù)不定長(zhǎng)參數(shù)4.4參數(shù)類型4.4.1位置參數(shù)也稱必須參數(shù),指參數(shù)必須以正確順序傳入函數(shù),調(diào)用時(shí)數(shù)量必須和聲明的數(shù)量一致。如果不一致,執(zhí)行后會(huì)出錯(cuò)。例如:defprintme(str):print(str)#調(diào)用printme函數(shù),不加參數(shù)會(huì)報(bào)錯(cuò)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ù)名=傳遞參數(shù)值的形式來傳入?yún)?shù)。使用關(guān)鍵字參數(shù)允許函數(shù)調(diào)用時(shí)參數(shù)順序與聲明時(shí)不一致。defprintinfo(name,age):print("名字:",name)print("年齡:",age)printinfo(age=50,name="小明")###################################程序輸出名字:小明年齡:504.4參數(shù)類型4.4.3默認(rèn)參數(shù)定義函數(shù)時(shí)給參數(shù)賦默認(rèn)值,這個(gè)參數(shù)就成了默認(rèn)參數(shù)。調(diào)用函數(shù)時(shí),默認(rèn)參數(shù)可以不寫,此時(shí)默認(rèn)參數(shù)會(huì)使用默認(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ù)一般是不可變對(duì)象。如果是可變對(duì)象,在多次調(diào)用函數(shù)時(shí),默認(rèn)參數(shù)都指向同一對(duì)象。如果在函數(shù)內(nèi)改變了默認(rèn)參數(shù)的值,會(huì)在下次調(diào)用時(shí)使用上次默認(rèn)參數(shù)的結(jié)果。4.4參數(shù)類型4.4.4不定長(zhǎng)參數(shù)如果一個(gè)函數(shù)能處理比聲明時(shí)更多的參數(shù),這些參數(shù)就叫做不定長(zhǎng)參數(shù)。不定長(zhǎng)參數(shù)在聲明時(shí)不會(huì)命名。不定長(zhǎng)參數(shù)有兩種導(dǎo)入類型:元組形式:加一個(gè)*號(hào)的參數(shù)會(huì)以元組的形式導(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ù)類型字典形式:加了兩個(gè)星號(hào)**的參數(shù)會(huì)以字典的形式導(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í),參數(shù)中*可以單獨(dú)出現(xiàn)。若單獨(dú)出現(xiàn)*,*右側(cè)參數(shù)必須用關(guān)鍵字傳入。此時(shí)這些參數(shù)也叫命名關(guān)鍵字參數(shù)。例如:>>>deff(a,b,*,c):...returna+b+c...>>>f(1,2,3)#報(bào)錯(cuò)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í),參數(shù)中*可以單獨(dú)出現(xiàn)。若單獨(dú)出現(xiàn)*,*右側(cè)參數(shù)必須用關(guān)鍵字傳入。此時(shí)這些參數(shù)也叫命名關(guān)鍵字參數(shù)。例如:>>>deff(a,b,*,c):...returna+b+c...>>>f(1,2,3)#報(bào)錯(cuò)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í),參數(shù)中*可以單獨(dú)出現(xiàn)。若單獨(dú)出現(xiàn)*,*右側(cè)參數(shù)必須用關(guān)鍵字傳入。此時(shí)這些參數(shù)也叫命名關(guān)鍵字參數(shù)。例如:>>>deff(a,b,*,c):...returna+b+c...>>>f(1,2,3)#報(bào)錯(cuò) Traceback(mostrecentcalllast): File"<stdin>",line1,in<module>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025標(biāo)準(zhǔn)勞動(dòng)合同范本2
- 幼兒?jiǎn)栴}解決能力的多模態(tài)教育路徑設(shè)計(jì)
- 小學(xué)足球特色育人新樣態(tài)的實(shí)踐研究
- 2025智能照明及安防系統(tǒng)設(shè)計(jì)與施工合同
- 2025合同范本股權(quán)激勵(lì)協(xié)議模板
- 聚焦精準(zhǔn)教學(xué)的育人方式創(chuàng)新實(shí)踐
- 2025大型設(shè)備采購(gòu)合同(買家優(yōu)勢(shì))范本
- 2025合同范本最規(guī)范的汽車買賣合同樣本
- 2025技術(shù)研發(fā)合作合同
- 2025合同模板家具定制合同書范本
- 田畝轉(zhuǎn)戶協(xié)議書
- 資產(chǎn)委托購(gòu)買協(xié)議書
- 2025-2030中國(guó)半導(dǎo)體行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 庭院綠化養(yǎng)護(hù)合同協(xié)議書
- 退休返聘合同和協(xié)議書
- 2025年MySQL開發(fā)趨勢(shì)試題及答案研究
- 山東省濟(jì)寧市2025年高考模擬考試化學(xué)試題及答案(濟(jì)寧三模)
- 胃癌護(hù)理個(gè)案護(hù)理
- 2025年汽車經(jīng)銷行業(yè)深度研究報(bào)告
- 河南2025年生態(tài)環(huán)境部黃河流域生態(tài)環(huán)境監(jiān)督管理局生態(tài)環(huán)境監(jiān)測(cè)與科學(xué)研究中心招聘筆試歷年參考題庫(kù)附帶答案詳解
- (高清版)DG∕TJ 08-2165-2015 建設(shè)項(xiàng)目交通影響評(píng)價(jià)技術(shù)標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論