Python程序設計基礎 課件 第1、2章 Python概述、基礎語法概述_第1頁
Python程序設計基礎 課件 第1、2章 Python概述、基礎語法概述_第2頁
Python程序設計基礎 課件 第1、2章 Python概述、基礎語法概述_第3頁
Python程序設計基礎 課件 第1、2章 Python概述、基礎語法概述_第4頁
Python程序設計基礎 課件 第1、2章 Python概述、基礎語法概述_第5頁
已閱讀5頁,還剩130頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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

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

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

代碼

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

1.16所示。代碼

1.1

小海龜?shù)?/p>

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

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

200個單位,請問小海龜在向哪邊移動?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()小海龜在畫布上時刻都有自己的朝向,默認情況下,繪圖剛開始時小海龜朝向屏幕右側(cè)。無論小海龜當下朝向何方,forward()方法的含義是向朝向的方向移動,稱為前進;而backward()方法是向朝向的反方向移動,即為后退。代碼1.4演示了這兩個方法的使用。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()小海龜在畫布上時刻都有自己的朝向,默認情況下,繪圖剛開始時小海龜朝向屏幕右側(cè)。無論小海龜當下朝向何方,forward()方法的含義是向朝向的方向移動,稱為前進;而backward()方法是向朝向的反方向移動,即為后退。代碼1.4演示了這兩個方法的使用。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()既然小海龜時刻有朝向,前進與后退都取決于當下的朝向,那么如何調(diào)整小海龜?shù)某蚰兀縧eft()與right()方法可完成這個任務。left()與right()分別表示原地左轉(zhuǎn)、原地右轉(zhuǎn),括號內(nèi)提供具體的度數(shù)即可。注意,這里的“原地”二字,即在左轉(zhuǎn)或右轉(zhuǎn)時,小海龜?shù)淖鴺宋恢檬遣蛔兊?,只是朝向變了。例如下面的代碼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()方法時可以提供

3項信息來描述要繪制的圓弧。具體來說,這

3項信息中必須提供

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

側(cè);如果

radius

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

extent

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

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

360°。extent

的取值

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

最后一項信息

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

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

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

合,因為

extent

的度數(shù)未必是

360°)。由于

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

效果。代碼1.6

列出了幾種典型情況,為了更好地觀察效果,要保證每次運行時只有一個

circle()前

沒有“#”符號。1.5.2小海龜制圖的常用方法1.5.2小海龜制圖的常用方法1.5.2小海龜制圖的常用方法PART61.6小試牛刀1.6小試牛刀在讀者配置好自己的Python編程環(huán)境后,就可以小試牛刀了。本章還沒有展開學習Python的更多知識,先嘗試使用小海龜繪制一些漂亮、復雜的圖案。1.6.1繪制一朵向日葵下面的代碼1.7運行后可以繪制一個類似向日葵的圖案。在書寫這段代碼時要注意縮進。之前的代碼例子中的所有行都沒有縮進,但代碼1.7中for語句后的兩行代碼都縮進了4個空格。for語句會在第3章中進行詳細介紹,這里讀者只需要知道Python使用縮進來嚴格控制代碼之間的層次關(guā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):#這是一個循環(huán)t.forward(200)#每次循環(huán)要前進

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

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

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

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

turtle庫繪制

2022年北京冬奧會吉祥物冰墩墩的代碼,代碼運行后,看著可愛

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

turtle

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

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

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

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

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

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

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

比照著進行繪制,如代碼

1.9

所示。代碼首先生成一個小海龜

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

t

getscreen()方

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

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

file文件夾,將預先準備好的臉譜圖片放在

file文件夾

下。在bgpic()的括號中提供臉譜圖片的文件路徑時,路徑分隔符“\”要書寫為“\\”,具體原因會

在第

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

pensize()將筆跡的粗細設置為

2,后期在繪制眼部瞳孔等位置時,可將筆跡粗細設為

1,以便將細節(jié)

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

改。運行代碼1.9

后,臉譜圖片的中央位置將與小海龜繪圖窗體的默認坐標系原點(窗體中央)重

合,如圖

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

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

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

為正;從中央向上縱坐標為正,向下縱坐標為負。另外,在小海龜從窗體中央移動到指定位置的過

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

1.13如下,

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

1.13

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

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

1.21所示(個別顏色與原圖片略有不同)。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庫的基本概念,并通過若干實例演示了turtle庫的使用方法。匯報人:WPSPython程序設計基礎第二章基礎語法概述目錄01Python語法規(guī)范02變量和數(shù)據(jù)類型03常見運算符04輸入與輸出目錄05Python生態(tài)系統(tǒng)之math庫06小試牛刀07拓展實踐:模擬自動售貨機找零.

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

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

2.1

