Python程序設(shè)計(jì)基礎(chǔ) 課件全套 王靜紅 第1-10章 Python概述- 面向?qū)ο缶幊蘝第1頁(yè)
Python程序設(shè)計(jì)基礎(chǔ) 課件全套 王靜紅 第1-10章 Python概述- 面向?qū)ο缶幊蘝第2頁(yè)
Python程序設(shè)計(jì)基礎(chǔ) 課件全套 王靜紅 第1-10章 Python概述- 面向?qū)ο缶幊蘝第3頁(yè)
Python程序設(shè)計(jì)基礎(chǔ) 課件全套 王靜紅 第1-10章 Python概述- 面向?qū)ο缶幊蘝第4頁(yè)
Python程序設(shè)計(jì)基礎(chǔ) 課件全套 王靜紅 第1-10章 Python概述- 面向?qū)ο缶幊蘝第5頁(yè)
已閱讀5頁(yè),還剩593頁(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)介

匯報(bào)人:WPSPython程序設(shè)計(jì)基礎(chǔ)第一章Python概述目錄01初識(shí)Python02理解Python解釋器03熟悉Python自帶的編程環(huán)境04Python的集成開(kāi)發(fā)環(huán)境簡(jiǎn)介目錄05Python生態(tài)系統(tǒng)之tutle庫(kù)06小試牛刀07拓展實(shí)踐:使用小海龜繪制京劇臉譜

