Python程序設(shè)計(jì)基礎(chǔ)第一章 Python概述_第1頁
Python程序設(shè)計(jì)基礎(chǔ)第一章 Python概述_第2頁
Python程序設(shè)計(jì)基礎(chǔ)第一章 Python概述_第3頁
Python程序設(shè)計(jì)基礎(chǔ)第一章 Python概述_第4頁
Python程序設(shè)計(jì)基礎(chǔ)第一章 Python概述_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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的集成開發(fā)環(huán)境簡(jiǎn)介目錄05Python生態(tài)系統(tǒng)之tutle庫06小試牛刀07拓展實(shí)踐:使用小海龜繪制京劇臉譜

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

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

代碼

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

1.16所示。代碼

1.1

小海龜?shù)?/p>

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

turtle庫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ù),也可以使用更直觀的英語單詞來描述,如表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()小海龜繪圖的過程可以形象地想象為小海龜拖著一支筆在畫布上爬行。如果只需要小海龜移動(dòng)位置,不需要留下筆跡,則可以使用penup()方法將筆抬起。同理,pendown()可在需要時(shí)將筆放在畫布上以便留下筆跡。下面的代碼1.3演示了利用penup()與pendown()兩個(gè)方法恰當(dāng)?shù)乜刂菩『}斣谛枰臅r(shí)機(jī)抬起畫筆或放下畫筆。這段代碼繪制了一個(gè)中心位于坐標(biāo)原點(diǎn)的正方形,因此小海龜一開始的移動(dòng),以及繪制完正方形回到坐標(biāo)原點(diǎn)的移動(dòng)都不需要留下痕跡,需要適時(shí)地將畫筆抬起。1.5.2小海龜制圖的常用方法importturtlet=turtle.Turtle()#創(chuàng)建一個(gè)小海龜t.speed(1)#爬行速度t.penup()#抬起畫筆t.goto(100,100)#移動(dòng)小海龜?shù)阶鴺?biāo)指定位置t.pendown()#放下畫筆t.backward(200)#后退

200個(gè)單位,請(qǐng)問小海龜在向哪邊移動(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()小海龜在畫布上時(shí)刻都有自己的朝向,默認(rèn)情況下,繪圖剛開始時(shí)小海龜朝向屏幕右側(cè)。無論小海龜當(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()小海龜在畫布上時(shí)刻都有自己的朝向,默認(rèn)情況下,繪圖剛開始時(shí)小海龜朝向屏幕右側(cè)。無論小海龜當(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)單的幾何形狀,如圓、圓弧或多邊形等都可以通過

circle()方法來完成。circle()

方法的語法如下。使用

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

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

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

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

側(cè);如果

radius

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

extent

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

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

360°。extent

的取值

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

最后一項(xiàng)信息

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

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

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

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

extent

的度數(shù)未必是

360°)。由于

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

效果。代碼1.6

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

circle()前

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

1.7

繪制向日葵importturtlet=turtle.Turtle()t.speed(6)t.pencolor('red')#指定小海龜?shù)漠嫻P顏色t.fillcolor('yellow')#指定填充色t.begin_fill()#開始填充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è)置小海龜畫筆的顏色,從而決定繪圖筆跡的色彩。除了筆跡的顏色,幾何形狀內(nèi)部還可以有填充色。指定填充色時(shí)可以使用fillcolor(),并通過begin_fill()和end_fill()明確說明從何時(shí)開始填充,到何時(shí)結(jié)束。至于代碼中出現(xiàn)的for語句,在此只需大概理解,不構(gòu)成學(xué)習(xí)障礙即可。for語句是一個(gè)循環(huán)結(jié)構(gòu),其中的range(18)會(huì)生成一個(gè)整數(shù)序列,包含0~17共18個(gè)整數(shù)。for語句中的x會(huì)依次取值為0、1、2…、17,因此for語句會(huì)循環(huán)18次。每次循環(huán)都會(huì)將跟在for語句后被縮進(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語句循環(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)算與列表配合起來,實(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庫不僅可以繪制出美輪美奐的抽象幾何圖案,還可以繪制出生活中很具象的畫面。例

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

turtle庫繪制

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

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

turtle

庫繪制京劇臉譜的例子。無論是冰墩墩還是京劇臉

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

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

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

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

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

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

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

1.9

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

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

t

getscreen()方

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

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

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

file文件夾

下。在bgpic()的括號(hào)中提供臉譜圖片的文件路徑時(shí),路徑分隔符“\”要書寫為“\\”,具體原因會(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è)置后,就可以指揮小海龜開始繪制了。先從臉譜左側(cè)的耳根上方開始繪制頭頂

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論