Python程序設(shè)計(jì)基礎(chǔ) 課件全套 王靜紅 第1-10章 Python概述- 面向?qū)ο缶幊蘝第1頁
Python程序設(shè)計(jì)基礎(chǔ) 課件全套 王靜紅 第1-10章 Python概述- 面向?qū)ο缶幊蘝第2頁
Python程序設(shè)計(jì)基礎(chǔ) 課件全套 王靜紅 第1-10章 Python概述- 面向?qū)ο缶幊蘝第3頁
Python程序設(shè)計(jì)基礎(chǔ) 課件全套 王靜紅 第1-10章 Python概述- 面向?qū)ο缶幊蘝第4頁
Python程序設(shè)計(jì)基礎(chǔ) 課件全套 王靜紅 第1-10章 Python概述- 面向?qū)ο缶幊蘝第5頁
已閱讀5頁,還剩593頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

匯報(bào)人:WPSPython程序設(shè)計(jì)基礎(chǔ)第一章Python概述目錄01初識(shí)Python02理解Python解釋器03熟悉Python自帶的編程環(huán)境04Python的集成開發(fā)環(huá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è)詞出自英國20世紀(jì)70年代首播的電視喜劇《蒙提·派森的飛行馬戲團(tuán)》(MontyPython'sFlyingCircus)。Python這個(gè)單詞的意思是大蟒蛇,因此很多Python書籍封面都會(huì)有一個(gè)造型各異的蟒蛇圖案。1.1初識(shí)PythonPython還有一個(gè)優(yōu)勢是其龐大的生態(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對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ī)器語言相對而言的。機(jī)器語言是計(jì)算機(jī)可以理解并直接執(zhí)行的程序語言,但對于人類來說不夠友好,因此才會(huì)出現(xiàn)高級(jí)程序語言。所謂“高級(jí)”是指這類程序語言距離人類的思維更近,便于人類程序員理解,極大地提高了編程的效率和質(zhì)量。但隨之而來的一個(gè)問題是,計(jì)算機(jī)無法直接理解高級(jí)程序語言編寫的代碼,因此需要將高級(jí)程序語言代碼翻譯成相應(yīng)的機(jī)器語言。1.2理解Python解釋器翻譯過程有兩種方式,即編譯和解釋。簡單來說,編譯是指將原始的程序語言代碼先整體翻譯為目標(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í)并不需要翻譯家在場。解釋方式則類似于讓這位翻譯家將原始的英文小說逐句地口譯給讀者。在這個(gè)口譯過程中,不會(huì)產(chǎn)生一本中文版的小說,翻譯家的解釋工作與讀者的理解執(zhí)行是一氣呵成的。在編譯方式中,翻譯家相當(dāng)于編譯器;而在解釋方式中,翻譯家相當(dāng)于解釋器。無論是編譯器還是解釋器,都是在底層起支撐作用的計(jì)算機(jī)程序。1.2理解Python解釋器編譯與解釋這兩種方式各有利弊,長期共存。當(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)。針對不同的操作系統(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解釋器下載鏈接。對于初學(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)境簡介成功安裝Python解釋器后,在Windows的“開始”菜單中會(huì)出現(xiàn)如圖1.3所示的條目。在這4個(gè)條目中,上方2個(gè)是Python自帶的編程環(huán)境,下方2個(gè)是關(guān)于Python及一些工具包的幫助文檔,它們是了解Python和工具包的第一手資料。下面簡單介紹Python自帶的2個(gè)編程環(huán)境。1.3.2Python自帶編程環(huá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)境簡介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)境簡介除上述這種交互式運(yùn)行方式外,IDLE還可以運(yùn)行較長篇幅的代碼文件。選擇圖1.5中的【File】→【NewFile】選項(xiàng),打開圖1.6所示的窗口。在該窗口中可以輸入多行代碼并通過【File】菜單保存為一個(gè)文件,擴(kuò)展名一般為.py。圖1.6的標(biāo)題行中顯示的代碼文件為welcome.py。1.3.2Python自帶編程環(huán)境簡介代碼保存后,可以通過選擇圖1.6中的【Run】→【RunModule】選項(xiàng)來運(yùn)行代碼文件。圖1.6中的代碼運(yùn)行效果如圖1.7所示。Python自帶的IDLE工具雖然功能算不上很強(qiáng)大,但體積小巧、啟動(dòng)速度快,且支持語法高亮顯示和調(diào)試功能,這對于初學(xué)者也是夠用的。PART41.4Python的集成開發(fā)環(huán)境簡介作為一種當(dāng)今主流的編程語言,Python擁有很多功能非常強(qiáng)大的集成開發(fā)環(huán)境,如PyCharm、VisualStudioCode等,如果是進(jìn)行數(shù)據(jù)分析或機(jī)器學(xué)習(xí),JupyterNotebook是非常好的選擇。而對于剛剛接觸編程語言的初學(xué)者來說,Thonny不失為一個(gè)友好易用的工具。Python集成開發(fā)環(huán)境工具有很多,無法一一提及。下面簡單介紹幾個(gè),以幫助讀者選擇合適的集成開發(fā)環(huán)境。1.4Python的集成開發(fā)環(huá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)、單元測試、版本控制等功能,在規(guī)模較大的項(xiàng)目管理上表現(xiàn)優(yōu)秀,對數(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é)者如果想長期免費(fèi)使用PyCharm,則推薦使用PyCharmCommunityEdition,即社區(qū)版。社區(qū)版PyCharm雖然缺少Web、數(shù)據(jù)庫開發(fā)等方面的一些高級(jí)功能,但對于初學(xué)者而言影響不大。1.4.1PyCharm簡介PyCharm的安裝需要注意的是,PyCharm只是一個(gè)提高程序員工作效率的代碼編輯器,它本身不含Python解釋器。因此在安裝PyCharm之前,還是要確保計(jì)算機(jī)已經(jīng)安裝了Python解釋器。之后訪問JetBrains公司網(wǎng)站下載PyCharmCommunityEdition,下載成功后雙擊文件即可啟動(dòng)安裝過程。對于初學(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,一般簡稱為VSCode,是微軟公司推出的一款跨平臺(tái)的集成開發(fā)環(huán)境。長期以來,微軟公司在集成開發(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ò)展插件市場(VisualStudioCodeMarketplace),琳瑯滿目的擴(kuò)展插件不僅能讓VisualStudioCode支持眾多的語言,還可以根據(jù)使用者的需要添加額外的功能,做到對VisualStudioCode編程環(huán)境的高度定制化。1.4.2VisualStudioCode簡介可以在官方網(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簡介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簡介在圖1.14中,每個(gè)矩形框可根據(jù)需要設(shè)置為代碼模式或Markdown模式。在代碼模式的框中輸入Python代碼,按【Shift+Enter】組合鍵后運(yùn)行,結(jié)果出現(xiàn)在代碼框的下方,如圖1.14中求解得到的一元二次方程的根。而在Markdown模式的框中可輸入各種文本、公式甚至圖片,如圖中的標(biāo)題及求解一元二次方程的題目說明。Markdown是一種簡潔的標(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簡介對于Python的初學(xué)者而言,PyCharm顯得有點(diǎn)過于重量級(jí)了,雖然其功能很強(qiáng)大,但初學(xué)者大多用不到;Anaconda雖然解決了安裝配置問題,但體積也不算小。事實(shí)上,對于初學(xué)編程的讀者而言,理想的編程工具大概就是擁有簡潔大方的外觀,基礎(chǔ)功能完備,安裝簡單,“開箱即用”。而Thonny就是這樣一個(gè)Python代碼編輯工具。Thonny是由愛沙尼亞的塔爾圖大學(xué)開發(fā)的專門針對初學(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é)介紹了這么多Python集成開發(fā)環(huán)境,目的就是希望讀者能根據(jù)自身情況,選擇一款適合自己的編程工具軟件。凡事預(yù)則立,不預(yù)則廢。在正式開啟Python學(xué)習(xí)征程之前,打造一個(gè)好用的編程環(huán)境是很重要的,它會(huì)讓后續(xù)的學(xué)習(xí)過程變得更愉悅、更高效。1.4.4Thonny簡介PART51.5Python生態(tài)系統(tǒng)之turtle庫.學(xué)習(xí)Python時(shí),不僅要學(xué)習(xí)Python自身的語法等基本語言要素,還要涉獵其生態(tài)系統(tǒng)中各式各樣的工具包——庫。擁有數(shù)量眾多的庫是Python的一大優(yōu)勢,這些庫有一小部分會(huì)在安裝Python解釋器時(shí)同步安裝到系統(tǒng),被稱為標(biāo)準(zhǔn)庫;還有數(shù)量眾多的庫需要使用者根據(jù)自身的需求去額外安裝,這樣的庫被稱為第三方庫。本章就從turtle庫開啟認(rèn)識(shí)Python眾多工具包的旅程。turtle庫是一個(gè)繪圖庫,它是Python的標(biāo)準(zhǔn)庫。因其簡單、有趣,作為了解Python生態(tài)系統(tǒng)的起點(diǎn)還是比較合適的。turtle這個(gè)單詞是“海龜”的意思,為了便于理解,使用這個(gè)庫時(shí)可以形象地認(rèn)為有一只小海龜拿著一支筆,在屏幕上按照程序指定的角度、長度爬行,從而畫出各式各樣的圖案。因此學(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ù)簡單來說就是被賦予了名稱的一段代碼,往往還會(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í)的場景,這時(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è)單位,請問小海龜在向哪邊移動(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ù)某蚰兀縧eft()與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()小海龜還可以繪制簡單的幾何形狀,如圓、圓弧或多邊形等都可以通過

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è)案例,讀者對小海龜?shù)倪\(yùn)用會(huì)再上一

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

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