了解Python語(yǔ)言的特點(diǎn)。理解Python解釋器的作用。掌握Python編程環(huán)境的搭建過(guò)程。初步體驗(yàn)turtle庫(kù)的使用方法。學(xué)習(xí)目標(biāo)PART11.1初識(shí)Python1.1初識(shí)PythonPython語(yǔ)言誕生于20世紀(jì)90年代初,創(chuàng)始人是吉多·范羅蘇姆(GuidovanRossum)。吉多·范羅蘇姆之前曾參與設(shè)計(jì)一種稱為ABC的專門(mén)為非專業(yè)程序員設(shè)計(jì)的語(yǔ)言,但ABC語(yǔ)言沒(méi)有取得預(yù)期的成功。于是在1989年圣誕節(jié)期間,吉多·范羅蘇姆決心開(kāi)發(fā)一個(gè)新的程序語(yǔ)言以繼承ABC語(yǔ)言的理念,他把這個(gè)新的語(yǔ)言命名為Python,這個(gè)詞出自英國(guó)20世紀(jì)70年代首播的電視喜劇《蒙提·派森的飛行馬戲團(tuán)》(MontyPython'sFlyingCircus)。Python這個(gè)單詞的意思是大蟒蛇,因此很多Python書(shū)籍封面都會(huì)有一個(gè)造型各異的蟒蛇圖案。1.1初識(shí)PythonPython還有一個(gè)優(yōu)勢(shì)是其龐大的生態(tài)系統(tǒng)。經(jīng)過(guò)幾十年的發(fā)展,各行各業(yè)眾多的使用者、開(kāi)發(fā)者為Python貢獻(xiàn)了數(shù)以萬(wàn)計(jì)的工具包(庫(kù)),這些工具包涉及計(jì)算機(jī)編程的方方面面,橫跨很多學(xué)科,形成了一個(gè)龐大的生態(tài)系統(tǒng)。廣大的Python使用者利用這些工具包,可以將注意力放在要解決的問(wèn)題上,極大地提高了編程的效率,降低了編程工作的門(mén)檻。因此學(xué)習(xí)使用這些工具包也是學(xué)習(xí)Python語(yǔ)言的重要組成部分。Python在發(fā)展過(guò)程中形成了兩大系列的版本,一個(gè)系列是前期的Python2.x版本,另一個(gè)是后期的Python3.x版本。Python3.x對(duì)Python進(jìn)行了很多改進(jìn),使Python更加易用,性能也更好,但代價(jià)是Python3.x并不能完全兼容以前的Python2.x代碼。1.1初識(shí)Python作為初學(xué)者,一般建議學(xué)習(xí)Python3.x版本,這是因?yàn)镻ython2.x版本已經(jīng)在2020年停止更新,定格在Python2.7。而Python3.x版本則持續(xù)發(fā)展,方興未艾。隨著版本號(hào)的升高,隨之而來(lái)的是其更豐富的功能、更優(yōu)秀的性能。本書(shū)的代碼在Python3.6之后的環(huán)境中都可以正常運(yùn)行。PART21.2理解Python解釋器Python是一種高級(jí)程序語(yǔ)言。這里的“高級(jí)”一詞不是普通意義上的褒義詞,不具有感情色彩,而是與機(jī)器語(yǔ)言相對(duì)而言的。機(jī)器語(yǔ)言是計(jì)算機(jī)可以理解并直接執(zhí)行的程序語(yǔ)言,但對(duì)于人類來(lái)說(shuō)不夠友好,因此才會(huì)出現(xiàn)高級(jí)程序語(yǔ)言。所謂“高級(jí)”是指這類程序語(yǔ)言距離人類的思維更近,便于人類程序員理解,極大地提高了編程的效率和質(zhì)量。但隨之而來(lái)的一個(gè)問(wèn)題是,計(jì)算機(jī)無(wú)法直接理解高級(jí)程序語(yǔ)言編寫(xiě)的代碼,因此需要將高級(jí)程序語(yǔ)言代碼翻譯成相應(yīng)的機(jī)器語(yǔ)言。1.2理解Python解釋器翻譯過(guò)程有兩種方式,即編譯和解釋。簡(jiǎn)單來(lái)說(shuō),編譯是指將原始的程序語(yǔ)言代碼先整體翻譯為目標(biāo)代碼,然后執(zhí)行,翻譯與執(zhí)行的過(guò)程是分開(kāi)的,執(zhí)行的是目標(biāo)代碼文件。解釋則是將原始代碼逐行地解析、執(zhí)行,并且是一氣呵成的,沒(méi)有產(chǎn)生一個(gè)目標(biāo)代碼文件。為了便于理解二者的區(qū)別,整個(gè)翻譯過(guò)程可以用一個(gè)讀者閱讀英文小說(shuō)的例子來(lái)類比。假設(shè)這個(gè)讀者不懂英文,就像計(jì)算機(jī)不懂高級(jí)語(yǔ)言一樣。為了讓他能閱讀(執(zhí)行)英文小說(shuō)(源代碼),編譯方式采用的是讓翻譯家先將這本英文小說(shuō)翻譯為中文版的小說(shuō),即會(huì)有一本中文版的小說(shuō)存在,然后讀者閱讀(執(zhí)行)中文版的小說(shuō),翻譯家的翻譯行為與讀者的閱讀行為是截然分開(kāi)的兩個(gè)階段,讀者閱讀中文版小說(shuō)時(shí)并不需要翻譯家在場(chǎng)。解釋方式則類似于讓這位翻譯家將原始的英文小說(shuō)逐句地口譯給讀者。在這個(gè)口譯過(guò)程中,不會(huì)產(chǎn)生一本中文版的小說(shuō),翻譯家的解釋工作與讀者的理解執(zhí)行是一氣呵成的。在編譯方式中,翻譯家相當(dāng)于編譯器;而在解釋方式中,翻譯家相當(dāng)于解釋器。無(wú)論是編譯器還是解釋器,都是在底層起支撐作用的計(jì)算機(jī)程序。1.2理解Python解釋器編譯與解釋這兩種方式各有利弊,長(zhǎng)期共存。當(dāng)前主流的程序語(yǔ)言既有采用編譯方式的,如C語(yǔ)言;也有采用解釋方式的,如Python語(yǔ)言。使用Python語(yǔ)言編寫(xiě)的代碼要經(jīng)過(guò)Python解釋器這個(gè)“翻譯家”的解釋翻譯,計(jì)算機(jī)才能執(zhí)行。因此在一臺(tái)計(jì)算機(jī)上進(jìn)行Python編程工作之前,要確保這臺(tái)計(jì)算機(jī)安裝了Python解釋器。Python官方網(wǎng)站提供了Python解釋器的下載鏈接。事實(shí)上,Python解釋器有很多版本可選,如有Python2.7版本,也有一系列的Python3.x版本。由此可知,Python語(yǔ)言的版本升級(jí)其實(shí)是由Python解釋器的升級(jí)來(lái)體現(xiàn)的。Python語(yǔ)言新引入的一些功能、特性必須要由解釋器提供支持才能落到實(shí)處。另外,安裝Python解釋器之前還要考慮計(jì)算機(jī)的操作系統(tǒng)。針對(duì)不同的操作系統(tǒng),如Windows、Linux、macOS等,Python官方網(wǎng)站提供了不同的解釋器文件。1.2理解Python解釋器PART31.3熟悉Python自帶的編程環(huán)境在計(jì)算機(jī)中搭建一個(gè)適合自己的Python編程環(huán)境是學(xué)習(xí)Python的良好開(kāi)端。Python的編程環(huán)境包含兩部分:一是Python解釋器,這是必需的,沒(méi)有它計(jì)算機(jī)無(wú)法理解、執(zhí)行Python代碼;二是集成開(kāi)發(fā)環(huán)境(IntegratedDevelopmentEnvironment,IDE),理論上雖然它不是必需的,但是因其可極大提升程序員的工作效率,實(shí)際上也是不可缺少的。本節(jié)先介紹Python解釋器的下載與安裝。1.3熟悉Python自帶的編程環(huán)境1.3.1安裝Python解釋器Python的官網(wǎng)提供了面向不同操作系統(tǒng)的Python解釋器。下面以Windows操作系統(tǒng)為例介紹Python解釋器的下載安裝過(guò)程。(1)進(jìn)入Python官網(wǎng)頁(yè)面,如圖1.1所示。當(dāng)鼠標(biāo)指針懸停在【Downloads】菜單上時(shí),會(huì)彈出如圖1.1所示的下拉列表,在其中可以選擇操作系統(tǒng),下拉列表右側(cè)有最新版本的Python解釋器下載鏈接。對(duì)于初學(xué)者來(lái)說(shuō),未必一定要使用最新版的Python解釋器。如果要下載其他版本的Python解釋器,則可以選擇圖1.1中的【Allreleases】選項(xiàng)或單擊【Viewthefulllistofdownloads】鏈接,即可查看全部Python3.x版本的下載鏈接。1.3.1安裝Python解釋器2)雙擊下載的Python解釋器安裝文件,安裝Python解釋器。在打開(kāi)的如圖1.2所示的界面中,選中【Addpython.exetoPATH】復(fù)選框,然后單擊【InstallNow】按鈕開(kāi)啟安裝進(jìn)程。當(dāng)顯示“Setupwassuccessful”字樣時(shí),就意味著Python解釋器安裝成功了。這里選中【Addpython.exetoPATH】復(fù)選框的目的是將Python解釋器的安裝位置在Windows操作系統(tǒng)中做登記,當(dāng)日后需要使用Python解釋器來(lái)翻譯執(zhí)行Python源代碼時(shí),Windows操作系統(tǒng)就知道去哪個(gè)目錄位置查找Python解釋器了。1.3.2Python自帶編程環(huán)境簡(jiǎn)介成功安裝Python解釋器后,在Windows的“開(kāi)始”菜單中會(huì)出現(xiàn)如圖1.3所示的條目。在這4個(gè)條目中,上方2個(gè)是Python自帶的編程環(huán)境,下方2個(gè)是關(guān)于Python及一些工具包的幫助文檔,它們是了解Python和工具包的第一手資料。下面簡(jiǎn)單介紹Python自帶的2個(gè)編程環(huán)境。1.3.2Python自帶編程環(huán)境簡(jiǎn)介1.命令行交互式環(huán)境選擇圖1.3中的【Python3.11(64-bit)】選項(xiàng),啟動(dòng)Python命令行交互式環(huán)境,如圖1.4所示。在形如>>>的提示符后輸入代碼,然后按Enter鍵即可立刻看到運(yùn)行結(jié)果,因此被稱為交互式編程環(huán)境。圖1.4中演示了利用Python中的基本運(yùn)算求半徑為5的圓的面積。1.3.2Python自帶編程環(huán)境簡(jiǎn)介2.IDLE編程工具選擇圖1.3中的【IDLE(Python3.1164-bit)】選項(xiàng),打開(kāi)如圖1.5所示的窗口。這里的IDLE是IntegratedDevelopmentandLearningEnvironment的縮寫(xiě),即集成開(kāi)發(fā)與學(xué)習(xí)環(huán)境。IDLE工具同樣可以在光標(biāo)提示符處輸入代碼,然后按Enter鍵運(yùn)行。1.3.2Python自帶編程環(huán)境簡(jiǎn)介除上述這種交互式運(yùn)行方式外,IDLE還可以運(yùn)行較長(zhǎng)篇幅的代碼文件。選擇圖1.5中的【File】→【NewFile】選項(xiàng),打開(kāi)圖1.6所示的窗口。在該窗口中可以輸入多行代碼并通過(guò)【File】菜單保存為一個(gè)文件,擴(kuò)展名一般為.py。圖1.6的標(biāo)題行中顯示的代碼文件為welcome.py。1.3.2Python自帶編程環(huán)境簡(jiǎn)介代碼保存后,可以通過(guò)選擇圖1.6中的【Run】→【RunModule】選項(xiàng)來(lái)運(yùn)行代碼文件。圖1.6中的代碼運(yùn)行效果如圖1.7所示。Python自帶的IDLE工具雖然功能算不上很強(qiáng)大,但體積小巧、啟動(dòng)速度快,且支持語(yǔ)法高亮顯示和調(diào)試功能,這對(duì)于初學(xué)者也是夠用的。PART41.4Python的集成開(kāi)發(fā)環(huán)境簡(jiǎn)介作為一種當(dāng)今主流的編程語(yǔ)言,Python擁有很多功能非常強(qiáng)大的集成開(kāi)發(fā)環(huán)境,如PyCharm、VisualStudioCode等,如果是進(jìn)行數(shù)據(jù)分析或機(jī)器學(xué)習(xí),JupyterNotebook是非常好的選擇。而對(duì)于剛剛接觸編程語(yǔ)言的初學(xué)者來(lái)說(shuō),Thonny不失為一個(gè)友好易用的工具。Python集成開(kāi)發(fā)環(huán)境工具有很多,無(wú)法一一提及。下面簡(jiǎn)單介紹幾個(gè),以幫助讀者選擇合適的集成開(kāi)發(fā)環(huán)境。1.4Python的集成開(kāi)發(fā)環(huán)境簡(jiǎn)介PyCharm是JetBrains公司推出的一款Python集成開(kāi)發(fā)環(huán)境,在眾多Python開(kāi)發(fā)工具中非常亮眼,擁有很高的知名度。這不僅是因?yàn)镻yCharm擁有漂亮的外觀,更是因?yàn)槠涔δ軓?qiáng)大。PyCharm擁有非常完備的代碼功能,如語(yǔ)法高亮顯示、智能提示、自動(dòng)完成、拼寫(xiě)檢查、代碼規(guī)范檢查、代碼重構(gòu)等,這些功能可以助力程序員快捷、高效地書(shū)寫(xiě)高質(zhì)量的代碼。此外,PyCharm還有很強(qiáng)大的調(diào)試功能及代碼跳轉(zhuǎn)、單元測(cè)試、版本控制等功能,在規(guī)模較大的項(xiàng)目管理上表現(xiàn)優(yōu)秀,對(duì)數(shù)據(jù)庫(kù)開(kāi)發(fā)、Web開(kāi)發(fā)等提供了強(qiáng)有力的支持。PyCharm雖然功能表現(xiàn)優(yōu)異,但體積不小,其定位是面向?qū)I(yè)級(jí)程序員完成較大規(guī)模的項(xiàng)目開(kāi)發(fā)。PyCharm的主力版本是PyCharmProfessionalEdition,也就是通常說(shuō)的專業(yè)版,這個(gè)版本是收費(fèi)的。初學(xué)者如果想長(zhǎng)期免費(fèi)使用PyCharm,則推薦使用PyCharmCommunityEdition,即社區(qū)版。社區(qū)版PyCharm雖然缺少Web、數(shù)據(jù)庫(kù)開(kāi)發(fā)等方面的一些高級(jí)功能,但對(duì)于初學(xué)者而言影響不大。1.4.1PyCharm簡(jiǎn)介PyCharm的安裝需要注意的是,PyCharm只是一個(gè)提高程序員工作效率的代碼編輯器,它本身不含Python解釋器。因此在安裝PyCharm之前,還是要確保計(jì)算機(jī)已經(jīng)安裝了Python解釋器。之后訪問(wèn)JetBrains公司網(wǎng)站下載PyCharmCommunityEdition,下載成功后雙擊文件即可啟動(dòng)安裝過(guò)程。對(duì)于初學(xué)者來(lái)說(shuō),PyCharm安裝過(guò)程中的每一步都按默認(rèn)設(shè)置即可,因此整個(gè)安裝過(guò)程還是比較容易的。1.4.1PyCharm的安裝第一次啟動(dòng)PyCharm時(shí),需要選中用戶協(xié)議的復(fù)選框之后才能繼續(xù),之后會(huì)打開(kāi)如圖1.8所示的界面。因?yàn)镻yCharm是面向中大型項(xiàng)目開(kāi)發(fā)的專業(yè)級(jí)開(kāi)發(fā)環(huán)境,所以使用PyCharm時(shí)需要?jiǎng)?chuàng)建新的項(xiàng)目(Project)或打開(kāi)已經(jīng)存在的項(xiàng)目。單擊圖1.8中的【NewProject】按鈕創(chuàng)建一個(gè)新的項(xiàng)目,打開(kāi)如圖1.9所示的界面。在圖1.9的第一個(gè)矩形框中可指定項(xiàng)目的名稱及保存位置,在第二個(gè)矩形框中顯示的是PyCharm當(dāng)前使用的Python解釋器。如果由于某種原因PyCharm沒(méi)有正確識(shí)別計(jì)算機(jī)中的Python解釋器,那么PyCharm就無(wú)法運(yùn)行Python代碼。1.4.1PyCharm的使用第一次啟動(dòng)PyCharm時(shí),需要選中用戶協(xié)議的復(fù)選框之后才能繼續(xù),之后會(huì)打開(kāi)如圖1.8所示的界面。因?yàn)镻yCharm是面向中大型項(xiàng)目開(kāi)發(fā)的專業(yè)級(jí)開(kāi)發(fā)環(huán)境,所以使用PyCharm時(shí)需要?jiǎng)?chuàng)建新的項(xiàng)目(Project)或打開(kāi)已經(jīng)存在的項(xiàng)目。單擊圖1.8中的【NewProject】按鈕創(chuàng)建一個(gè)新的項(xiàng)目,打開(kāi)如圖1.9所示的界面。在圖1.9的第一個(gè)矩形框中可指定項(xiàng)目的名稱及保存位置,在第二個(gè)矩形框中顯示的是PyCharm當(dāng)前使用的Python解釋器。如果由于某種原因PyCharm沒(méi)有正確識(shí)別計(jì)算機(jī)中的Python解釋器,那么PyCharm就無(wú)法運(yùn)行Python代碼。1.4.1PyCharm的使用單擊圖1.9中的【Create】按鈕完成新項(xiàng)目的創(chuàng)建,然后打開(kāi)PyCharm的主界面,如圖1.10所示。在圖1.10左上角矩形框所示的項(xiàng)目名稱上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【New】→【PythonFile】選項(xiàng),就可以在項(xiàng)目中添加一個(gè)代碼文件,如圖1.10中的welcome.py代碼文件。在右側(cè)的代碼文件窗格中輸入代碼,這時(shí)就可以看到PyCharm的語(yǔ)法高亮顯示、代碼自動(dòng)完成等友好功能了。代碼輸入完成后,只需在代碼窗格內(nèi)的任意位置單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【Run‘Welcome’】選項(xiàng)(其中的Welcome會(huì)根據(jù)當(dāng)前代碼文件名的不同而變化)即可運(yùn)行代碼,代碼運(yùn)行結(jié)果顯示在主界面的下方窗格中。1.4.1PyCharm的使用退出PyCharm時(shí)如果沒(méi)有關(guān)閉當(dāng)前項(xiàng)目,下次啟動(dòng)PyCharm會(huì)自動(dòng)載入這個(gè)項(xiàng)目。如果關(guān)閉當(dāng)前項(xiàng)目后再退出PyCharm,則下次啟動(dòng)PyCharm會(huì)出現(xiàn)類似圖1.8的界面,在這個(gè)界面中可以選擇打開(kāi)已有項(xiàng)目或創(chuàng)建新項(xiàng)目。社區(qū)版PyCharm還提供了非常好的學(xué)習(xí)資源。選擇圖1.8左側(cè)的【Learn】選項(xiàng),窗口右側(cè)會(huì)列出有關(guān)PyCharm工具本身和Python編程的學(xué)習(xí)資源入口。圖1.11展示了訪問(wèn)Python編程學(xué)習(xí)入口后看到的學(xué)習(xí)資源。1.4.1PyCharm的使用VisualStudioCode,一般簡(jiǎn)稱為VSCode,是微軟公司推出的一款跨平臺(tái)的集成開(kāi)發(fā)環(huán)境。長(zhǎng)期以來(lái),微軟公司在集成開(kāi)發(fā)環(huán)境領(lǐng)域一直有一個(gè)拳頭產(chǎn)品,即VisualStudio。VisualStudio的功能非常強(qiáng)大,但體積也非常龐大,而且無(wú)法在Linux操作系統(tǒng)上使用。因此VisualStudioCode應(yīng)運(yùn)而生,它基于開(kāi)源構(gòu)建,免費(fèi),體積小巧,啟動(dòng)速度快,可在Windows、macOS、Linux等多個(gè)操作系統(tǒng)平臺(tái)使用,彌補(bǔ)了VisualStudio的缺憾。與PyCharm不同,VisualStudioCode并不是專為Python設(shè)計(jì)的代碼編輯環(huán)境。通過(guò)使用擴(kuò)展插件,VisualStudioCode支持眾多的編程語(yǔ)言,包括JavaScript、C/C++、TypeScript、Python、Java、C#、HTML等,可以說(shuō)當(dāng)今主流的編程語(yǔ)言已被VisualStudioCode一網(wǎng)打盡。VisualStudioCode提供了一個(gè)在線的擴(kuò)展插件市場(chǎng)(VisualStudioCodeMarketplace),琳瑯滿目的擴(kuò)展插件不僅能讓VisualStudioCode支持眾多的語(yǔ)言,還可以根據(jù)使用者的需要添加額外的功能,做到對(duì)VisualStudioCode編程環(huán)境的高度定制化。1.4.2VisualStudioCode簡(jiǎn)介可以在官方網(wǎng)站免費(fèi)下載VisualStudioCode,啟動(dòng)VisualStudioCode后的界面如圖1.12所示,單擊左側(cè)矩形框中的按鈕,可看到VisualStudioCode提供的各種擴(kuò)展,第一個(gè)就是Python解釋9第1章搭建編程環(huán)境器。單擊解釋器右側(cè)的【Install】按鈕安裝Python解釋器后,VisualStudioCode就成為一個(gè)專業(yè)級(jí)的Python代碼編輯器了。1.4.2VisualStudioCode簡(jiǎn)介JupyterNotebook是一款在數(shù)據(jù)分析、機(jī)器學(xué)習(xí)領(lǐng)域使用非常廣泛的Python代碼編輯工具,它將代碼與文檔、圖片等融為一體的方式,特別適合逐步分析、講解與展示的情景。讀者如果想嘗試使用JupyterNotebook,則推薦安裝Anaconda。Anaconda是一個(gè)開(kāi)源的Python發(fā)行版本,它不僅包含了Python解釋器、JupyterNotebook,還有一款類似PyCharm和VisualStudioCode的開(kāi)發(fā)工具Spyder,以及上百個(gè)常用的Python工具包,讓使用者免去了安裝各組件、工具包的煩瑣,并且消除了可能出現(xiàn)的工具包之間令人頭疼的依賴故障。JupyterNotebook的界面與PyCharm和VisualStudioCode的界面截然不同。JupyterNotebook是基于瀏覽器的,啟動(dòng)后會(huì)運(yùn)行計(jì)算機(jī)中的默認(rèn)瀏覽器,并出現(xiàn)一個(gè)主頁(yè)面,如圖1.13所示。單擊主頁(yè)面右側(cè)的【New】按鈕可以新建一個(gè)JupyterNotebook文件,在這個(gè)文件中可以添加一系列的矩形框,如圖1.14所示。1.4.3JupyterNotebook簡(jiǎn)介在圖1.14中,每個(gè)矩形框可根據(jù)需要設(shè)置為代碼模式或Markdown模式。在代碼模式的框中輸入Python代碼,按【Shift+Enter】組合鍵后運(yùn)行,結(jié)果出現(xiàn)在代碼框的下方,如圖1.14中求解得到的一元二次方程的根。而在Markdown模式的框中可輸入各種文本、公式甚至圖片,如圖中的標(biāo)題及求解一元二次方程的題目說(shuō)明。Markdown是一種簡(jiǎn)潔的標(biāo)記語(yǔ)言,JupyterNotebook支持Markdown語(yǔ)法,可以方便地輸入各級(jí)標(biāo)題、各種數(shù)學(xué)符號(hào)、分?jǐn)?shù)、希臘字母、圖片等。JupyterNotebook文件還可以通過(guò)圖1.14中的【File】菜單導(dǎo)出為HTML、PDF等格式,方便與其他人分享。1.4.3JupyterNotebook簡(jiǎn)介對(duì)于Python的初學(xué)者而言,PyCharm顯得有點(diǎn)過(guò)于重量級(jí)了,雖然其功能很強(qiáng)大,但初學(xué)者大多用不到;Anaconda雖然解決了安裝配置問(wèn)題,但體積也不算小。事實(shí)上,對(duì)于初學(xué)編程的讀者而言,理想的編程工具大概就是擁有簡(jiǎn)潔大方的外觀,基礎(chǔ)功能完備,安裝簡(jiǎn)單,“開(kāi)箱即用”。而Thonny就是這樣一個(gè)Python代碼編輯工具。Thonny是由愛(ài)沙尼亞的塔爾圖大學(xué)開(kāi)發(fā)的專門(mén)針對(duì)初學(xué)者的Python編輯工具,其設(shè)計(jì)理念處處為初學(xué)者著想。它支持多個(gè)操作系統(tǒng)平臺(tái)、免費(fèi)、體積小巧,卻自帶Python解釋器,安裝后無(wú)須配置,真正做到開(kāi)箱即用。Thonny擁有非常友好的代碼調(diào)試功能,實(shí)時(shí)顯示變量的值及函數(shù)的調(diào)用過(guò)程,便于初學(xué)者理解代碼的執(zhí)行過(guò)程,提升學(xué)習(xí)質(zhì)量。Thonny的安裝與使用非常簡(jiǎn)單、直觀,在此不再贅述。本節(jié)介紹了這么多Python集成開(kāi)發(fā)環(huán)境,目的就是希望讀者能根據(jù)自身情況,選擇一款適合自己的編程工具軟件。凡事預(yù)則立,不預(yù)則廢。在正式開(kāi)啟Python學(xué)習(xí)征程之前,打造一個(gè)好用的編程環(huán)境是很重要的,它會(huì)讓后續(xù)的學(xué)習(xí)過(guò)程變得更愉悅、更高效。1.4.4Thonny簡(jiǎn)介PART51.5Python生態(tài)系統(tǒng)之turtle庫(kù).學(xué)習(xí)Python時(shí),不僅要學(xué)習(xí)Python自身的語(yǔ)法等基本語(yǔ)言要素,還要涉獵其生態(tài)系統(tǒng)中各式各樣的工具包——庫(kù)。擁有數(shù)量眾多的庫(kù)是Python的一大優(yōu)勢(shì),這些庫(kù)有一小部分會(huì)在安裝Python解釋器時(shí)同步安裝到系統(tǒng),被稱為標(biāo)準(zhǔn)庫(kù);還有數(shù)量眾多的庫(kù)需要使用者根據(jù)自身的需求去額外安裝,這樣的庫(kù)被稱為第三方庫(kù)。本章就從turtle庫(kù)開(kāi)啟認(rèn)識(shí)Python眾多工具包的旅程。turtle庫(kù)是一個(gè)繪圖庫(kù),它是Python的標(biāo)準(zhǔn)庫(kù)。因其簡(jiǎn)單、有趣,作為了解Python生態(tài)系統(tǒng)的起點(diǎn)還是比較合適的。turtle這個(gè)單詞是“海龜”的意思,為了便于理解,使用這個(gè)庫(kù)時(shí)可以形象地認(rèn)為有一只小海龜拿著一支筆,在屏幕上按照程序指定的角度、長(zhǎng)度爬行,從而畫(huà)出各式各樣的圖案。因此學(xué)習(xí)turtle庫(kù)就是學(xué)習(xí)如何指揮小海龜。1.5Python生態(tài)系統(tǒng)之turtle庫(kù)要理解小海龜在屏幕上繪圖的過(guò)程,必須首先理解小海龜?shù)淖鴺?biāo)系。想象一下小海龜繪圖的情景:小海龜在一塊“畫(huà)布”上按照指令爬行,畫(huà)布嵌在一個(gè)窗體中,窗體顯示在物理的屏幕上,如圖1.15所示。1.5.1小海龜?shù)淖鴺?biāo)系如果需要明確設(shè)置繪圖窗體在屏幕上的位置,turtle庫(kù)提供了一個(gè)函數(shù)來(lái)完成這項(xiàng)工作,即turtle.setup(width,height,startx,starty)。函數(shù)簡(jiǎn)單來(lái)說(shuō)就是被賦予了名稱的一段代碼,往往還會(huì)有一些參數(shù)。例如,這里的turtle.setup()就是函數(shù)的名稱,括號(hào)中的width、height、startx、starty是這個(gè)函數(shù)要工作所需要的4項(xiàng)信息,稱為參數(shù)。函數(shù)turtle.setup()的4個(gè)參數(shù)的含義如下。(1)width:指定繪圖窗體的寬度??梢允褂谜麛?shù)說(shuō)明窗體寬度的像素值,也可以使用小數(shù)來(lái)指定窗體寬度與屏幕寬度的百分比。(2)height:指定繪圖窗體的高度??梢允褂谜麛?shù)說(shuō)明窗體高度的像素值,也可以使用小數(shù)來(lái)指定窗體高度與屏幕高度的百分比。(3)startx:繪圖窗體左邊緣距離屏幕左邊緣的像素距離。1.5.1小海龜?shù)淖鴺?biāo)系(4)starty:繪圖窗體上邊緣距離屏幕上邊緣的像素距離。例如,turtle.setup(0.8,0.5,200,200)的含義是將繪圖窗體設(shè)置為屏幕寬度的80%、屏幕高度的50%,距離屏幕左邊緣、上邊緣均為200像素。雖然turtle庫(kù)提供了設(shè)置窗體在屏幕上的位置的函數(shù),但大多時(shí)候窗體在屏幕上的位置不那么重要,真正重要的是小海龜在繪圖窗體中的位置。默認(rèn)情況下,小海龜以繪圖窗體的中央為坐標(biāo)系的原點(diǎn),其一開(kāi)始也是坐鎮(zhèn)繪圖窗體的中央,并且面朝屏幕右側(cè)。注意觀察圖1.15中窗體中央的小箭頭,它就是小海龜?shù)幕?,箭頭朝向即為小海龜朝向。默認(rèn)情況下,窗體中央位置的坐標(biāo)為(0,0)。小海龜可以根據(jù)程序指令前進(jìn)、后退,或左轉(zhuǎn)、右轉(zhuǎn),或直接移動(dòng)到某個(gè)坐標(biāo)位置等。在某些情況下,繪圖窗體中央為坐標(biāo)原點(diǎn)并不適合當(dāng)時(shí)的場(chǎng)景,這時(shí)就需要調(diào)整繪圖窗體的坐標(biāo)系,完成這項(xiàng)任務(wù)的函數(shù)是turtle.setworldcoordinates(llx,lly,urx,ury),括號(hào)中的4個(gè)參數(shù)分別表示窗體左下角的橫縱坐標(biāo)和右上角的橫縱坐標(biāo)。例如,如果需要將繪圖窗體的左下角坐標(biāo)設(shè)置為(0,0),右上角坐標(biāo)設(shè)置為(100,100),則可以寫(xiě)為turtle.setworldcoordinates(0,0,100,100)。1.5.1小海龜?shù)淖鴺?biāo)系turtle庫(kù)提供了很多指揮小海龜進(jìn)行各種繪圖動(dòng)作的方法,掌握了這些方法就可以游刃有余地指

揮小海龜進(jìn)行繪圖了。下面介紹小海龜制圖的幾個(gè)常用方法。1.goto()如果要指揮小海龜從其當(dāng)前位置直接去某個(gè)坐標(biāo)位置,則可以使用goto()方法。例如,下面的

代碼

1.1,這段代碼繪制了一個(gè)形如大門(mén)的圖案,如圖

1.16所示。代碼

1.1

小海龜?shù)?/p>

