




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第10章Python計算生態(tài)與常用庫《Python快速編程入門(第3版))》學(xué)習(xí)目標/Target了解Python計算生態(tài),能夠列舉3個應(yīng)用領(lǐng)域以及該領(lǐng)域的常用庫熟悉包的構(gòu)建與導(dǎo)入,能夠在程序中熟練地構(gòu)建與導(dǎo)入包熟悉模塊的構(gòu)建與使用,能夠在程序中熟練地構(gòu)建和使用模塊學(xué)習(xí)目標/Target
了解生態(tài)庫的發(fā)布,能夠復(fù)述自定義庫的發(fā)布流程掌握常用第三方庫的基本用法,能夠使用jieba、wordcloud、Pygame庫
實現(xiàn)中文分詞、繪制詞云和制作小游戲的功能掌握常用內(nèi)置庫的基本用法,能夠使用time、random、turtle庫實現(xiàn)處
理時間、生成隨機數(shù)和繪制圖形的功能章節(jié)概述/SummaryPython自其問世以來,逐步建立起了全球最龐大的編程計算生態(tài)系統(tǒng),這個強大的生態(tài)系統(tǒng)得益于無數(shù)開發(fā)人員的貢獻和努力,以及各種精心設(shè)計的Python庫的支持。這些庫涵蓋了眾多領(lǐng)域,包括數(shù)據(jù)分析、人工智能、機器學(xué)習(xí)還是Web開發(fā)等,展現(xiàn)了Python的強大威力。本章將簡要介紹Python的計算生態(tài)系統(tǒng),并討論Python生態(tài)庫的構(gòu)建與發(fā)布,以及一些常用的Python庫。目錄/Contents010203Python計算生態(tài)概覽Python生態(tài)庫的構(gòu)建與發(fā)布常用的內(nèi)置Python庫04實訓(xùn)案例目錄/Contents0506常用的第三方Python庫實訓(xùn)案例Python計算生態(tài)概覽10.1
先定一個小目標!了解Python計算生態(tài),能夠列舉3個應(yīng)用領(lǐng)域以及該領(lǐng)域的常用庫10.1Python計算生態(tài)概覽Python計算生態(tài)是指由Python語言和其周邊生態(tài)系統(tǒng)所構(gòu)成的一系列工具、框架、庫和應(yīng)用,用于解決各種計算問題和開發(fā)需求。Python計算生態(tài)涵蓋網(wǎng)絡(luò)爬蟲、數(shù)據(jù)分析、文本處理、數(shù)據(jù)可視化、圖形用戶界面、機器學(xué)習(xí)、Web開發(fā)、網(wǎng)絡(luò)應(yīng)用開發(fā)、游戲開發(fā)、虛擬現(xiàn)實、圖形藝術(shù)等多個領(lǐng)域。10.1Python計算生態(tài)概覽1.網(wǎng)絡(luò)爬蟲網(wǎng)絡(luò)爬蟲是一種按照一定的規(guī)則自動從網(wǎng)絡(luò)上抓取信息的程序或者腳本,它可以代替手工完成很多工作,比如批量搜集網(wǎng)絡(luò)上的數(shù)據(jù)資源,為數(shù)據(jù)平臺提供數(shù)據(jù)支撐。Python作為一種簡單且高效的腳本語言,在網(wǎng)絡(luò)爬蟲領(lǐng)域得到了廣泛的應(yīng)用。網(wǎng)絡(luò)爬蟲程序涉及HTTP請求、Web信息提取、網(wǎng)頁數(shù)據(jù)解析等操作,Python計算生態(tài)通過Requests、Selenium、re、BeautifulSoup、Scrapy、PySpider等庫為這些操作提供了強有力的支持。10.1Python計算生態(tài)概覽10.1Python計算生態(tài)概覽庫名功能說明RequestsRequests庫是一個流行的網(wǎng)絡(luò)請求庫,提供簡潔而強大的API來發(fā)送各種類型的HTTP請求,并處理服務(wù)器返回的響應(yīng)。Requests庫支持會話管理、文件上傳和下載、SSL證書驗證、重定向處理等功能,使得處理HTTP請求變得簡單而高效SeleniumSelenium庫用于處理那些需要JavaScript渲染或動態(tài)內(nèi)容的網(wǎng)頁,通過模擬真實的瀏覽器環(huán)境,它能夠完全加載和執(zhí)行JavaScript代碼,從而爬取動態(tài)生成的內(nèi)容,獲取更完整的網(wǎng)頁數(shù)據(jù)rere提供了定義和解析正則表達式的一系列通用功能,除網(wǎng)絡(luò)爬蟲外,還適用于各類需要解析數(shù)據(jù)的場景網(wǎng)絡(luò)爬蟲領(lǐng)域的常用庫10.1Python計算生態(tài)概覽庫名功能說明BeautifulSoupBeautifulSoup庫用于從HTML或XML文檔中提取所需的數(shù)據(jù),它可以將復(fù)雜的HTML或XML文檔轉(zhuǎn)化為一個易于操作的樹形結(jié)構(gòu),開發(fā)人員通過樹形結(jié)構(gòu)對象的方法和屬性便可以訪問和搜索文檔中的元素和內(nèi)容ScrapyScrapy是一款網(wǎng)絡(luò)爬蟲框架,用于構(gòu)建可擴展的網(wǎng)絡(luò)爬蟲程序,它采用異步并發(fā)的方式,可以快速、穩(wěn)定地爬取網(wǎng)頁并抽取數(shù)據(jù),支持自定義數(shù)據(jù)處理和多種數(shù)據(jù)存儲方式PySpiderPySpider也是一款網(wǎng)絡(luò)爬蟲框架,與Scrapy相比,它更適合小規(guī)模的爬取工作。PySpider支持數(shù)據(jù)庫后端、消息隊列、優(yōu)先級和分布式架構(gòu)等功能,可以幫助開發(fā)者更方便地進行爬取任務(wù)的管理和擴展網(wǎng)絡(luò)爬蟲領(lǐng)域的常用庫2.數(shù)據(jù)分析數(shù)據(jù)分析是指使用各種統(tǒng)計和計算方法對數(shù)據(jù)進行整理、轉(zhuǎn)化、分析和解釋的過程。通過數(shù)據(jù)分析,可以發(fā)現(xiàn)數(shù)據(jù)之間的關(guān)聯(lián)性、趨勢和規(guī)律,并從中獲取有價值的信息和洞察。Python計算生態(tài)通過NumPy、pandas、SciPy庫為數(shù)據(jù)分析領(lǐng)域提供支持。10.1Python計算生態(tài)概覽庫名功能說明NumpyNumPy是用于科學(xué)計算的庫,它提供了表示N維數(shù)組的ndarray對象,通過ndarray對象可以便捷地存儲和處理大型矩陣。另外,NumPy也提供了實現(xiàn)線性代數(shù)、傅里葉變換和隨機數(shù)功能的模塊,能以優(yōu)異的效率完成科學(xué)計算pandaspandas是一個基于NumPy開發(fā)的庫,專注于數(shù)據(jù)處理、數(shù)據(jù)分析和數(shù)據(jù)可視化。它提供了靈活的數(shù)據(jù)結(jié)構(gòu)和豐富的函數(shù),可以高效地處理各種類型的數(shù)據(jù),并提供統(tǒng)計分析和可視化工具,支持多種數(shù)據(jù)格式的輸入和輸出ScipyScipy是一個基于NumPy構(gòu)建的科學(xué)計算庫,它可以處理插值、積分、優(yōu)化等問題,也能處理圖像和信號、求解常微分方程數(shù)值數(shù)據(jù)分析領(lǐng)域的常用庫10.1Python計算生態(tài)概覽3.文本處理文本處理即對文本內(nèi)容的處理,包括文本內(nèi)容的分類、文本特征的提取、文本內(nèi)容的轉(zhuǎn)換等。Python計算生態(tài)通過jieba、NLTK、PyPDF2、Python-docx、等庫為文本處理領(lǐng)域提供支持。10.1Python計算生態(tài)概覽庫名功能說明jiebajieba是一款優(yōu)秀的Python中文分詞庫,它可以非常方便地進行中文文本的分詞,還可以自定義詞典以適應(yīng)自己的應(yīng)用場景。此外,jieba還支持詞性標注、關(guān)鍵詞提取、文本分類等功能NLTKNLTK提供了用于訪問超過50個語料庫和詞匯資源的接口,支持文本分類、標記、解析,支持語法、語義分析等功能,簡單、易用且高效,是十分優(yōu)秀的Python自然語言處理庫PyPDF2PyPDF2是一個專業(yè)且穩(wěn)定、用于處理PDF文檔的Python庫,它支持PDF文件信息的提取、文件內(nèi)容的按頁拆分與合并,支持頁面裁剪、內(nèi)容加密與解密等功能Python-docxPython-docx是一個用于處理Word文檔的Python庫,它支持Word文檔中的標題、段落、分頁符、圖片、表格、文字等信息的管理,上手非常簡單文本處理領(lǐng)域的常用庫10.1Python計算生態(tài)概覽4.數(shù)據(jù)可視化數(shù)據(jù)可視化是一門關(guān)于數(shù)據(jù)視覺表現(xiàn)形式的科學(xué)技術(shù)研究,它既能夠有效傳達數(shù)據(jù)信息,也需兼顧信息傳達的美學(xué)形式,二者缺一不可。Python計算生態(tài)主要通過Matplotlib、Seaborn、Pyecharts
等庫為數(shù)據(jù)可視化領(lǐng)域提供支持。10.1Python計算生態(tài)概覽庫名功能說明MatplotlibMatplotlib是一個基于NumPy開發(fā)的繪圖庫,它提供了豐富的功能,可以創(chuàng)建各種類型的圖表和圖形,并且允許用戶對每個圖表和圖形的細節(jié)進行定制SeabornSeaborn是基于Matplotlib進行高級封裝的數(shù)據(jù)可視化庫,支持NumPy和pandas。由于對Matplotlib進一步的封裝,Seaborn實現(xiàn)了更簡單、豐富的調(diào)用效果,多數(shù)情況下可以輕松繪制具有吸引力的圖表PyechartsPyecharts是一個基于Python的數(shù)據(jù)可視化庫,使用EchartsJavaScript庫作為底層引擎,它提供了豐富的圖表類型和靈活的樣式定制,用于生成交互式的數(shù)據(jù)可視化圖表數(shù)據(jù)可視化領(lǐng)域的常用庫10.1Python計算生態(tài)概覽5.機器學(xué)習(xí)機器學(xué)習(xí)是一門多領(lǐng)域交叉學(xué)科,涉及概率論、統(tǒng)計學(xué)、逼近論、凸分析、算法復(fù)雜度理論等多個學(xué)科,其主要研究計算機如何模擬或?qū)崿F(xiàn)人類的學(xué)習(xí)行為,并通過獲取新的知識與技能以及重新組織已有知識結(jié)構(gòu)來不斷改善自身。機器學(xué)習(xí)被認為是人工智能的核心,是使計算機具有智能的根本途徑。Python計算生態(tài)主要通過Scikit-learn、TensorFlow、PyTorch庫為機器學(xué)習(xí)領(lǐng)域提供支持。10.1Python計算生態(tài)概覽庫名功能說明Scikit-learnScikit-learn是一個基于Python的機器學(xué)習(xí)庫,它建立在NumPy、SciPy和Matplotlib等庫的基礎(chǔ)上,并與這些庫緊密集成。Scikit-learn提供了各種常見的監(jiān)督學(xué)習(xí)和無監(jiān)督學(xué)習(xí)的算法,包括分類、回歸、聚類、降維、特征選擇和模型評估等TensorFlowTensorFlow是谷歌開發(fā)的開源深度學(xué)習(xí)框架,可用于構(gòu)建、訓(xùn)練和部署機器學(xué)習(xí)和深度學(xué)習(xí)模型。它在多種操作系統(tǒng)和硬件平臺上運行,并具備分布式計算、模型部署、優(yōu)化器和可視化等功能PyTorchPyTorch是一個由Facebook開發(fā)的開源深度學(xué)習(xí)框架,可以用于構(gòu)建、訓(xùn)練和部署機器學(xué)習(xí)和深度學(xué)習(xí)模型。與TensorFlow相比,PyTorch具有動態(tài)計算圖的特點,使得模型的開發(fā)和調(diào)試更加直觀和靈活機器學(xué)習(xí)領(lǐng)域的常用庫10.1Python計算生態(tài)概覽6.圖形用戶界面圖形用戶界面(GraphicalUserInterface,簡稱GUI)是采用圖形化方式展示和操作的用戶界面,該界面允許用戶使用鼠標、鍵盤等輸入設(shè)備操縱屏幕上的圖標或菜單選項,以選擇命令、調(diào)用文件、啟動程序或執(zhí)行一些其他的日常任務(wù)。Python計算生態(tài)通過PyQt5、wxPython、PyGObject庫為圖形用戶界面領(lǐng)域提供支持。10.1Python計算生態(tài)概覽庫名功能說明PyQt5PyQt5庫是Python與強大的GUI庫——Qt的融合,它提供了Qt開發(fā)框架的Python接口,擁有超過300個類、將近6000個函數(shù)和方法,可開發(fā)功能強大的圖形用戶界面wxPythonwxPython是跨平臺庫wxWidgets的Python版本,該庫具有開源、支持跨平臺、高度可定制、豐富的控件等特點,允許開發(fā)人員開發(fā)專業(yè)、功能齊全、跨平臺的圖形用戶界面PyGObjectPyGObject綁定了Linux系統(tǒng)下著名的圖形庫GTK3+,該庫簡單易用、功能強大、設(shè)計靈活,具有良好的設(shè)計理念和可擴展性,允許開發(fā)人員開發(fā)現(xiàn)代、跨平臺的圖形用戶界面圖形用戶界面領(lǐng)域的常用庫10.1Python計算生態(tài)概覽7.Web開發(fā)Web開發(fā)是創(chuàng)建和維護互聯(lián)網(wǎng)上網(wǎng)站和應(yīng)用程序的領(lǐng)域,它涉及前端(用戶界面)、后端(服務(wù)器邏輯)和數(shù)據(jù)庫開發(fā),以及關(guān)注安全性和性能優(yōu)化等方面。Python計算生態(tài)通過Django、Tornado、Flask、Twisted等庫為Web開發(fā)領(lǐng)域提供了支持。10.1Python計算生態(tài)概覽庫名功能說明DjangoDjango是一個功能完善且免費開源的Web框架,采用了MTV模式,提供了URL路由映射、Request上下文和基于模板的頁面渲染技術(shù)。它內(nèi)置了強大的管理站點,適用于快速搭建高性能的企業(yè)級內(nèi)容類網(wǎng)站TornadoTornado是一個高并發(fā)處理框架,通常用于構(gòu)建大規(guī)模站點的接口服務(wù),而不是像Django一樣用于構(gòu)建完整的網(wǎng)站。它同樣提供URL路由映射、Request上下文和基于模板的頁面渲染技術(shù)。此外,Tornado還支持異步I/O和超時事件處理,并且內(nèi)置了可直接用于生產(chǎn)環(huán)境的HTTP服務(wù)器FlaskFlask是PythonWeb領(lǐng)域的一款新興框架,它具有簡潔的功能設(shè)計,并吸收了其他框架的優(yōu)點,因此具備良好的可擴展性。該框架常用于開發(fā)小型網(wǎng)站TwistedDjango、Tornado和Flask是建立在應(yīng)用層協(xié)議HTTP之上的框架。它們主要用于開發(fā)Web應(yīng)用程序。相比之下,Twisted是一個基于事件驅(qū)動的網(wǎng)絡(luò)框架,它支持多種傳輸層和應(yīng)用層協(xié)議,支持客戶端和服務(wù)器端的開發(fā),適用于開發(fā)注重服務(wù)器性能的應(yīng)用程序Web開發(fā)領(lǐng)域的常用庫10.1Python計算生態(tài)概覽8.網(wǎng)絡(luò)應(yīng)用開發(fā)網(wǎng)絡(luò)應(yīng)用開發(fā)指以網(wǎng)絡(luò)為基礎(chǔ)的應(yīng)用程序的開發(fā),Python計算生態(tài)通過WeRoBot、aip、MyQR等庫為網(wǎng)絡(luò)應(yīng)用開發(fā)領(lǐng)域提供支持。10.1Python計算生態(tài)概覽庫名功能說明WeRoBotWeRoBot庫封裝了很多微信公眾號接口,提供了解析微信服務(wù)器消息及反饋消息的功能,該庫簡單易用,是建立微信機器人的重要技術(shù)手段aipaip封裝了百度AI開放平臺的接口,利用該庫可快速開發(fā)各類網(wǎng)絡(luò)應(yīng)用程序,如天氣預(yù)報、在線翻譯、快遞查詢等MyQRMyQR是一個用于生成與解析二維碼的庫,它可以幫助開發(fā)者輕松生成各種類型的二維碼,包括普通文本、URL、名片、郵件、短信等。同時,MyQR還支持對已有的二維碼進行解析和提取信息網(wǎng)絡(luò)應(yīng)用開發(fā)領(lǐng)域的常用庫10.1Python計算生態(tài)概覽9.游戲開發(fā)游戲開發(fā)分為2D游戲開發(fā)和3D游戲開發(fā),Python計算生態(tài)通過Pygame和Panda3D庫為游戲開發(fā)領(lǐng)域提供支持。10.1Python計算生態(tài)概覽庫名功能說明PygamePygame是為開發(fā)2D游戲而設(shè)計的第三方跨平臺庫,開發(fā)人員利用Pygame中定義的接口,可以方便快捷地實現(xiàn)諸如圖形用戶界面創(chuàng)建、圖形和圖像的繪制、用戶鍵盤和鼠標操作的監(jiān)聽以及播放音頻等游戲中常見的功能Panda3DPanda3D是一款免費且開源的3D渲染和游戲開發(fā)庫,該庫強調(diào)能力、速度、完整性和容錯能力,提供場景瀏覽器、性能監(jiān)視器和動畫優(yōu)化工具游戲開發(fā)領(lǐng)域的常用庫10.1Python計算生態(tài)概覽10.圖形藝術(shù)圖形藝術(shù)領(lǐng)域是指涉及使用視覺元素、圖形和圖像來創(chuàng)造藝術(shù)作品的領(lǐng)域,它包括了繪畫、插畫、平面設(shè)計、數(shù)碼藝術(shù)、動畫、電影視覺效果和游戲美術(shù)等各種形式。Python計算生態(tài)通過Quads、Ascii_art和turtle庫為圖形藝術(shù)領(lǐng)域提供支持。10.1Python計算生態(tài)概覽庫名功能說明QuadsQuads是一個基于四叉樹和迭代操作的圖形藝術(shù)庫。它接受圖像作為輸入,并使用四叉樹將圖像分割為四個象限。每個象限根據(jù)輸入圖像中的顏色,分配平均顏色,并重復(fù)該過程N次,以產(chǎn)生藝術(shù)效果Ascii_artAscii_art是一種使用ASCII字符表示圖像的技術(shù)。Python的Ascii_art庫提供了對該技術(shù)的支持,它可以將接收的圖像轉(zhuǎn)換為字符,從而重構(gòu)圖像并輸出Turtleturtle庫提供了繪制線條、圓形以及其他圖形的函數(shù),使用該庫可以輕松地創(chuàng)建一個圖形窗口,并通過簡單重復(fù)的動作來直觀地繪制界面和圖形圖形藝術(shù)領(lǐng)域的常用庫10.1Python計算生態(tài)概覽11.圖像處理圖像處理是利用計算機算法和技術(shù)對圖像進行分析、增強、重建和理解的科學(xué)和工程領(lǐng)域,它涉及圖像增強、濾波、壓縮、特征提取、圖像分割、目標檢測和識別、圖像重建等任務(wù)。Python通過NumPy、Scipy、Pillow、OpenCV-Python等庫為圖像處理領(lǐng)域提供支持。10.1Python計算生態(tài)概覽庫名功能說明NumPy數(shù)字圖像實質(zhì)上是由像素值組成的數(shù)組,而NumPy提供了適用于存儲和處理圖像的數(shù)組類型。利用NumPy提供的基于數(shù)組的計算功能,我們可以輕松地修改圖像的像素值ScipyScipy提供了對NumPy數(shù)組進行運算的豐富函數(shù)庫,其中包括了許多在圖像處理中常用的功能,比如線性和非線性濾波、二值形態(tài)操作、B樣條插值等,這些函數(shù)可以方便地應(yīng)用于圖像處理任務(wù),提供了豐富且靈活的工具來處理和改善圖像數(shù)據(jù)PillowPillow是一個圖像處理庫,它是PIL庫的一個分支,提供了對不同格式圖像文件的打開和保存操作,也提供了包括點運算、色彩空間轉(zhuǎn)換等基本的圖像處理功能OpenCV-PythonpenCV-Python是OpenCV庫的Python版,可以在Python環(huán)境中使用OpenCV的接口和功能,它簡單易用、高效快速,在圖像處理、計算機視覺和機器學(xué)習(xí)方面廣泛應(yīng)用圖像處理領(lǐng)域的常用庫10.1Python計算生態(tài)概覽Python生態(tài)的構(gòu)建與發(fā)布10.2
先定一個小目標!10.2.1模塊的構(gòu)建與使用熟悉模塊的構(gòu)建與使用,能夠在程序中熟練地構(gòu)建和使用模塊10.2.1模塊的構(gòu)建與使用Python中的模塊本質(zhì)上是一個包含Python代碼片段的.py文件,模塊的名稱就是文件的名稱。假設(shè)現(xiàn)有文件test.py,該文件中定義了一個函數(shù),具體代碼如下:defadd(a,b):returna+btest.pytest.py就是一個Python模塊,test就是模塊的名稱。10.2.1模塊的構(gòu)建與使用通過import語句或from?import?語句可以導(dǎo)入模塊,只有導(dǎo)入模塊后,才能使用其中定義的功能。例如,使用test模塊中定義的add()函數(shù),示例代碼如下:importtest#導(dǎo)入模塊result=test.add(11,22)#使用模塊中定義的函數(shù)print(result)示例10.2.1模塊的構(gòu)建與使用模塊不僅可以導(dǎo)入到程序中使用,也可以直接作為腳本運行。為了確保模塊的功能與預(yù)期相符,實際開發(fā)中開發(fā)人員通常會在模塊文件中添加一些測試代碼,對功能代碼進行測試。下面以test模塊為例,在其中添加一些測試代碼來檢測add()函數(shù)的功能是否符合預(yù)期,示例代碼如下:defadd(a,b):#功能代碼returna+bresult=add(22,33)#測試代碼print('functiontest:12+22=%d'%result)示例10.2.1模塊的構(gòu)建與使用將test模塊作為腳本直接執(zhí)行,方可通過測試代碼測試add()函數(shù)的功能。但此時會出現(xiàn)一個問題,在其他文件中導(dǎo)入test模塊,模塊中的測試代碼會在其他文件執(zhí)行時一并執(zhí)行。例如,導(dǎo)入test模塊,使用該模塊中的add()函數(shù)。importtestresult=test.add(11,22)print(result)示例10.2.1模塊的構(gòu)建與使用Python為模塊定義了一個__name__變量。在模塊中對__name__屬性的取值進行判斷:當__name__的取值為“__main__”時,說明模塊以腳本形式執(zhí)行;否則說明模塊被導(dǎo)入了其他程序。根據(jù)此原理對模塊進行修改,修改后的代碼如下:#功能代碼defadd(a,b):returna+b#判斷__name__變量的值是否等于__main__if__name__=='__main__':result=add(22,33)print('functiontest:12+22=%d'%result)示例
先定一個小目標!熟悉包的構(gòu)建與導(dǎo)入,能夠在程序中熟練地構(gòu)建與導(dǎo)入包10.2.2包的構(gòu)建與導(dǎo)入Python中的包是一個目錄,該目錄中包含了一組相關(guān)的模塊和子包。為了構(gòu)建一個包,需要在目錄中創(chuàng)建一個名為__init__.py的文件,這個文件可以是空的,也可以包含一些初始化代碼。10.2.2包的構(gòu)建與導(dǎo)入package是包的根目錄,它包含了一個必需的__init__.py文件,以及其他一些模塊或子包。其中,module.py是位于根目錄下的一個模塊文件;package_a是一個位于根目錄下的子包,它內(nèi)部包含一個模塊文件module_a.py,以及一個必需的__init__.py文件;package_b是另一個子包,它內(nèi)部包含一個模塊文件module_b.py。同樣,該子包也有一個必需的__init__.py文件。10.2.2包的構(gòu)建與導(dǎo)入若想在當前程序中導(dǎo)入整個包package_a,可以使用以下方式完成:10.2.2包的構(gòu)建與導(dǎo)入importpackage_a若想在當前程序中導(dǎo)入整個包package_a,可以使用以下方式完成:importpackage_a.module #方式一frompackage_aimportmodule #方式二若想在當前程序中導(dǎo)入整個包package_a,可以使用以下方式完成:importpackage.package_a.module_a #方式一frompackage.package_aimportmodule_a#方式二
先定一個小目標!了解生態(tài)庫的發(fā)布,能夠復(fù)述自定義庫的發(fā)布流程10.2.3生態(tài)庫的發(fā)布Python中的第三方庫是由Python使用者自行編寫與發(fā)布的模塊或包,同樣的,我們也可以將自己編寫的模塊與包作為庫發(fā)布。(1)在與待發(fā)布的包同級的目錄中創(chuàng)建setup.py文件。以包package為例,在包package所在的目錄下創(chuàng)建setup.py文件,此時的目錄結(jié)構(gòu)如圖所示。10.2.3生態(tài)庫的發(fā)布(2)編輯setup.py文件,在該文件中設(shè)置包中包含的模塊,示例代碼如下:10.2.3生態(tài)庫的發(fā)布fromdistutils.coreimportsetupsetup(name='lib_test',version='1.0',description='functionpackage',author='itcast',py_modules=['package.module','package.package_a.module_a','package.package_b.module_b'])(3)在setup.py文件所在目錄下打開命令行窗口,使用Python命令構(gòu)建Python庫,具體命令如下:10.2.3生態(tài)庫的發(fā)布pythonsetup.pybuild 語法格式構(gòu)建完成后,此時的目錄結(jié)構(gòu)如圖所示。(4)在setup.py文件所在目錄下打開命令行窗口,使用Python命令創(chuàng)建庫的安裝包,具體命令如下:10.2.3生態(tài)庫的發(fā)布pythonsetup.pysdist語法格式創(chuàng)建完成后,此時的目錄結(jié)構(gòu)如圖所示。dist目錄下.tar.gz格式的文件即為通過Python命令生成的庫的安裝包。此時可以將這個安裝包分享給他人,或者發(fā)布到公眾平臺,便可完成庫的發(fā)布。他人在獲取此安裝包后對其解壓,并在setup.py文件所在目錄執(zhí)行安裝命令,便可安裝我們發(fā)布的庫。安裝命令如下:10.2.3生態(tài)庫的發(fā)布pythonsetup.pyinstall語法格式常用的內(nèi)置Python庫10.3
先定一個小目標!10.3.1time庫掌握常用內(nèi)置庫的基本用法,能夠使用time庫實現(xiàn)處理時間在程序開發(fā)中,有許多場景需要根據(jù)時間選擇不同的處理方式,比如游戲的防沉迷系統(tǒng)、外賣平臺的店鋪營業(yè)狀態(tài)管理等。Python提供了一些與時間處理相關(guān)的內(nèi)置庫,包括time、datetime和calendar。其中,time是比較基礎(chǔ)的時間處理庫。10.3.1time庫10.3.1time庫1.time()函數(shù)time()函數(shù)用于獲取當前的時間戳,它的返回值是一個浮點數(shù)。其中時間戳是指從世界標準時間的1970年1月1日00:00:00到當前時間的總秒數(shù)。time()函數(shù)的使用示例如下所示:importtimeprint(time.time())#獲取時間戳需要注意的是,time()函數(shù)返回的時間戳與系統(tǒng)時間相關(guān),每次運行以上代碼后得到的時間戳可能會有所出入,因此以上結(jié)果僅作參考。10.3.1time庫2.localtime()與gmtime()函數(shù)雖然以時間戳形式表示的時間是一種有效的計時方式,但對于人類而言卻較為抽象,難以直觀理解。為此,Python提供了兩個函數(shù):localtime()和gmtime(),用于獲取結(jié)構(gòu)化時間,從而幫助我們更直觀地了解時間的各個部分。localtime()和gmtime()函數(shù)的語法格式如下:以上格式中的參數(shù)secs是一個以浮點數(shù)表示的時間戳,若省略該參數(shù),默認使用time()函數(shù)獲取的時間戳。localtime([secs])gmtime([secs])語法格式localtime()和gmtime()函數(shù)都能將時間戳轉(zhuǎn)換為以元組表示的時間對象(struct_time),不過localtime()得到的是本地時間,而gmtime()得到的是世界統(tǒng)一時間(UniversalTimeCoordinated,縮寫為UTC)。10.3.1time庫使用localtime()函數(shù)獲取結(jié)構(gòu)化時間,具體代碼如下:importtimeprint(time.localtime())#獲取結(jié)構(gòu)化時間,默認使用當前時間的時間戳print(time.localtime(34.54))#獲取結(jié)構(gòu)化時間,使用指定的時間戳使用gmtime()函數(shù)獲取結(jié)構(gòu)化時間,具體代碼如下:10.3.1time庫importtimeprint(time.gmtime())print(time.gmtime(34.54))時間對象其實是一個元組,元組包含9項元素,各項元素的含義與取值如表所示。10.3.1time庫元素含義取值tm_year年4位數(shù)字tm_mon月1~12tm_mday日1~31tm_hour時0~23tm_min分0~59元素含義取值tm_sec秒0~61,60或61是閏秒tm_wday一周的第幾日0~6,0為周一,其他數(shù)字依此類推tm_yday一年的第幾日1~366tm_isdst夏令時1表示夏令時,0表示非夏令時,-1表示不確定10.3.1time庫3.strftime()和asctime()函數(shù)無論是采用浮點數(shù)還是元組形式表示的時間,其實都不符合人們的認知習(xí)慣。人們?nèi)粘=佑|的時間,常見表示形式有“2023-02-2812:30:45”、“12/31/202312:30:45”和“2023年12月31日12:30:45”。為了方便人們理解時間信息,Python提供了strftime()和asctime()函數(shù),用于返回格式化后的時間字符串。(1)strftime()函數(shù)strftime()函數(shù)用于將時間對象按照指定格式轉(zhuǎn)換為可讀性強的時間字符串,該函數(shù)的語法格式如下:10.3.1time庫strftime(format,p_tuple=None)語法格式上述語法格式中,參數(shù)format表示時間格式的字符串,字符串中包含一些時間格式控制符;參數(shù)p_tuple為時間對象,默認值為當前時間,即localtime()函數(shù)返回的時間對象。時間格式控制符是time庫預(yù)定義的,用于控制不同時間或時間成分的顯示格式,time庫中常用的時間格式控制符及其功能說明如表所示。10.3.1time庫時間格式控制符說明%Y四位數(shù)的年份,取值范圍為0001~9999%m兩位數(shù)的月份,取值范圍為01~12%d月中的兩位數(shù)的日期表示,比如01%B本地完整的月份名稱,比如January%b月份的簡寫,比如Jan%a星期的簡寫,比如Mon10.3.1time庫時間格式控制符是time庫預(yù)定義的,用于控制不同時間或時間成分的顯示格式,time庫中常用的時間格式控制符及其功能說明如表所示。時間格式控制符說明%A星期的全名,比如,Monday%H24小時制的小時數(shù),取值范圍為0~23%l12小時制的小時數(shù),取值范圍為01~12%p上午或下午,取值分別為AP或PM%M兩位數(shù)的分鐘數(shù),取值范圍為00~59%S兩位數(shù)的秒數(shù),取值范圍為00~59使用strftime()格式化時間字符串,將當前時間對應(yīng)的時間對象按照“年-月-日時:分:秒”格式輸出,示例如下:importtimenow_string=time.strftime("%Y-%m-%d%H:%M:%S")print(now_string)10.3.1time庫若只使用部分時間格式控制符,可僅對時間信息中的相關(guān)部分進行格式化與輸出。例如只設(shè)定控制時分秒的3個格式符,則只輸出24小時制的時分秒,示例代碼如下:importtimenow_string=time.strftime("%Y-%m-%d%H:%M:%S")print(now_string)使用asctime()函數(shù)返回格式化的時間字符串,示例代碼如下:10.3.1time庫importtimenow_string=time.asctime()print(now_string)gmtime=time.gmtime()print(time.asctime(gmtime))10.3.1time庫4.ctime()函數(shù)ctime()函數(shù)用于將一個時間戳轉(zhuǎn)換為“SatJan1321:56:342018”這種形式的時間字符串,結(jié)果等同于time.asctime()函數(shù),若ctime()函數(shù)沒有傳入任何參數(shù),則默認將調(diào)用time()函數(shù)的結(jié)果作為參數(shù)。示例代碼如下:importtimeprint(time.ctime())print(time.ctime(36.36))10.3.1time庫5.strptime()函數(shù)strptime()函數(shù)用于將格式化的時間字符串轉(zhuǎn)化為時間對象,該函數(shù)可以看作是strftime()函數(shù)的反向操作。strptime()函數(shù)的語法格式如下:strptime(string,format)語法格式string:表示格式化的時間字符串,format:表示包含時間格式控制符的字符串,string與format使用的格式必須統(tǒng)一。importtimeprint(time.strptime('Sat,11Apr202311:54:42','%a,%d%b%Y%H:%M:%S'))print(time.strptime('11:54:42','%H:%M:%S'))10.3.1time庫6.sleep()函數(shù)sleep()函數(shù)可讓調(diào)用該函數(shù)的程序進入睡眠態(tài),即讓其暫時掛起,等待一定時間后再繼續(xù)執(zhí)行。sleep()函數(shù)接收一個以秒為單位的浮點數(shù)作為參數(shù),使用該參數(shù)控制程序掛起的時長。使用sleep()函數(shù)讓程序沉睡3秒,示例代碼如下:importtimeprint('開始')time.sleep(3)print('結(jié)束')importtimetime_a=time.time()time.sleep(3.5)time_b=time.time()print(time_a+time_b)print(time_b-time_a)10.3.1time庫若要對非時間戳形式表示的時間進行計算,在計算之前可以先將其轉(zhuǎn)換為時間戳形式。各形式之間的轉(zhuǎn)換方式如圖所示。
先定一個小目標!10.3.2random庫掌握常用內(nèi)置庫的基本用法,能夠使用random庫生成隨機數(shù)10.3.2random庫random是Python內(nèi)置的標準庫,在程序中導(dǎo)入該庫,可利用庫中的函數(shù)生成隨機數(shù)據(jù)。random庫中常用的函數(shù)如表所示。函數(shù)功能說明random()用于生成一個隨機浮點數(shù)n,n的取值范圍是0.0<=n<1.0uniform(a,b)用于生成一個指定范圍內(nèi)的隨機浮點數(shù)n,若a<b,則n的取值范圍是a<=n<=b;若a>b,則n的取值范圍是b<=n<=arandint(a,b)用于生成一個指定范圍內(nèi)的整數(shù)n,n的取值范圍是a<=n<=brandrange([start,]stop[,step])生成一個按指定基數(shù)遞增的序列,再從該序列中獲取一個隨機數(shù)。start參數(shù)表示范圍的起始值,包含在范圍內(nèi);stop參數(shù)表示范圍的結(jié)束值,不包含在范圍內(nèi);step參數(shù)是可選的,表示基數(shù),默認值為1choice(sequence)從序列中獲取一個隨機元素,參數(shù)sequence接收一個序列類型shuffle(x[,random])將序列x中的元素隨機排列sample(sequence,k)從指定序列中獲取長度為k的片段,隨機排列后返回新的序列10.3.2random庫使用random庫中常用的函數(shù)生成各種各樣的隨機數(shù)。importrandomprint(random.random()) #生成[0.0,1.0)范圍內(nèi)的隨機浮點數(shù)print(random.uniform(3,5))#生成[3.0,5.0]范圍內(nèi)的隨機浮點數(shù)print(random.randint(2,8))#生成[2,8]范圍內(nèi)的隨機整數(shù)print(random.randrange(10))#生成[0,10)范圍內(nèi)的隨機整數(shù)print(random.randrange(1,10,2))#隨機返回1、3、5、7、9中的一個元素#隨機返回序列中的一個元素print(random.choice(['Python','C','PHP','Java']))ls=['Python','C','PHP','Java']random.shuffle(ls)print(ls) #從序列中獲取長度為3的片段,隨機排序后返回新的序列print(random.sample(('Python','C','PHP','Java'),k=3))
先定一個小目標!掌握常用內(nèi)置庫的基本用法,能夠使用turtle庫實現(xiàn)繪制圖形的功能10.3.3Trultle庫Turtle(海龜)是Python內(nèi)置的一個標準庫,它提供了繪制線、圓以及其他形狀的函數(shù),使用該庫可以創(chuàng)建圖形窗口,在圖形窗口中通過簡單重復(fù)動作直觀地繪制界面與圖形。turtle庫的邏輯非常簡單,利用該庫提供的一系列函數(shù),用戶可以像使用筆在紙上繪圖一樣在畫布上繪制圖形。10.3.3Trultle庫1.創(chuàng)建圖形窗口圖形窗口也稱為畫布(canas)。使用turtle庫繪制圖形化界面需要先使用setup()函數(shù)創(chuàng)建圖形窗口,該函數(shù)的語法格式如下:setup(width,height,startx=None,starty=None)語法格式width、height:分別表示窗口寬度、高度,startx、starty參數(shù):表示窗口在計算機屏幕上的橫坐標和縱坐標。width、height:取值可以是整數(shù)或小數(shù),值為整數(shù)時表示以像素為單位的尺寸,值為小數(shù)時表示圖形窗口的寬或高與屏幕的比例startx、starty:取值可以為整數(shù)或None,取值為整數(shù)時,表示圖形窗口左側(cè)到屏幕左側(cè)的距離或圖形窗口頂部到屏幕頂部的距離,單位為像素;取值為None時,窗口位于屏幕中心。10.3.3Trultle庫使用remove()函數(shù)刪除文件a.txt的示例使用remove()函數(shù)刪除文件a.txt的示例10.3.3Trultle庫使用setup()函數(shù)創(chuàng)建一個寬800像素、高600像素的圖形窗口,示例代碼如下:importturtleturtle.setup(800,600)10.3.3Trultle庫需要說明的是,使用turtle庫實現(xiàn)圖形化界面時setup()函數(shù)并不是必須的,如果程序中沒有調(diào)用setup()函數(shù),程序執(zhí)行時會生成一個默認窗口。另外,通過turtle庫的title()函數(shù)可以為窗口設(shè)置標題,如此每次打開的窗口左上角都會顯示指定的標題。使用turtle庫繪制圖形完畢后,應(yīng)調(diào)用turtle庫的done()函數(shù)通知圖形窗口繪制結(jié)束,不過圖形窗口仍然處于打開狀態(tài),直到用戶手動關(guān)閉圖形窗口時才會退出,示例如下:importturtleturtle.setup(800,600)#創(chuàng)建圖形窗口turtle.done()#繪制結(jié)束10.3.3Trultle庫2.設(shè)置畫筆畫筆(pen)的設(shè)置包括畫筆屬性和畫筆狀態(tài)的設(shè)置,其中畫筆屬性包括尺寸、顏色等,畫筆狀態(tài)包括提起、放下等。turtle庫中定義了用于設(shè)置畫筆屬性和畫筆狀態(tài)的函數(shù)。(1)畫筆屬性的相關(guān)函數(shù)turtle庫中用于設(shè)置畫筆屬性的函數(shù)主要有3個,分別是pensize()、speed()和color(),pensize()函數(shù)用于設(shè)置畫筆尺寸,speed()函數(shù)用于設(shè)置設(shè)置畫筆移動的速度,color()函數(shù)用于設(shè)置畫筆顏色。這3個函數(shù)的語法格式如下。pensize(<width>)#設(shè)置畫筆尺寸speed(speed)#設(shè)置畫筆移動的速度color(color) #設(shè)置畫筆顏色語法格式10.3.3Trultle庫2.設(shè)置畫筆pensize()函數(shù)的參數(shù)width表示畫筆的尺寸,即畫筆繪制出線條的寬度,若該參數(shù)為空,則pensize()函數(shù)返回畫筆當前的尺寸。speed()函數(shù)的參數(shù)speed表示畫筆移動的速度,該參數(shù)的取值為0~10的整數(shù),包括0和10在內(nèi),整數(shù)越大,速度越快。color()函數(shù)的參數(shù)color用于設(shè)置畫筆的顏色,該參數(shù)的值有以下幾種表示方式:字符串。如“red”、“orange”、“yellow”、“green”。RGB顏色。此種方式又分為RGB整數(shù)值和RGB小數(shù)值兩種,RGB整數(shù)值如(255,255,255)、(190,213,98),RGB小數(shù)值如(1,1,1)、(0.65,0.7,0.9)。十六進制顏色。如“#FFFFFF”、“#0060F6”。10.3.3Trultle庫常見顏色的各種表現(xiàn)形式及其對應(yīng)關(guān)系如表所示。顏色字符串顏色值RGB整數(shù)值RGB小數(shù)值十六進制顏色值白色white(255,255,255)(1,1,1)#FFFFFF黃色yellow(255,255,0)(1,1,0)#FFFF00洋紅magenta(255,0,255)(1,0,1)#FF00FF青色cyan(0,255,255)(0,1,1)#00FFFF藍色blue(0,0,255)(0,0,1)#0000FF黑色black(0,0,0)(0,0,0)#00000010.3.3Trultle庫常見顏色的各種表現(xiàn)形式及其對應(yīng)關(guān)系如表所示。顏色字符串顏色值RGB整數(shù)值RGB小數(shù)值十六進制顏色值淡粉色seashell(255,245,238)(1,0.96,0.93)#FFF5EE金色gold(255,215,0)(1,0.84.0)#FFD700粉紅色pink(255,192,203)(1,0.75,0.80)#FFC0CB棕色brown(165,42,42)(0.65,0.16,0.16)#A52A2A紫色purple(160,32,240)(0.63,0.13,0.94)#A020F0番茄色tomato(255,99,71)(1,0.39,0.28)#FF634710.3.3Trultle庫字符串、十六進制形式的顏色值都可以直接傳入color()函數(shù)的color參數(shù),以將畫筆的顏色設(shè)置為指定的顏色,示例代碼如下:importturtleturtle.color('pink')turtle.color('#A22A2A')turtle.done()10.3.3Trultle庫使用RGB形式的顏色值之前,需要先使用colormode()函數(shù)設(shè)置顏色模式。colormode()函數(shù)需要接收一個cmode參數(shù),該參數(shù)支持兩種取值:1.0或255,其中1.0表示使用RGB小數(shù)值,即RGB形式的顏色值位于0.0~1.0之間;255表示使用RGB整數(shù)值,即RGB形式的顏色值位于0~255之間。示例代碼如下:importturtleturtle.colormode(1.0) #使用RGB小數(shù)值turtle.color((1,1,0))turtle.colormode(255) #使用RGB整數(shù)值turtle.color((165,42,42))turtle.done()10.3.3Trultle庫(2)畫筆狀態(tài)的相關(guān)函數(shù)正如在紙上畫圖一樣,Turtle中的畫筆分為提起(UP)和放下(DOWN)兩種狀態(tài)。只有畫筆為放下狀態(tài)時,移動畫筆,畫布上才會留下痕跡。Turtle中的畫筆默認為放下狀態(tài)。使用penup()函數(shù)用于提起畫筆,使用pendown()函數(shù)用于放下畫筆。修改畫筆狀態(tài)的示例代碼如下。importturtleturtle.penup() #提起畫筆turtle.pendown() #放下畫筆turtle.done()turtle庫中為penup()和pendown()函數(shù)定義了別名,penup()函數(shù)的別名為pu(),pendown()函數(shù)的別名為pd()。10.3.3Trultle庫3.繪制圖形在畫筆狀態(tài)為放下時,通過移動畫筆可以在畫布上繪制圖形。此時可以將畫筆想象成一只海龜(這也是turtle庫名字的由來):海龜落在畫布上,它可以向前、向后、向左、向右移動,海龜爬動時在畫布上留下痕跡,痕跡即為所繪圖形。為了使圖形出現(xiàn)在理想的位置,我們需要了解Turtle的坐標體系。Turtle坐標體系以窗口中心為原點,以右方為默認朝向,以原點右側(cè)為x軸正方向,原點上方為y軸正方向。Turtle的坐標體系如圖所示。10.3.3Trultle庫如果希望在畫布上繪制想要的圖形,需要知道如何通過turtle庫的函數(shù)控制畫筆。turtle庫中控制畫筆的函數(shù)主要有3種,分別是移動控制函數(shù)、角度控制函數(shù)和圖形繪制函數(shù)。(1)移動控制函數(shù)移動控制函數(shù)包括forward()、backward()和goto()函數(shù),分別用于控制畫筆向前、向后或者向指定位置移動,這些函數(shù)的語法格式如下。forward(distance) #向前移動backward(distance) #向后移動goto(x,y=None) #移動到指定位置函數(shù)forward()和backward()的參數(shù)distance用于指定畫筆移動的距離,單位為像素;函數(shù)goto()用于將畫筆移動到畫布上指定的位置,該函數(shù)的參數(shù)x、y分別接收表示目標位置的橫坐標和縱坐標,也可以僅接收一個表示坐標的向量。10.3.3Trultle庫(2)角度控制函數(shù)角度控制函數(shù)用于更改畫筆朝向,包括right()、left()和seth(),其中right()或left()函數(shù)函數(shù)用于向右或向左轉(zhuǎn)動畫筆,使畫筆朝向順時針或逆時針方向旋轉(zhuǎn)指定的角度;seth()函數(shù)用于設(shè)置畫筆朝向為指定角度。這些函數(shù)的語法格式如下。right(degree)#向右轉(zhuǎn)動畫筆left(degree)#向左轉(zhuǎn)動畫筆seth(angle)#轉(zhuǎn)動到指定角度10.3.3Trultle庫函數(shù)right()和left()的參數(shù)degree用于指定畫筆向右與向左轉(zhuǎn)動的角度,單位為度數(shù)。函數(shù)seth()的參數(shù)angle用于指定畫筆朝向的角度。angle以x軸正向為0°,以逆時針方向為正,角度從0°逐漸增大;以順時針方向為負,角度從0°逐漸減小,角度與坐標系的關(guān)系如圖所示。10.3.3Trultle庫若要使畫筆向左或向右移動某段距離,應(yīng)先調(diào)整好畫筆角度,再使用移動函數(shù)。例如,繪制一個邊長為200像素的正方形,具體代碼如下:importturtleturtle.forward(200)#向前移動200像素turtle.seth(-90)#調(diào)整畫筆朝向,使其朝向-90°方向turtle.forward(200)#向前移動200像素turtle.right(90)#調(diào)整畫筆朝向,向右轉(zhuǎn)動90°turtle.forward(200)#向前移動200像素turtle.left(-90)#調(diào)整畫筆朝向,向左轉(zhuǎn)動-90°,即向右轉(zhuǎn)動90°turtle.forward(200)#向前移動200像素turtle.right(90)#調(diào)整畫筆朝向,向右轉(zhuǎn)動90°turtle.done()10.3.3Trultle庫執(zhí)行代碼后,繪制的正方形如圖所示。10.3.3Trultle庫(3)圖形繪制函數(shù)turtle庫中提供了circle()函數(shù),使用該函數(shù)可繪制以當前坐標為圓心,以指定像素值為半徑的圓或弧。circle()函數(shù)的語法格式如下:circle(radius,extent=None,steps=None)語法格式函數(shù)circle()的參數(shù)radius用于設(shè)置半徑,extent用于設(shè)置弧的角度。radius和extent的取值可以是正數(shù),也可以是負數(shù),具體可以分成以下幾種情況:當radius為正數(shù)時,畫筆以原點為起點向上繪制弧線;radius為負數(shù)時,畫筆以原點為起點向下繪制弧線。當extent為正數(shù)時,畫筆以原點為起點向右繪制弧線;extent為負數(shù)時,畫筆以原點為起點向左繪制弧線。10.3.3Trultle庫假設(shè)繪制半徑為90或-90、角度為60°或-60°的弧線,繪制效果如圖所示。參數(shù)steps用于設(shè)置正多邊形的邊數(shù),它的取值可以是整數(shù)或None,默認值為None,表示繪制一個完整的圓形。若參數(shù)steps的值為正數(shù),則使用circle()函數(shù)可以繪制一個有N條邊的正多邊形;若參數(shù)steps的值為負數(shù),則使用circle()函數(shù)不會繪制圖形。例如,在程序中寫入“turtle.circle(100,steps=3)”,程序?qū)⒗L制一個邊長為100像素的等邊三角形。10.3.3Trultle庫(4)圖形填充turtle庫中可通過fillcolor()函數(shù)設(shè)置填充顏色,使用begin_fill()函數(shù)和end_fill()函數(shù)填充圖形,實現(xiàn)“面”的繪制。以繪制一個填充為藍色的圓為例,具體代碼如下:importturtleturtle.fillcolor("blue")#設(shè)置填充顏色為藍色turtle.begin_fill()#開始填充turtle.circle(150)turtle.end_fill()#填充結(jié)束turtle.done()實訓(xùn)案例10.4
先定一個小目標!10.4.1繪制彩虹根據(jù)任務(wù)描述實現(xiàn)案例:繪制彩虹本案例要求編寫程序,通過turtle庫繪制彩虹的形狀,效果如圖所示。10.4.1繪制彩虹
先定一個小目標!10.4.1二十四節(jié)氣倒計時根據(jù)任務(wù)描述實現(xiàn)案例:二十四節(jié)氣倒計時10.4.1二十四節(jié)氣倒計時作為全球唯一的“雙奧之城”,北京歷經(jīng)十幾年的發(fā)展,讓一個陽光、富強、開放、自信的中國再次受到了世界的關(guān)注,這一時刻定將銘刻在歷史長河中。作為中國人,我們?yōu)樽约旱膰腋械阶院莉湴痢?022年北京冬季奧運會推出了一系列與中國文化融合的活動,其中“二十四節(jié)氣倒計時”彰顯著中國文化的獨特魅力。二十四節(jié)氣代表著一年的時光輪回,用它們來倒計時,體現(xiàn)了我們國家人民對時間的理解,中華文化的智慧和思想。10.4.1二十四節(jié)氣倒計時本案例要求運用前面所學(xué)的知識,編寫一個二十四節(jié)氣倒計時程序,整個程序主要分為引導(dǎo)語和倒計時兩部分,引導(dǎo)語部分用于展示中文和英文的引導(dǎo)語,倒計時部分用于展示倒計時數(shù)字、某個節(jié)氣的名稱以及的古詩詞,每隔一秒會切換到下一個節(jié)氣的名稱以及對應(yīng)的古詩詞。引導(dǎo)語與倒計時的效果如圖所示。常用的第三方Python庫10.5
先定一個小目標!10.5.1jieba庫掌握常用第三方庫的基本用法,能夠使用jieba庫實現(xiàn)中文分詞jieba庫用于實現(xiàn)中文分詞,中文分詞即將中文語句或語段拆成若干漢語詞匯。例如,用戶輸入語句“我是一個學(xué)生”經(jīng)分詞系統(tǒng)處理之后,該語句被分成“我”“是”“一個”“學(xué)生”這4個漢語詞匯。jieba支持以下三種分詞模式。(1)精確模式:試圖將句子最精準地切開。(2)全模式:將句子中所有可以成詞的詞語都掃描出來,速度非常快。(3)搜索引擎模式:在精確模式的基礎(chǔ)上對長詞再次切分,適用于建立搜索引擎的索引。10.5.1jieba庫jieba中針對以上模式提供了一系列用于實現(xiàn)分詞的函數(shù),這些分詞函數(shù)及其功能說明如表所示。10.5.1jieba庫函數(shù)功能說明cut(s)以精準模式對文本s進行分詞,返回一個可迭代對象cut(s,cut_all=True)默認以全模式對文本s進行分詞,輸出文本s中出現(xiàn)的所有詞cut_for_search(s)以搜索引擎模式對文本s進行分詞lcut(s)以精準模式對文本s進行分詞,分詞結(jié)果以列表形式返回lcut(s,cut_all=True)以全模式對文本s進行分詞,分詞結(jié)果以列表形式返回lcut_for_search(s)以搜索引擎模式對文本s進行分詞,分詞結(jié)果以列表形式返回通過分詞函數(shù)對中文語句進行分詞,示例代碼如下:10.5.1jieba庫importjiebaseg_list=jieba.cut("我打算到中國科學(xué)研究院圖書館學(xué)習(xí)",cut_all=True)print("【全模式】:"+"/".join(seg_list))#全模式seg_list=jieba.lcut("我打算到中國科學(xué)研究院圖書館學(xué)習(xí)")print("【精確模式】:"+"/".join(seg_list))#精確模式#搜索引擎模式seg_list=jieba.cut_for_search("我打算到中國科學(xué)研究院圖書館學(xué)習(xí)")print("【搜索引擎模式】:"+",".join(seg_list))jieba實現(xiàn)分詞的基礎(chǔ)是詞庫,jieba的詞庫存儲在jieba庫下的dict文件中,該文件中存儲了中文詞庫以及每個詞的詞頻、詞性等信息。利用jieba模塊的add_word()函數(shù)可以向詞庫中增加新詞。新詞添加之后,進行分詞時不會對該詞進行劃分。例如,向中文詞庫中加入詞語“好天氣”,之后再對一段包含這個詞語的語句進行分詞,具體代碼如下:10.5.1jieba庫jieba.add_word("好天氣")result=jieba.lcut("今天真是個好天氣")print(result)
先定一個小目標!10.5.2wordcloud庫掌握常用第三方庫的基本用法,能夠使用wordcloud庫繪制詞云10.5.2wordcloud庫wordcloud庫用于生成詞云圖。詞云圖是一種以詞語頻率為基礎(chǔ)的可視化方式,通過將文本中出現(xiàn)頻率較高的詞語以更大的字體展示,從而呈現(xiàn)出詞語在文本中的重要性和流行程度。詞云圖常被用于分析和展示大量文本數(shù)據(jù)的關(guān)鍵詞,幫助人們直觀地了解文本的主題、熱點和關(guān)鍵話題。10.5.2wordcloud庫wordcloud庫會將文本中詞語出現(xiàn)的頻率作為參數(shù)來繪制詞云,它基于Pillow和Matplotlib庫,支持對詞云的形狀、顏色和大小等屬性進行設(shè)置。利用wordcloud庫生成詞云主要包含三個步驟:(1)利用WordCloud類的構(gòu)造方法WordCloud()創(chuàng)建詞云對象。(2)利用WordCloud對象的generate()方法加載詞云圖用到的文本。(3)利用WordCloud對象的to_file()方法生成詞云圖。10.5.2wordcloud庫WordCloud()方法在創(chuàng)建詞云對象時可通過參數(shù)設(shè)置詞云的屬性,參數(shù)及參數(shù)說明如表所示。函數(shù)功能說明width指定詞云對象生成圖片的寬度,默認為400像素height指定詞云對象生成圖片的高度,默認為200像素min_font_size指定詞云中字體的最小字號,默認為4號max_font_size指定詞云中字體的最大字號,默認根據(jù)高度自動調(diào)節(jié)font_step指定詞云中字體字號的步間隔,默認為110.5.2wordcloud庫WordCloud()方法在創(chuàng)建詞云對象時可通過參數(shù)設(shè)置詞云的屬性,參數(shù)及參數(shù)說明如表所示。函數(shù)功能說明font_path指定字體文件的路徑,默認為當前路徑max_words指定詞云顯示的最大單詞數(shù)量,默認為200stop_words指定詞云的排除詞列表,即不顯示的單詞列表background_color指定詞云圖片的背景顏色,默認為黑色mask指定詞云形狀,默認為長方形10.5.2wordcloud庫generate()方法需要接收一個字符串作為參數(shù),字符串中的內(nèi)容便是詞云圖用到的文本。若字符串中的內(nèi)容全部為漢字,那么在創(chuàng)建詞云對象時必須通過font_path參數(shù)指定字體文件的路徑,不指定的話將無法正常顯示漢字。to_file()方法用于以圖片形式輸出詞云圖,該方法接收一個表示圖片文件名的字符串作為參數(shù),圖片的格式可以為PNG或JPEG格式。以xiyouji.txt文件的內(nèi)容為例,簡單演示通過wordcloud庫繪制詞云圖的基本過程,具體代碼如下:importwordcloud#創(chuàng)建詞云對象w=wordcloud.WordCloud(font_path='AdobeHeitiStd-Regular.otf',max_words=500,max_font_size=40,background_color='white')file=open(r'xiyouji.txt',encoding='utf-8')#加載詞云圖用到的文本string=file.read()file.close()w.generate(string)#生成詞云圖w.to_file('xiyou.jpg')10.5.2wordcloud庫生成了詞云圖片xiyou.jpg,如圖所示。10.5.2wordcloud庫在網(wǎng)絡(luò)上見到的詞云圖往往是形狀各異的,但上面示例生成的詞云圖只是尋常的長方形。如果想生成如網(wǎng)絡(luò)詞云一樣以其他圖片作為外型的詞云圖,需要先利用Pillow庫中Image模塊的open()函數(shù)加載圖片文件,open()函數(shù)的語法格式如下:10.5.2wordcloud庫open(fp,mode="r",formats=None)語法格式fp:表示圖片文件名,它可以取值為包含文件名稱的字符串等。mode:表示打開圖片文件的模式,如果給定值,則參數(shù)的值必須為r。formats:表示試圖加載文件的格式,它的值是一個包含格式的列表或元組。open()函數(shù)加載圖片文件后會返回一個圖片對象,該對象無法直接傳遞給WordCloud()方法的mask參數(shù),而是需要先使用numpy庫的array()函數(shù)將圖片對象轉(zhuǎn)換成數(shù)組,再將這個數(shù)組傳遞給mask參數(shù)。需要說明的是,以上提到了兩個庫:Pillow和numpy,這兩個庫都需要提前安裝到當前的開發(fā)環(huán)境中,具體安裝命令如下:10.5.2wordcloud庫pipinstallPillow==9.5.0pipinstallnumpy==1.24.3安裝命令以xiyouji.txt文件和孫悟空圖片wukong.png為例,演示如何通過wordcloud庫生成其他形狀的詞云圖片。10.5.2wordcloud庫importwordcloudimportnumpyasnpfromPILimportImagepicture=Image.open("wukong.png")mk=np.array(picture)w=wordcloud.WordCloud(font_path='AdobeHeitiStd-Regular.otf',mask=mk,max_words=500,background_color='white')file=open(r'xiyouji.txt',encoding='utf-8')string=file.read()file.close()w.generate(string)w.to_file('xiyou.jpg')生成了詞云圖片xiyou.jpg,如圖所示。10.5.2wordcloud庫
先定一個小目標!10.5.3Pygame庫掌握常用第三方庫的基本用法,能夠使用Pygame庫制作小游戲Pygame是為開發(fā)2D游戲而設(shè)計的Python跨平臺模塊,開發(fā)人員利用Pygame模塊中定義的函數(shù)可以方便快捷地實現(xiàn)諸如圖形用戶界面創(chuàng)建、圖形和圖像繪制、用戶鍵盤和鼠標操作的監(jiān)聽以及播放音頻等游戲中常用的功能。10.5.3Pygame庫1.Pygame的初始化和退出Pygame庫根據(jù)不同的開發(fā)需求定義了各種子模塊,包括顯示模塊、字體模塊、混音器模塊等。在使用一些子模塊之前,需要進行初始化,比如字體模塊。為了簡化開發(fā)流程,Pygame提供了以下兩個函數(shù):init()函數(shù):用于一次性初始化Pygame的所有模塊,如此開發(fā)人員無需再單獨調(diào)用每個子模塊的初始化方法,便可以直接使用所有子模塊。quit()函數(shù):用于卸載所有之前被初始化的Pygame模塊。盡管Python解釋器在程序退出時會自動釋放已經(jīng)加載的所有模塊,quit()函數(shù)并非必須調(diào)用,然而為了良好的開發(fā)習(xí)慣,應(yīng)該遵循誰申請、誰釋放的原則,因此,在需要釋放Pygame模塊資源的時候,開發(fā)人員應(yīng)當在需要時主動調(diào)用quit()函數(shù)卸載模塊資源。10.5.3Pygame庫導(dǎo)入Pygame模塊,在自定義的主函數(shù)中先后初始化和卸載所有模塊,具體代碼如下:importpygame#導(dǎo)入pygamedefmain():pygame.init()#初始化所有模塊
pygame.quit()#卸載所有模塊if__name__=='__main__':main()10.5.3Pygame庫2.創(chuàng)建游戲窗口若要開發(fā)帶有圖形界面的游戲,程序應(yīng)先創(chuàng)建一個圖形界面窗口。Pygame通過子模塊display創(chuàng)建圖形界面窗口,該子模塊中與窗口相關(guān)的常用函數(shù)如表所示。函數(shù)功能說明set_mode()初始化游戲窗口set_caption()設(shè)置窗口標題update()更新屏幕顯示內(nèi)容10.5.3Pygame庫(1)set_mode()set_mode()函
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 寶雞秦華職業(yè)技術(shù)學(xué)校招聘真題
- 2024年宜賓市敘州區(qū)教育類事業(yè)單位招聘專業(yè)技術(shù)人員筆試真題
- 青海湖內(nèi)冰塊形態(tài)及其運動規(guī)律現(xiàn)場調(diào)查研究
- 2024年井岡山大學(xué)附屬醫(yī)院招聘筆試真題
- 家庭衛(wèi)生的清理與消毒
- 社區(qū)衛(wèi)生服務(wù)中心總結(jié)
- 魯迅短篇小說鑒賞及解讀
- 感恩老師作文四百字15篇范文
- 針對東北地區(qū)的人工林適地適樹因子提取及分析模型研究
- 傳統(tǒng)喪葬儀式中的面子-村落共同體維系方式分析-來自閩南M鄉(xiāng)的喪葬個案
- 廣東省佛山市南海區(qū)2021-2022學(xué)年八年級下學(xué)期期末數(shù)學(xué)試題
- JT-T-1302.1-2019機動車駕駛員計時培訓(xùn)系統(tǒng)第1部分:計時終端技術(shù)要求
- 糖尿病家庭醫(yī)生:簽約講座計劃
- 報關(guān)部報關(guān)員崗位月度KPI績效考核表
- 呼吸衰竭診療規(guī)范
- MOOC 化工熱力學(xué)-鹽城師范學(xué)院 中國大學(xué)慕課答案
- (高清版)DZT 0064.88-2021 地下水質(zhì)分析方法第88部分:14C的測定合成苯-液體閃爍計數(shù)法
- 《農(nóng)村小學(xué)生自主閱讀能力培養(yǎng)的策略研究》課題結(jié)題報告
- 2024年汽車駕駛員(技師)理論考試題及答案
- 四川省宜賓縣2024屆語文八下期末聯(lián)考試題含解析
- 醫(yī)務(wù)人員手衛(wèi)生規(guī)范培訓(xùn)課件預(yù)防醫(yī)院感染的手衛(wèi)生措施
評論
0/150
提交評論