這里不去深究臉譜中的門道,讀者可到網(wǎng)絡(luò)上尋找自己喜愛的臉譜形象作為繪制的參考。1.7.1繪制前的預(yù)備工作京劇是國粹,京劇的臉譜也已經(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()方

法得到小海龜所在的繪圖窗體對象。turtle庫的窗體對象擁有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è)的耳根上方開始繪制頭頂

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

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

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

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

1.13如下,

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

1.13

繪制京劇臉譜:題字全部繪制工作完成后,小海龜功成身退,這樣畫面更美觀。另外,也要記得將一開始的參照圖

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

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

語言的特色與版本,著重講解了Python

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

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

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

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

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

2.1

中,如果將小海龜庫中的

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

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

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

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

2.3

有無縮進(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

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

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

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

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

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

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

方式讓

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

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

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

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

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

擬縱向書寫的效果,輸出梁啟超的名篇《少年中國說》的一段文字。這段文字以字符串的形式出現(xiàn)

在代碼中,雖然只是原文中的一段,但對于代碼行來說,還是過長,一行無法寫完。可以看到,在

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

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

2.5

中的小海龜

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

content

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

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

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

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

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

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

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

Turlte

類生成一個(gè)具

體的小海龜對象并保存在

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

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

地,《少年中國說》中的那段文字保存在

content

變量中,如果沒有

content

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

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

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

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

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

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

for,類似

for這樣的一些

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

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

Python

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

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

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

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

Python

中定義變量是通過賦值語句來完成的。例如,

t=turtle.Turtle(),又或者

author="梁啟超少年中國說"。這里的等號(hào)“=”不是數(shù)學(xué)意義上的相等,

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

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

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

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

2.6

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

age

變量,其初始值為

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

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

age賦值。第二次為

age賦值時(shí),由

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

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

age

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

age是對

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

age是對變量

age

的讀取操作,讀取得到的

值加

1后再寫入

age

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

defined”,意思是變量

age沒有定義。這是由于在

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

age

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

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

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

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

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

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

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

是沒問題的。雖然

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

Python不重要。了解常見數(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)行各種常見的數(shù)學(xué)運(yùn)算,下面的代碼2.7以

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

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

5.23e3表示

5230.0。這里的

e大小寫均可,表示

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ù)無法

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

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

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

機(jī)不可能無限地進(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)制的方式直接寫出來,如3.14;也可以采用科

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

5.23e3表示

5230.0。這里的

e大小寫均可,表示

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ù)無法

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

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

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

機(jī)不可能無限地進(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í)部與虛部,只不過將虛部單位

i

改寫成字母

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í)部與虛部,只不過將虛部單位

i

改寫成字母

j。代碼

2.9

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

a,然后使用

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

a

的實(shí)部和虛部,

最后輸出

a

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

a

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

對象中的“點(diǎn)”形式,這說明一個(gè)簡單的復(fù)數(shù)也是一個(gè)對象,所有的復(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ù)來完成,如代碼

2.10

中的粗體代碼所示。PART32.3常見運(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說明2.3.1算術(shù)運(yùn)算符2.3.1算術(shù)運(yùn)算符模運(yùn)算有一些非常典型的應(yīng)用。例如,判斷一個(gè)整數(shù)是不是偶數(shù),可以很容易用%

運(yùn)算來實(shí)

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

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

即可。還記得第

1章繪制

彩色螺旋的例子嗎?再來看一遍這個(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論