goto()方法1.5.2小海龜制圖的常用方法importturtle#導(dǎo)入

turtle庫(kù)t=turtle.Turtle()#生成一個(gè)小海龜t.goto(-100,-100)#指揮小海龜去坐標(biāo)位置(-100,-100)t.goto(-100,100)t.goto(100,100)t.goto(100,-100)t.goto(0,0)#默認(rèn)情形下,坐標(biāo)位置(0,0)是繪圖窗體的中央2.speed()小海龜?shù)呐佬兴俣仁强梢哉{(diào)整的,調(diào)整時(shí)只需調(diào)用小海龜?shù)膕peed()方法,括號(hào)中提供一個(gè)速度值即可。速度值可以使用整數(shù),也可以使用更直觀的英語(yǔ)單詞來(lái)描述,如表1.1所示。1.5.2小海龜制圖的常用方法代碼1.2小海龜?shù)膕peed()方法importturtlet=turtle.Turtle()t.speed("normal")#速度可設(shè)成1和10分別試一下t.goto(-100,-100)t.goto(-100,100)t.goto(100,100)t.goto(100,-100)t.goto(0,0)turtle_window=t.getscreen()turtle_window.exitonclick()1.5.2小海龜制圖的常用方法3.penup()與pendown()小海龜繪圖的過(guò)程可以形象地想象為小海龜拖著一支筆在畫(huà)布上爬行。如果只需要小海龜移動(dòng)位置,不需要留下筆跡,則可以使用penup()方法將筆抬起。同理,pendown()可在需要時(shí)將筆放在畫(huà)布上以便留下筆跡。下面的代碼1.3演示了利用penup()與pendown()兩個(gè)方法恰當(dāng)?shù)乜刂菩『}斣谛枰臅r(shí)機(jī)抬起畫(huà)筆或放下畫(huà)筆。這段代碼繪制了一個(gè)中心位于坐標(biāo)原點(diǎn)的正方形,因此小海龜一開(kāi)始的移動(dòng),以及繪制完正方形回到坐標(biāo)原點(diǎn)的移動(dòng)都不需要留下痕跡,需要適時(shí)地將畫(huà)筆抬起。1.5.2小海龜制圖的常用方法importturtlet=turtle.Turtle()#創(chuàng)建一個(gè)小海龜t.speed(1)#爬行速度t.penup()#抬起畫(huà)筆t.goto(100,100)#移動(dòng)小海龜?shù)阶鴺?biāo)指定位置t.pendown()#放下畫(huà)筆t.backward(200)#后退