中,如果將小海龜庫中的

turtle.Turtle()類寫成了全小寫,則代碼運行時就會報錯。2.1.1大小寫區(qū)分代碼大小寫的程序語言有很多,因此有一個良好的書寫代碼習慣很重要。在為程序中各種

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

稱使用多個單詞,則單詞之間可以使用下畫線連接等。當然這些習慣不是強制的,而且不同的程序

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

2.3

有無縮進效果大不同importturtlet=turtle.Turtle()t.speed(0)

#速度設為最快colors=

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

#這是一個顏色盒forxin

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

#在

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

#以

x

為半徑畫個圓t.left(10)

#左轉(zhuǎn)

10°

,這行不屬于

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

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

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

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

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

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

方式讓

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

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

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

沒有采用這個方案,因此平時書寫代碼時不用在尾部加記號。當偶爾遇到超長代碼行需

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

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

在代碼中,雖然只是原文中的一段,但對于代碼行來說,還是過長,一行無法寫完??梢钥吹?,在

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

過的。正是因為變量十分基礎,所以前面的很多代碼例子中已經(jīng)不可避免地用到了變量。例如,代

2.5

中的小海龜

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

content

等,都是變量。下面來正式認識

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

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

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

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

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

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

Turlte

類生成一個具

體的小海龜對象并保存在

t這個變量中,如果沒有

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

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

content

變量中,如果沒有

content

這個名稱,程序又該怎

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

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

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

Python語言固有的一些標識符,因為它們已經(jīng)有了其他特殊含

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

for,類似

for這樣的一些

Python語言固有的標識符被稱為Python

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

Python

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

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

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

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

Python

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

t=turtle.Turtle(),又或者

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

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

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

值的過程中,變量就被定義好了,程序即可使用這個標識符來訪問該變量,或者說訪問該變量所指

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

2.6

中,通過賦值語句定義了一個

age

變量,其初始值為

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

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

age賦值。第二次為

age賦值時,由

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

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

age

和等號左側(cè)的

age是對

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

age是對變量

age

的讀取操作,讀取得到的

值加

1后再寫入

age

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

defined”,意思是變量

age沒有定義。這是由于在

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

age

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

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

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

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

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

Python會自動判斷。在

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

是沒問題的。雖然

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

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

據(jù)類型的特點及相應操作仍然是一個重要而基礎的工作。本章主要介紹整型、浮點型、復數(shù)類型、

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

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

學記數(shù)法來表達,如

5.23e3表示

5230.0。這里的

e大小寫均可,表示

10

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

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

6.02e-2表示

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

與14.0

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

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

是因為程序中表達的十進制小數(shù)其實在計算機內(nèi)是要轉(zhuǎn)換為二進制小數(shù)的。但很多十進制小數(shù)無法

精確地用二進制小數(shù)來表達,這有點類似很多分數(shù)無法用小數(shù)精確表達。例如,1/3是一個精確值,

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

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

機不可能無限地進行這個轉(zhuǎn)換,一定要在某個位置截斷,最終得到的二進制小數(shù)就是原十進制小數(shù)

的一個近似值。下面的代碼2.8

演示了浮點數(shù)運算有誤差的事實。當然這個誤差非常得小,如果不是進行某些

高精度的運算,一般可以忽略。

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

學記數(shù)法來表達,如

5.23e3表示

5230.0。這里的

e大小寫均可,表示

10

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

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

6.02e-2表示

0.0602。

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

與14.0

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

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

是因為程序中表達的十進制小數(shù)其實在計算機內(nèi)是要轉(zhuǎn)換為二進制小數(shù)的。但很多十進制小數(shù)無法

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

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

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

機不可能無限地進行這個轉(zhuǎn)換,一定要在某個位置截斷,最終得到的二進制小數(shù)就是原十進制小數(shù)

的一個近似值。下面的代碼2.8

演示了浮點數(shù)運算有誤差的事實。當然這個誤差非常得小,如果不是進行某些

高精度的運算,一般可以忽略。

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

i

改寫成字母

j。代碼

2.9

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

a,然后使用

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

a

的實部和虛部,

最后輸出

a

的值。

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

i

改寫成字母

j。代碼

2.9

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

a,然后使用

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

a

的實部和虛部,

最后輸出

a

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

a

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

對象中的“點”形式,這說明一個簡單的復數(shù)也是一個對象,所有的復數(shù)構(gòu)成一個復數(shù)類,它們擁

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

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

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

2.7

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

a_5

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

Python

內(nèi)置的

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

2.10

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

2.1列出了幾種

Python常用的

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

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

//2的結(jié)果是

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

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

8

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

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

運算來實

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

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

即可。還記得第

1章繪制

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

#速度設為最快colors=

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

#這是一個顏色盒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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論