200個(gè)單位,請(qǐng)問(wèn)小海龜在向哪邊移動(dòng)?t.right(90)#原地右轉(zhuǎn)

90°t.forward(200)t.left(90)#原地左轉(zhuǎn)

90°t.forward(200)t.left(90)t.forward(100)t.left(90)t.forward(200)turtle_window=t.getscreen()

turtle_window.exitonclick()4.forward()與backward()小海龜在畫(huà)布上時(shí)刻都有自己的朝向,默認(rèn)情況下,繪圖剛開(kāi)始時(shí)小海龜朝向屏幕右側(cè)。無(wú)論小海龜當(dāng)下朝向何方,forward()方法的含義是向朝向的方向移動(dòng),稱為前進(jìn);而backward()方法是向朝向的反方向移動(dòng),即為后退。代碼1.4演示了這兩個(gè)方法的使用。1.5.2小海龜制圖的常用方法importturtlet=turtle.Turtle()t.speed(1)t.forward(50)t.backward(100)t.forward(200)t.backward(400)importturtlet=turtle.Turtle()t.speed(1)t.forward(50)t.backward(100)t.forward(200)t.backward(400)importturtlet=turtle.Turtle()t.speed(1)t.forward(50)t.backward(100)t.forward(200)t.backward(400)importturtlet=turtle.Turtle()t.speed(1)t.forward(50)t.backward(100)t.forward(200)t.backward(400)importturtlet=turtle.Turtle()t.speed(1)t.forward(50)t.backward(100)t.forward(200)t.backward(400)4.forward()與backward()小海龜在畫(huà)布上時(shí)刻都有自己的朝向,默認(rèn)情況下,繪圖剛開(kāi)始時(shí)小海龜朝向屏幕右側(cè)。無(wú)論小海龜當(dāng)下朝向何方,forward()方法的含義是向朝向的方向移動(dòng),稱為前進(jìn);而backward()方法是向朝向的反方向移動(dòng),即為后退。代碼1.4演示了這兩個(gè)方法的使用。1.5.2小海龜制圖的常用方法importturtlet=turtle.Turtle()t.speed(1)t.forward(50)t.backward(100)t.forward(200)t.backward(400)importturtlet=turtle.Turtle()t.speed(1)t.forward(50)t.backward(100)t.forward(200)t.backward(400)importturtlet=turtle.Turtle()t.speed(1)t.forward(50)t.backward(100)t.forward(200)t.backward(400)importturtlet=turtle.Turtle()t.speed(1)t.forward(50)t.backward(100)t.forward(200)t.backward(400)importturtlet=turtle.Turtle()t.speed(1)t.forward(50)t.backward(100)t.forward(200)t.backward(400)

turtle_window=t.getscreen()turtle_window.exitonclick()5.left()與right()既然小海龜時(shí)刻有朝向,前進(jìn)與后退都取決于當(dāng)下的朝向,那么如何調(diào)整小海龜?shù)某蚰??left()與right()方法可完成這個(gè)任務(wù)。left()與right()分別表示原地左轉(zhuǎn)、原地右轉(zhuǎn),括號(hào)內(nèi)提供具體的度數(shù)即可。注意,這里的“原地”二字,即在左轉(zhuǎn)或右轉(zhuǎn)時(shí),小海龜?shù)淖鴺?biāo)位置是不變的,只是朝向變了。例如下面的代碼1.5。1.5.2小海龜制圖的常用方法importturtlet=turtle.Turtle()t.speed(1)t.forward(50)t.backward(100)t.forward(200)t.backward(400)importturtlet=turtle.Turtle()t.speed(1)t.forward(50)t.backward(100)t.forward(200)t.backward(400)importturtlet=turtle.Turtle()t.speed(1)t.forward(50)t.backward(100)t.forward(200)t.backward(400)importturtlet=turtle.Turtle()t.speed(1)t.forward(50)t.backward(100)t.forward(200)t.backward(400)6.circle()小海龜還可以繪制簡(jiǎn)單的幾何形狀,如圓、圓弧或多邊形等都可以通過(guò)

circle()方法來(lái)完成。circle()

方法的語(yǔ)法如下。使用

circle()方法時(shí)可以提供

3項(xiàng)信息來(lái)描述要繪制的圓弧。具體來(lái)說(shuō),這

3項(xiàng)信息中必須提供

的是半徑radius,它的取值可正可負(fù)。如果radius為正數(shù),那么所繪制的圖形出現(xiàn)在小海龜朝向的左

側(cè);如果

radius

為負(fù)數(shù),那么所繪制的圖形出現(xiàn)在小海龜朝向的右側(cè)。另外兩項(xiàng)信息是可選的,其

extent

表示度數(shù),如果不足

360°,那么繪制的就是一段弧,也可以超過(guò)

360°。extent

的取值

也可正可負(fù),正數(shù)表示小海龜在繪制圖形時(shí)始終在前進(jìn),負(fù)數(shù)表示小海龜在繪制圖形時(shí)一直在后退。

最后一項(xiàng)信息

steps是一個(gè)正整數(shù),表示模擬圓弧需要的多邊形邊數(shù)。若沒(méi)有提供則由小海龜自行決

定,一般繪制出的圖案是比較光滑的圓或圓弧。如果提供了

steps值,則繪制相應(yīng)數(shù)量的邊(未必閉

合,因?yàn)?/p>

extent

的度數(shù)未必是

360°)。由于

circle()的變化比較多,理解其工作效果的最好方法就是實(shí)際嘗試各種可能,觀察其繪制的

效果。代碼1.6

列出了幾種典型情況,為了更好地觀察效果,要保證每次運(yùn)行時(shí)只有一個(gè)

circle()前

沒(méi)有“#”符號(hào)。1.5.2小海龜制圖的常用方法1.5.2小海龜制圖的常用方法1.5.2小海龜制圖的常用方法PART61.6小試牛刀1.6小試牛刀在讀者配置好自己的Python編程環(huán)境后,就可以小試牛刀了。本章還沒(méi)有展開(kāi)學(xué)習(xí)Python的更多知識(shí),先嘗試使用小海龜繪制一些漂亮、復(fù)雜的圖案。1.6.1繪制一朵向日葵下面的代碼1.7運(yùn)行后可以繪制一個(gè)類似向日葵的圖案。在書(shū)寫(xiě)這段代碼時(shí)要注意縮進(jìn)。之前的代碼例子中的所有行都沒(méi)有縮進(jìn),但代碼1.7中for語(yǔ)句后的兩行代碼都縮進(jìn)了4個(gè)空格。for語(yǔ)句會(huì)在第3章中進(jìn)行詳細(xì)介紹,這里讀者只需要知道Python使用縮進(jìn)來(lái)嚴(yán)格控制代碼之間的層次關(guān)系,如果沒(méi)有了縮進(jìn),則代碼的含義將完全不同。1.6.1繪制一朵向日葵代碼

1.7

繪制向日葵importturtlet=turtle.Turtle()t.speed(6)t.pencolor('red')#指定小海龜?shù)漠?huà)筆顏色t.fillcolor('yellow')#指定填充色t.begin_fill()#開(kāi)始填充forx

in

range(18):#這是一個(gè)循環(huán)t.forward(200)#每次循環(huán)要前進(jìn)

200個(gè)單位t.left(100)#然后左轉(zhuǎn)

100°t.end_fill()#結(jié)束填充screen=t.getscreen()screen.exitonclick()1.6.1繪制一朵向日葵在代碼1.7中出現(xiàn)了幾個(gè)關(guān)于小海龜?shù)男轮R(shí)點(diǎn)。pencolor()可以設(shè)置小海龜畫(huà)筆的顏色,從而決定繪圖筆跡的色彩。除了筆跡的顏色,幾何形狀內(nèi)部還可以有填充色。指定填充色時(shí)可以使用fillcolor(),并通過(guò)begin_fill()和end_fill()明確說(shuō)明從何時(shí)開(kāi)始填充,到何時(shí)結(jié)束。至于代碼中出現(xiàn)的for語(yǔ)句,在此只需大概理解,不構(gòu)成學(xué)習(xí)障礙即可。for語(yǔ)句是一個(gè)循環(huán)結(jié)構(gòu),其中的range(18)會(huì)生成一個(gè)整數(shù)序列,包含0~17共18個(gè)整數(shù)。for語(yǔ)句中的x會(huì)依次取值為0、1、2…、17,因此for語(yǔ)句會(huì)循環(huán)18次。每次循環(huán)都會(huì)將跟在for語(yǔ)句后被縮進(jìn)了的兩行代碼執(zhí)行一遍。因此小海龜會(huì)前進(jìn)200個(gè)單位、左轉(zhuǎn)100°,然后前進(jìn)200個(gè)單位、左轉(zhuǎn)100°,這樣重復(fù)18次。最后繪制出的效果如圖1.18所示。1.6.2繪制多彩的螺旋向日葵下面的例子仍然利用for語(yǔ)句循環(huán)結(jié)構(gòu),但這次繪制的是類似蝸牛殼的螺旋結(jié)構(gòu)。在代碼1.8中,有一些知識(shí)點(diǎn)會(huì)在后面的章節(jié)中進(jìn)行介紹。例如,列表及“%”運(yùn)算符。列表是Python中的一種數(shù)Python程序設(shè)計(jì)基礎(chǔ)(微課版)18據(jù)結(jié)構(gòu),關(guān)于列表的知識(shí)會(huì)在第5章中進(jìn)行介紹,這里只需形象地理解為一個(gè)顏料盒,里面有3種顏色供選擇即可?!?”符號(hào)是模運(yùn)算,會(huì)在第2章中進(jìn)行介紹。模運(yùn)算與列表配合起來(lái),實(shí)現(xiàn)每次循環(huán)都在顏料盒中選取一個(gè)顏色,然后以x為半徑使用所選顏色繪制圓。關(guān)鍵在于這里的x會(huì)逐漸變大,因此每次繪制的圓都比上一輪循環(huán)繪制的圓大。importturtlet=turtle.Turtle()window=t.getscreen()window.bgpic("file\\京劇臉譜.gif")#臉譜圖片在

file

文件夾下t.speed(0)t.pensize(2)t.pencolor("gray")t.penup()t.goto(-148,70)t.setheading(95)t.pendown()1.6.2繪制多彩的螺旋向日葵PART71.7拓展實(shí)踐:使用小海龜繪制京劇臉譜1.7拓展實(shí)踐:使用小海龜繪制京劇臉譜使用

turtle庫(kù)不僅可以繪制出美輪美奐的抽象幾何圖案,還可以繪制出生活中很具象的畫(huà)面。例

如,網(wǎng)上流傳著使用

turtle庫(kù)繪制

2022年北京冬奧會(huì)吉祥物冰墩墩的代碼,代碼運(yùn)行后,看著可愛(ài)

的冰墩墩一點(diǎn)點(diǎn)出現(xiàn)在屏幕上,感覺(jué)還是很美妙的。本章的拓展實(shí)踐環(huán)節(jié)給出一個(gè)使用

turtle

庫(kù)繪制京劇臉譜的例子。無(wú)論是冰墩墩還是京劇臉

譜,雖然繪制的內(nèi)容不同,但方法思路是一致的。通過(guò)這個(gè)案例,讀者對(duì)小海龜?shù)倪\(yùn)用會(huì)再上一

個(gè)臺(tái)階。1.7.1繪制前的預(yù)備工作京劇是國(guó)粹,京劇的臉譜也已經(jīng)成為一門(mén)藝術(shù),是代表中華傳統(tǒng)文化的符號(hào)之一。生旦凈末丑,

不同行當(dāng)?shù)哪樧V繪制各具特色,造型、用色擁有豐富的內(nèi)涵,其中的學(xué)問(wèn)大得很。作為一個(gè)練習(xí),

這里不去深究臉譜中的門(mén)道,讀者可到網(wǎng)絡(luò)上尋找自己喜愛(ài)的臉譜形象作為繪制的參考。1.7.1繪制前的預(yù)備工作京劇是國(guó)粹,京劇的臉譜也已經(jīng)成為一門(mén)藝術(shù),是代表中華傳統(tǒng)文化的符號(hào)之一。生旦凈末丑,

不同行當(dāng)?shù)哪樧V繪制各具特色,造型、用色擁有豐富的內(nèi)涵,其中的學(xué)問(wèn)大得很。作為一個(gè)練習(xí),

這里不去深究臉譜中的門(mén)道,讀者可到網(wǎng)絡(luò)上尋找自己喜愛(ài)的臉譜形象作為繪制的參考。為了使繪制的效果更好,可將預(yù)備好的臉譜圖片“貼到”小海龜繪圖的畫(huà)布上作為背景,然后

比照著進(jìn)行繪制,如代碼

1.9

所示。代碼首先生成一個(gè)小海龜

t,之后調(diào)用小海龜

t

getscreen()方

法得到小海龜所在的繪圖窗體對(duì)象。turtle庫(kù)的窗體對(duì)象擁有bgpic()方法,可以設(shè)置背景圖片。為方

便起見(jiàn),建議在代碼文件相同目錄下創(chuàng)建一個(gè)

file文件夾,將預(yù)先準(zhǔn)備好的臉譜圖片放在

file文件夾

下。在bgpic()的括號(hào)中提供臉譜圖片的文件路徑時(shí),路徑分隔符“\”要書(shū)寫(xiě)為“\\”,具體原因會(huì)

在第

4章中進(jìn)行解釋。1.7.1繪制前的預(yù)備工作為了提升繪制的速度,將速度值設(shè)為0,即最快。為了讓臉譜的輪廓線更明顯一些,可以使用

pensize()將筆跡的粗細(xì)設(shè)置為

2,后期在繪制眼部瞳孔等位置時(shí),可將筆跡粗細(xì)設(shè)為

1,以便將細(xì)節(jié)

繪制得更精致。pencolor()是設(shè)置筆跡顏色,這里暫時(shí)設(shè)為灰色,后期根據(jù)不同部位的需要可隨時(shí)更

改。運(yùn)行代碼1.9

后,臉譜圖片的中央位置將與小海龜繪圖窗體的默認(rèn)坐標(biāo)系原點(diǎn)(窗體中央)重

合,如圖

1.20所示。1.7.1繪制前的預(yù)備工作做好這些前期設(shè)置后,就可以指揮小海龜開(kāi)始繪制了。先從臉譜左側(cè)的耳根上方開(kāi)始繪制頭頂

的輪廓線,因此需要先將小海龜移動(dòng)到該位置。關(guān)于該位置的坐標(biāo)可以多次嘗試后準(zhǔn)確獲得。在嘗

試的過(guò)程中,始終注意繪圖窗體的坐標(biāo)原點(diǎn)在窗體中央,從中央向左側(cè)橫坐標(biāo)為負(fù),向右側(cè)橫坐標(biāo)

為正;從中央向上縱坐標(biāo)為正,向下縱坐標(biāo)為負(fù)。另外,在小海龜從窗體中央移動(dòng)到指定位置的過(guò)

程中不能留下痕跡,因此要使用penup()方法抬起畫(huà)筆,等到了指定位置后再調(diào)用小海龜?shù)膒endown()方法放下畫(huà)筆,做好繪制的準(zhǔn)備。代碼中還有一個(gè)操作是通過(guò)setheading()來(lái)設(shè)置小海龜?shù)某?。因?yàn)槔L制臉譜時(shí)主要使用小海龜?shù)腸ircle()方法,通過(guò)組合各種圓弧來(lái)形成臉譜造型,即使圓弧的半徑、所對(duì)圓心角都是一樣的,但小海龜?shù)某虿煌?,繪制出的圓弧位置也會(huì)不一樣,因此小海龜?shù)某蚝苤匾4_定小海龜朝向時(shí)要考慮小海龜?shù)某驊?yīng)與所繪制的圓弧相切。例如,一開(kāi)始從左側(cè)繪制臉譜頭頂輪廓時(shí),可以明顯看出小海龜?shù)钠鹗挤较驊?yīng)為垂直向上微微偏向左側(cè),因此代碼中設(shè)為95°。關(guān)于小海龜朝向的度數(shù)是這樣規(guī)定的,0°代表朝向右,90°代表朝向上,180°代表朝向左,270°則代表朝向下,如此一周為360°。1.7.2繪制臉譜代碼解析繪制臉譜的關(guān)鍵是利用小海龜?shù)腸ircle()方法,通過(guò)設(shè)置不同的半徑、圓心角度數(shù)繪制角度各異、大小不一的圓弧,利用這些圓弧組成臉譜的圖案。因此采用分而治之的策略,將臉譜圖案進(jìn)行合理分解,得到不同部位的局部圖案,各個(gè)擊破。首先是整個(gè)面部的外輪廓,不含耳朵。根據(jù)代碼1.9,小海龜已經(jīng)定位到左耳處的面部輪廓位置,朝向?yàn)?5°,即正上方微微偏左。下面利用代碼1.10即可繪制出整個(gè)面部的外輪廓圖案。1.7.2繪制臉譜代碼解析繪制臉譜的關(guān)鍵是利用小海龜?shù)腸ircle()方法,通過(guò)設(shè)置不同的半徑、圓心角度數(shù)繪制角度各異、大小不一的圓弧,利用這些圓弧組成臉譜的圖案。因此采用分而治之的策略,將臉譜圖案進(jìn)行合理分解,得到不同部位的局部圖案,各個(gè)擊破。首先是整個(gè)面部的外輪廓,不含耳朵。根據(jù)代碼1.9,小海龜已經(jīng)定位到左耳處的面部輪廓位置,朝向?yàn)?5°,即正上方微微偏左。下面利用代碼1.10即可繪制出整個(gè)面部的外輪廓圖案。t.circle(-148,190)

t.setheading(258)#頭頂弧線t.circle(900,7)#右側(cè)臉t.circle(-152,77)#右臉頰t.penup()#抬起畫(huà)筆t.goto(-148,70)#定位到左側(cè)臉位置t.setheading(282)

t.pendown()#海龜朝向?yàn)檎路狡襱.circle(-900,7)#左側(cè)臉t.circle(152,77)#左臉頰1.7.2繪制臉譜代碼解析繪制臉譜的關(guān)鍵是利用小海龜?shù)腸ircle()方法,通過(guò)設(shè)置不同的半徑、圓心角度數(shù)繪制角度各異、大小不一的圓弧,利用這些圓弧組成臉譜的圖案。因此采用分而治之的策略,將臉譜圖案進(jìn)行合理分解,得到不同部位的局部圖案,各個(gè)擊破。首先是整個(gè)面部的外輪廓,不含耳朵。根據(jù)代碼1.9,小海龜已經(jīng)定位到左耳處的面部輪廓位置,朝向?yàn)?5°,即正上方微微偏左。下面利用代碼1.10即可繪制出整個(gè)面部的外輪廓圖案。1.7.2繪制臉譜代碼解析代碼1.11繪制京劇臉譜:左眼部分(見(jiàn)書(shū)20頁(yè))代碼1.12繪制京劇臉譜:右眼部分(見(jiàn)書(shū)21頁(yè))1.7.3為繪制的臉譜題字臉譜所有的部位繪制完畢后,可以在臉譜下方題上一行字,增加畫(huà)面的美觀性。代碼

1.13如下,

使用小海龜?shù)膚rite()方法,指定要書(shū)寫(xiě)的文本內(nèi)容及字體即可。代碼

1.13

繪制京劇臉譜:題字全部繪制工作完成后,小海龜功成身退,這樣畫(huà)面更美觀。另外,也要記得將一開(kāi)始的參照?qǐng)D

片去掉,最后的繪制效果如圖

1.21所示(個(gè)別顏色與原圖片略有不同)。t.penup()t.goto(-155,-250)t.pendown()t.write("京劇臉譜中華藝術(shù)",font=('黑體',20,'bold'))t.hideturtle()turtle.done()本章總結(jié)本章簡(jiǎn)述了Python

語(yǔ)言的特色與版本,著重講解了Python

編程環(huán)境的搭建,介紹了常見(jiàn)的Python

集成開(kāi)發(fā)環(huán)境,講解了

turtle庫(kù)的基本概念,并通過(guò)若干實(shí)例演示了turtle庫(kù)的使用方法。匯報(bào)人:WPSPython程序設(shè)計(jì)基礎(chǔ)第二章基礎(chǔ)語(yǔ)法概述目錄01Python語(yǔ)法規(guī)范02變量和數(shù)據(jù)類型03常見(jiàn)運(yùn)算符04輸入與輸出目錄05Python生態(tài)系統(tǒng)之math庫(kù)06小試牛刀07拓展實(shí)踐:模擬自動(dòng)售貨機(jī)找零.

養(yǎng)成良好的編程習(xí)慣。.深入理解變量的概念。.掌握Python常用的數(shù)據(jù)類型。.掌握Python常用的運(yùn)算符。.掌握print()與input()函數(shù)的使用方法。.掌握math庫(kù)的使用方法。學(xué)習(xí)目標(biāo)PART12.1Python語(yǔ)法規(guī)范2.1.1大小寫(xiě)Python

區(qū)分代碼的大小寫(xiě),這被稱為大小寫(xiě)敏感。例如,在代碼

2.1

中,如果將小海龜庫(kù)中的

turtle.Turtle()類寫(xiě)成了全小寫(xiě),則代碼運(yùn)行時(shí)就會(huì)報(bào)錯(cuò)。2.1.1大小寫(xiě)區(qū)分代碼大小寫(xiě)的程序語(yǔ)言有很多,因此有一個(gè)良好的書(shū)寫(xiě)代碼習(xí)慣很重要。在為程序中各種

要素命名時(shí),一定要有一個(gè)統(tǒng)一的規(guī)范。例如,一般面向?qū)ο笾蓄惖拿Q都是首字母大寫(xiě);如果名

稱使用多個(gè)單詞,則單詞之間可以使用下畫(huà)線連接等。當(dāng)然這些習(xí)慣不是強(qiáng)制的,而且不同的程序

語(yǔ)言往往有不同的風(fēng)格。但一定要有一個(gè)良好的編程習(xí)慣,并且要在一開(kāi)始就注意養(yǎng)成。2.1.2縮進(jìn)在C、C++、Java、C#等很多程序語(yǔ)言中,代碼塊使用{}括起來(lái)。但Python省去了花括號(hào),直接強(qiáng)制使用縮進(jìn)來(lái)表示代碼塊,如代碼2.2中for語(yǔ)句后面的3行代碼都有4個(gè)空格的縮進(jìn),這3行代碼就構(gòu)成了一個(gè)代碼塊,隸屬于for語(yǔ)句。for語(yǔ)句每循環(huán)一次都要執(zhí)行這3行代碼。2.1.2縮進(jìn)代碼

2.3

有無(wú)縮進(jìn)效果大不同importturtlet=turtle.Turtle()t.speed(0)

#速度設(shè)為最快colors=

["red","yellow","green"]

#這是一個(gè)顏色盒forxin

range(20,100):#循環(huán)t.pencolor(colors[x%3])

#在

3個(gè)顏色中挑一個(gè)t.circle(x)

#以

x

為半徑畫(huà)個(gè)圓t.left(10)

#左轉(zhuǎn)

10°

,這行不屬于

for循環(huán)t.getscreen().exitonclick()2.1.2縮進(jìn)在Python中,每一層的縮進(jìn)為4個(gè)空格,但一般情況下并不需要程序員手動(dòng)輸入。第1章介紹的眾多集成開(kāi)發(fā)環(huán)境都有自動(dòng)添加縮進(jìn)的功能。例如,在代碼2.3中,輸入for語(yǔ)句所在行最后的冒號(hào)并按Enter鍵后,集成開(kāi)發(fā)環(huán)境會(huì)自動(dòng)添加縮進(jìn)。如果沒(méi)有出現(xiàn)縮進(jìn),一般是因?yàn)閒or語(yǔ)句行最后的英文冒號(hào)寫(xiě)成了中文的冒號(hào)。Python語(yǔ)言用到的所有特殊字符,如冒號(hào)、點(diǎn)、逗號(hào)、括號(hào)、引號(hào)等,都是英文半角格式下的。2.1.3注釋前面出現(xiàn)的很多代碼例子中都有以“#”開(kāi)頭的文字內(nèi)容,這些就是代碼的注釋。注釋用于幫助用戶理解代碼,它們不屬于代碼,不會(huì)被執(zhí)行。好的代碼大都有注釋,注釋能顯著提高對(duì)代碼的理解。除添加注釋外,好的代碼還要求有自解釋性,也就是代碼本身具有很好的描述性,其各要素的命名都很直觀。2.1.4留白代碼一般要適當(dāng)?shù)牧舭?,包括空格、空行等。前面的代碼例子為了節(jié)約篇幅,行與行之間沒(méi)有留白。但真正在計(jì)算機(jī)中書(shū)寫(xiě)代碼時(shí),一般要適當(dāng)留白。例如,代碼2.2添加留白后變?yōu)榇a2.4??梢钥吹皆趇mport語(yǔ)句后有空行,在for語(yǔ)句循環(huán)結(jié)構(gòu)和窗體退出的代碼之間也有空行。這些空行不是必需的,但它們可以將整個(gè)代碼分成幾個(gè)“段落”,每個(gè)段落都有自己的主題,

讓程序也有起承轉(zhuǎn)合。其實(shí)不僅行與行之間要留白,同一行的字符之間也可以留白。仔細(xì)觀察代

碼2.4,在“=”的兩側(cè)、“%”的兩側(cè)等位置都添加了空格。這些空格使程序看上去更舒展、通

透、美觀。2.1.5換行如果有一行代碼特別長(zhǎng),屏幕顯示不下怎么辦?有人認(rèn)為這不是問(wèn)題,只需換行即可。但這個(gè)

問(wèn)題并沒(méi)有看上去那么簡(jiǎn)單。程序是由多行代碼構(gòu)成的。現(xiàn)在將一行長(zhǎng)長(zhǎng)的代碼分成了兩行來(lái)寫(xiě),Python解釋器如何知道程

序中的兩行代碼原本就是兩行獨(dú)立的代碼,還是某一行長(zhǎng)代碼被分成了兩行呢?因此必須使用一種

方式讓

Python解釋器可以區(qū)分這兩種情形。在很多程序語(yǔ)言中,一行代碼最后要加一個(gè)特殊記號(hào)來(lái)表示本行代碼結(jié)束。例如,C系列的語(yǔ)

言會(huì)在一行代碼尾部加一個(gè)分號(hào)。如果沒(méi)有看到分號(hào),就意味著本行代碼沒(méi)有結(jié)束,屏幕上的下一行應(yīng)該還是同一行代碼。這樣就解決這個(gè)問(wèn)題了,但其弊端是每寫(xiě)一行代碼都得在尾部加一個(gè)分號(hào),

包括那些很短的行,如果遺忘還會(huì)造成誤會(huì)。2.1.5換行Python

沒(méi)有采用這個(gè)方案,因此平時(shí)書(shū)寫(xiě)代碼時(shí)不用在尾部加記號(hào)。當(dāng)偶爾遇到超長(zhǎng)代碼行需

要分成多行書(shū)寫(xiě)時(shí),只需在行尾添加斜杠“\”即可。下面看代碼2.5,這個(gè)例子嘗試使用小海龜模

擬縱向書(shū)寫(xiě)的效果,輸出梁?jiǎn)⒊拿渡倌曛袊?guó)說(shuō)》的一段文字。這段文字以字符串的形式出現(xiàn)

在代碼中,雖然只是原文中的一段,但對(duì)于代碼行來(lái)說(shuō),還是過(guò)長(zhǎng),一行無(wú)法寫(xiě)完。可以看到,在

代碼中這段文字每次換行時(shí)行尾都有一個(gè)“\”,因此這幾行其實(shí)是一行代碼。代碼2.5縱向輸出《少年中國(guó)說(shuō)》一段文字(代碼段見(jiàn)書(shū)27頁(yè))PART22.2變量和數(shù)據(jù)類型2.2變量和數(shù)據(jù)類型變量是非?;A(chǔ)的語(yǔ)言要素,深入理解變量的概念對(duì)于編程初學(xué)者的重要性是怎么言之都不為

過(guò)的。正是因?yàn)樽兞渴只A(chǔ),所以前面的很多代碼例子中已經(jīng)不可避免地用到了變量。例如,代

2.5

中的小海龜

t,還有保存《少年中國(guó)說(shuō)》文字內(nèi)容的

content

等,都是變量。下面來(lái)正式認(rèn)識(shí)

一下變量。2.2.1變量編程與烹飪有相似之處。烹飪的過(guò)程將原料加工成菜肴,在這個(gè)過(guò)程中,原料是輸入,最后的

菜肴是輸出。加工過(guò)程中需要各種類型的器皿容納食材。程序也需要輸入數(shù)據(jù),運(yùn)行過(guò)程中會(huì)將輸

入數(shù)據(jù)加工成需要的樣子后輸出。例如,將輸入的原始圖片數(shù)據(jù)加工成用戶喜歡的樣子輸出。在這

個(gè)加工過(guò)程中,程序也需要各種容器來(lái)容納數(shù)據(jù),這些容器就是變量。程序中的變量有不同的類型,稱為數(shù)據(jù)類型。好比廚房容器分為鍋、碗、瓢、盆等不同的種類,

不同類型的容器適合容納不同類型的數(shù)據(jù)。與廚房容器不同的是,程序中的變量要有明確的名稱,

稱為標(biāo)識(shí)符,只有這樣才能方便地在程序中使用它們。例如,前面代碼中根據(jù)

Turlte

類生成一個(gè)具

體的小海龜對(duì)象并保存在

t這個(gè)變量中,如果沒(méi)有

t這個(gè)名稱,就無(wú)法方便地指揮這個(gè)小海龜。同樣

地,《少年中國(guó)說(shuō)》中的那段文字保存在

content

變量中,如果沒(méi)有

content

這個(gè)名稱,程序又該怎

樣訪問(wèn)這段文字內(nèi)容呢?因此程序中的變量都要有名稱,一般由英文大小寫(xiě)字母、數(shù)字、下畫(huà)線等常用字符構(gòu)成,但不能以數(shù)字開(kāi)頭。而且因?yàn)?/p>

Python是大小寫(xiě)敏感的語(yǔ)言,所以標(biāo)識(shí)符是區(qū)分大小

寫(xiě)的。另外,變量名通常也不能使用

Python語(yǔ)言固有的一些標(biāo)識(shí)符,因?yàn)樗鼈円呀?jīng)有了其他特殊含

義了。例如,不能將一個(gè)變量命名為

for,類似

for這樣的一些

Python語(yǔ)言固有的標(biāo)識(shí)符被稱為Python

語(yǔ)言的關(guān)鍵字(keyword)。2.2.1變量在

Python

中,變量要先定義,再使用。所謂定義其實(shí)是在計(jì)算機(jī)內(nèi)存中開(kāi)辟一塊空間,并將這

塊空間初始化,然后給這塊空間起個(gè)名稱(標(biāo)識(shí)符),以后要訪問(wèn)這塊內(nèi)存空間中的數(shù)據(jù)時(shí)只需通

過(guò)標(biāo)識(shí)符即可,不用操心內(nèi)存空間的二進(jìn)制地址。這也是高級(jí)程序語(yǔ)言“高級(jí)”的地方之一,遠(yuǎn)離

機(jī)器世界,努力靠近人類世界。具體來(lái)說(shuō),在

Python

中定義變量是通過(guò)賦值語(yǔ)句來(lái)完成的。例如,

t=turtle.Turtle(),又或者

author="梁?jiǎn)⒊倌曛袊?guó)說(shuō)"。這里的等號(hào)“=”不是數(shù)學(xué)意義上的相等,

而是表示賦值,是將等號(hào)右側(cè)的數(shù)據(jù)賦值給等號(hào)左側(cè)的變量(Python

使用“==”表示相等)。在賦

值的過(guò)程中,變量就被定義好了,程序即可使用這個(gè)標(biāo)識(shí)符來(lái)訪問(wèn)該變量,或者說(shuō)訪問(wèn)該變量所指

代的內(nèi)存空間。2.2.1變量再來(lái)看一個(gè)使用變量的例子。在代碼

2.6

中,通過(guò)賦值語(yǔ)句定義了一個(gè)

age

變量,其初始值為

18。之后使用print()函數(shù)輸出

age變量的值,然后再一次為變量

age賦值。第二次為

age賦值時(shí),由

age變量已經(jīng)存在,無(wú)須定義,直接修改其值即可。注意,

第二個(gè)賦值語(yǔ)句中寫(xiě)在等號(hào)右側(cè)的

age

和等號(hào)左側(cè)的

age是對(duì)

age變量不同的操作。等號(hào)右側(cè)的

age是對(duì)變量

age

的讀取操作,讀取得到的

值加

1后再寫(xiě)入

age

變量。如果將上述代碼的第一行變?yōu)樽⑨專瑒t運(yùn)行就會(huì)出錯(cuò)。錯(cuò)誤信息為“NameError:name‘a(chǎn)ge’isnot

defined”,意思是變量

age沒(méi)有定義。這是由于在

age沒(méi)有定義的情況下,print()函數(shù)卻要輸出

age

變量的值,從而引起變量未定義的錯(cuò)誤。因此在使用一個(gè)變量前一定要確保其有定義。2.2.2數(shù)據(jù)類型變量保存的數(shù)據(jù)有不同類型之分,因此變量也有相應(yīng)的類型。例如,保存整數(shù)的整型變量、

保存小數(shù)的浮點(diǎn)型變量,以及復(fù)數(shù)類型、字符串等。每一種數(shù)據(jù)類型都有一些共同的特征及針

對(duì)這種類型的一系列操作。在某些程序語(yǔ)言中,定義變量時(shí)必須明確說(shuō)明變量的類型,而且這

個(gè)變量一經(jīng)確定就不能保存其他類型的數(shù)據(jù),如聲明為整型的變量不能用來(lái)保存字符串。但

Python語(yǔ)言不是這樣的。Python對(duì)數(shù)據(jù)類型的處理比較靈活,定義變量時(shí)無(wú)須聲明變量的類型,

Python會(huì)自動(dòng)判斷。在

Python程序中,同一個(gè)變量上一刻保存的是整數(shù),下一秒換成字符串也

是沒(méi)問(wèn)題的。雖然

Python變量的數(shù)據(jù)類型比較靈活,但并不意味著數(shù)據(jù)類型對(duì)于

Python不重要。了解常見(jiàn)數(shù)

據(jù)類型的特點(diǎn)及相應(yīng)操作仍然是一個(gè)重要而基礎(chǔ)的工作。本章主要介紹整型、浮點(diǎn)型、復(fù)數(shù)類型、

邏輯類型等基本類型,關(guān)于字符串等類型會(huì)在后續(xù)章節(jié)逐漸進(jìn)行介紹。2.2.2數(shù)據(jù)類型1.整型顧名思義,整型變量中保存的是整數(shù)。整數(shù)可以進(jìn)行各種常見(jiàn)的數(shù)學(xué)運(yùn)算,下面的代碼2.7以

等差數(shù)列為例做了簡(jiǎn)單的演示。在這段代碼中有幾個(gè)注意點(diǎn):①可以使用Python內(nèi)置函數(shù)type()查看變量類型;②整型變量的加法、減法、乘法運(yùn)算結(jié)果仍為整型,但除法運(yùn)算不是。在Python3.x版本中,兩個(gè)整數(shù)的除法結(jié)果為小數(shù),無(wú)論是否整除2.2.2數(shù)據(jù)類型2.浮點(diǎn)型浮點(diǎn)型變量中保存的是小數(shù)。小數(shù)可以使用十進(jìn)制的方式直接寫(xiě)出來(lái),如3.14;也可以采用科

學(xué)記數(shù)法來(lái)表達(dá),如

5.23e3表示

5230.0。這里的

e大小寫(xiě)均可,表示

10

的冪,指數(shù)由e后的數(shù)值決

定。指數(shù)可以是負(fù)的,如

6.02e-2表示

0.0602。整數(shù)與小數(shù)在計(jì)算機(jī)中的處理方法是不一樣的。因此14

與14.0

雖然數(shù)值大小一樣,但一個(gè)為

整數(shù),另一個(gè)為浮點(diǎn)數(shù),不能混為一談。另外,整數(shù)運(yùn)算是精確的,而浮點(diǎn)數(shù)運(yùn)算是有誤差的。這

是因?yàn)槌绦蛑斜磉_(dá)的十進(jìn)制小數(shù)其實(shí)在計(jì)算機(jī)內(nèi)是要轉(zhuǎn)換為二進(jìn)制小數(shù)的。但很多十進(jìn)制小數(shù)無(wú)法

精確地用二進(jìn)制小數(shù)來(lái)表達(dá),這有點(diǎn)類似很多分?jǐn)?shù)無(wú)法用小數(shù)精確表達(dá)。例如,1/3是一個(gè)精確值,

但轉(zhuǎn)換為小數(shù)是一個(gè)無(wú)限小數(shù)。如果只能寫(xiě)到小數(shù)點(diǎn)后若干位的話,則得到的小數(shù)就是1/3的近似

值,是有誤差的。同樣地,一些十進(jìn)制小數(shù)在轉(zhuǎn)換為二進(jìn)制小數(shù)時(shí),轉(zhuǎn)換過(guò)程永遠(yuǎn)沒(méi)有盡頭,計(jì)算

機(jī)不可能無(wú)限地進(jìn)行這個(gè)轉(zhuǎn)換,一定要在某個(gè)位置截?cái)?,最終得到的二進(jìn)制小數(shù)就是原十進(jìn)制小數(shù)

的一個(gè)近似值。下面的代碼2.8

演示了浮點(diǎn)數(shù)運(yùn)算有誤差的事實(shí)。當(dāng)然這個(gè)誤差非常得小,如果不是進(jìn)行某些

高精度的運(yùn)算,一般可以忽略。

2.2.2數(shù)據(jù)類型2.浮點(diǎn)型浮點(diǎn)型變量中保存的是小數(shù)。小數(shù)可以使用十進(jìn)制的方式直接寫(xiě)出來(lái),如3.14;也可以采用科

學(xué)記數(shù)法來(lái)表達(dá),如

5.23e3表示

5230.0。這里的

e大小寫(xiě)均可,表示

10

的冪,指數(shù)由e后的數(shù)值決

定。指數(shù)可以是負(fù)的,如

6.02e-2表示

0.0602。

整數(shù)與小數(shù)在計(jì)算機(jī)中的處理方法是不一樣的。因此14

與14.0

雖然數(shù)值大小一樣,但一個(gè)為

整數(shù),另一個(gè)為浮點(diǎn)數(shù),不能混為一談。另外,整數(shù)運(yùn)算是精確的,而浮點(diǎn)數(shù)運(yùn)算是有誤差的。這

是因?yàn)槌绦蛑斜磉_(dá)的十進(jìn)制小數(shù)其實(shí)在計(jì)算機(jī)內(nèi)是要轉(zhuǎn)換為二進(jìn)制小數(shù)的。但很多十進(jìn)制小數(shù)無(wú)法

精確地用二進(jìn)制小數(shù)來(lái)表達(dá),這有點(diǎn)類似很多分?jǐn)?shù)無(wú)法用小數(shù)精確表達(dá)。2.2.2數(shù)據(jù)類型2.浮點(diǎn)型例如,1/3是一個(gè)精確值,

但轉(zhuǎn)換為小數(shù)是一個(gè)無(wú)限小數(shù)。如果只能寫(xiě)到小數(shù)點(diǎn)后若干位的話,則得到的小數(shù)就是1/3的近似

值,是有誤差的。同樣地,一些十進(jìn)制小數(shù)在轉(zhuǎn)換為二進(jìn)制小數(shù)時(shí),轉(zhuǎn)換過(guò)程永遠(yuǎn)沒(méi)有盡頭,計(jì)算

機(jī)不可能無(wú)限地進(jìn)行這個(gè)轉(zhuǎn)換,一定要在某個(gè)位置截?cái)啵罱K得到的二進(jìn)制小數(shù)就是原十進(jìn)制小數(shù)

的一個(gè)近似值。下面的代碼2.8

演示了浮點(diǎn)數(shù)運(yùn)算有誤差的事實(shí)。當(dāng)然這個(gè)誤差非常得小,如果不是進(jìn)行某些

高精度的運(yùn)算,一般可以忽略。

2.2.2數(shù)據(jù)類型3.復(fù)數(shù)類型這里的復(fù)數(shù)即中學(xué)數(shù)學(xué)中的復(fù)數(shù),有實(shí)部與虛部,只不過(guò)將虛部單位

i

改寫(xiě)成字母

j。代碼

2.9

中首先定義了一個(gè)復(fù)數(shù)型變量

a,然后使用

type()函數(shù)確認(rèn)其數(shù)據(jù)類型,再輸出復(fù)數(shù)

a

的實(shí)部和虛部,

最后輸出

a

的值。

2.2.2數(shù)據(jù)類型3.復(fù)數(shù)類型這里的復(fù)數(shù)即中學(xué)數(shù)學(xué)中的復(fù)數(shù),有實(shí)部與虛部,只不過(guò)將虛部單位

i

改寫(xiě)成字母

j。代碼

2.9

中首先定義了一個(gè)復(fù)數(shù)型變量

a,然后使用

type()函數(shù)確認(rèn)其數(shù)據(jù)類型,再輸出復(fù)數(shù)

a

的實(shí)部和虛部,

最后輸出

a

的值??梢钥吹阶兞?/p>

a

的類型是complex,即復(fù)數(shù)類型。而輸出其實(shí)部與虛部的代碼又一次見(jiàn)到了面向

對(duì)象中的“點(diǎn)”形式,這說(shuō)明一個(gè)簡(jiǎn)單的復(fù)數(shù)也是一個(gè)對(duì)象,所有的復(fù)數(shù)構(gòu)成一個(gè)復(fù)數(shù)類,它們擁

有一些共同的特征屬性,如都有實(shí)部與虛部。另外需要注意的是,復(fù)數(shù)的實(shí)部、虛部是實(shí)數(shù),不限

于整數(shù),因此輸出的實(shí)部、虛部是浮點(diǎn)型。

2.2.3類型轉(zhuǎn)換不同類型的數(shù)據(jù)之間是可以根據(jù)需要進(jìn)行轉(zhuǎn)換的,如代碼

2.7

中等差數(shù)列需要將求出的

a_5

浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù),這可以使用

Python

內(nèi)置的

int()函數(shù)來(lái)完成,如代碼

2.10

中的粗體代碼所示。PART32.3常見(jiàn)運(yùn)算符2.3.1算術(shù)運(yùn)算符2.3.1算術(shù)運(yùn)算符算術(shù)運(yùn)算符可以完成基本的數(shù)學(xué)運(yùn)算,如加、減、乘、除等。表

2.1列出了幾種

Python常用的

算術(shù)運(yùn)算符。運(yùn)算符+加法

減法*乘法/除法//整除:返回商的整數(shù)部分。15

//2的結(jié)果是

7%模運(yùn)算:返回商的余數(shù)。

15%2的結(jié)果是1**乘方:2**3結(jié)果是

8

,4**0.5結(jié)果是

2.0說(shuō)明2.3.1算術(shù)運(yùn)算符2.3.1算術(shù)運(yùn)算符模運(yùn)算有一些非常典型的應(yīng)用。例如,判斷一個(gè)整數(shù)是不是偶數(shù),可以很容易用%

運(yùn)算來(lái)實(shí)

現(xiàn)。又如,假設(shè)程序接到的輸入是從負(fù)無(wú)窮到正無(wú)窮區(qū)間的任一整數(shù),但程序需要將輸入的整數(shù)變

為[0,2]區(qū)間的一個(gè)整數(shù)。這時(shí)模運(yùn)算就派上用場(chǎng)了,只需讓輸入的整數(shù)%3

即可。還記得第

1章繪制

彩色螺旋的例子嗎?再來(lái)看一遍這個(gè)例子的代碼,注意其中的粗體顯示部分。代碼2.12繪制彩色螺旋(代碼1.8重現(xiàn))importturtlet=turtle.Turtle()t.speed(0)

#速度設(shè)為最快colors=

["red","yellow","green"]

#這是一個(gè)顏色盒forxin

range(20,100):#循環(huán)t.pencolor(colors[x%3])

#在

3

溫馨提示

  • 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)論