(中職)數(shù)據(jù)采集技術(shù)(初級)項目3:初識Python教學(xué)課件_第1頁
(中職)數(shù)據(jù)采集技術(shù)(初級)項目3:初識Python教學(xué)課件_第2頁
(中職)數(shù)據(jù)采集技術(shù)(初級)項目3:初識Python教學(xué)課件_第3頁
(中職)數(shù)據(jù)采集技術(shù)(初級)項目3:初識Python教學(xué)課件_第4頁
(中職)數(shù)據(jù)采集技術(shù)(初級)項目3:初識Python教學(xué)課件_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、正版可修改PPT課件(中職)數(shù)據(jù)采集技術(shù)(初級)項目3:初識Python教學(xué)課件CONTENTS任務(wù)一:安裝Python,并輸出hello world任務(wù)二:投擲骰子任務(wù)三:提取分解數(shù)據(jù)任務(wù)四:編寫TCP通訊程序項目情景零經(jīng)理:小張,你抽時間學(xué)習(xí)一下Python,現(xiàn)階段Python是主流。小張:好的。學(xué)習(xí)Python的用途是什么呢?經(jīng)理:學(xué)習(xí)Python主要是為后面爬取數(shù)據(jù)和數(shù)據(jù)分析打下基礎(chǔ)。小張:好的。經(jīng)理:通過案例系統(tǒng)的學(xué)習(xí)一下就可以,重點是提取分解數(shù)據(jù)。小張:好的,沒問題。小張和經(jīng)理談完話后,學(xué)習(xí)Python語言的基礎(chǔ)知識,并打算重點學(xué)習(xí)使用Python進行數(shù)據(jù)的提取分解。學(xué)習(xí)Pytho

2、n步驟為:步驟一:安裝Python軟件。步驟二:練習(xí)Python基本使用。步驟三:提取分解數(shù)據(jù)。步驟四:編寫TCP通訊程序。學(xué)習(xí)目標零掌握Python語言的發(fā)展及特點掌握Python語言的運行方式掌握Python語言的基本語法掌握Python語言的基本輸入輸出掌握XML數(shù)據(jù)操作掌握JSON數(shù)據(jù)操作掌握socket模塊任務(wù)描述任務(wù)一:安裝Python,并輸出hello world壹Python被稱為膠水語言,因為它具有豐富和強大的第三方庫。它能夠把其他語言制作的各種模塊(尤其是C/C+)很輕松地聯(lián)系在一起。本任務(wù)是在Windows環(huán)境中安裝Python軟件,并使用命令提示符的方式輸出“hello

3、World”。實現(xiàn)該任務(wù)的思路:(1)找到Python官網(wǎng),下載Python安裝包。(2)安裝Python軟件。(3)檢驗Python是否安裝成功。(4)輸出“helloWorld”。知識儲備任務(wù)一:安裝Python,并輸出hello world壹 Python語言的歷史與發(fā)展Python是一門跨平臺、開源、免費的解釋型高級動態(tài)編程語言,1989年由荷蘭人Guido van Rossum發(fā)明,1991年公開發(fā)行第一個版本。Guido曾參與設(shè)計一種名為ABC的教學(xué)語言,他本人認為ABC這種語言非常優(yōu)美且強大,但ABC最終未能成功。1989年圣誕節(jié)期間,身在阿姆斯特丹的Guido為了打發(fā)時間,決心

4、開發(fā)一個新的腳本解釋程序作為ABC語言的一種繼承。由于非常喜歡一部名為Monty Pythons Flying Circus的英國肥皂劇,Guido選擇了“Python”作為這個新語言的名字,Python就此誕生。知識儲備任務(wù)一:安裝Python,并輸出hello world壹 Python語言的歷史與發(fā)展年份版本1991年P(guān)ython 的第一個版本公開發(fā)行,此版本使用C語言實現(xiàn),能調(diào)用C語言的庫文件2000年10月Python 2.0發(fā)布2010年P(guān)ython 2.x系列發(fā)布了最后一個版本,其主版本號為2.72018年3月Guido在maillist上宣布Python 2.7將于2020年1

5、月1日終止支持2008年12月Python 3.0版本發(fā)布,3.0與2.x系列不兼容2012年P(guān)ython 3.3版本發(fā)布2014年P(guān)ython 3.4版本發(fā)布2015年P(guān)ython 3.5版本發(fā)布2016年P(guān)ython 3.6版本發(fā)布2018年6月 Python 3.7.0發(fā)布2019年11月Python 3.8.0發(fā)布知識儲備任務(wù)一:安裝Python,并輸出hello world壹 Python語言的特點(1)Python是免費的開源自由軟件(2)Python是面向?qū)ο蟮模?)Python具有良好的跨平臺特性(4)Python功能強大知識儲備任務(wù)一:安裝Python,并輸出hello wo

6、rld壹 Python語言的應(yīng)用領(lǐng)域(1)Web開發(fā)(2)科學(xué)計算(3)游戲開發(fā)(4)自動化運維(5)多媒體應(yīng)用(6)爬蟲開發(fā)知識儲備任務(wù)一:安裝Python,并輸出hello world壹 Python程序的運行方式 交互式Python解釋器或控制臺都能以相同的操作通過交互方式運行Python程序,以控制臺為例,進入Python環(huán)境后,在命令提示符“”后輸入如下代碼: 文件式創(chuàng)建文件,在其中寫入Python代碼,將該文件保存為.py形式的Python文件。此處以代碼“print(“hello world”)”為例,在文件中寫入此行代碼,并以文件名“hello.py”保存文件。 打開控制臺窗口

7、,在命令提示符“”后輸入命令“Python hello.py”運行Python程序。任務(wù)步驟任務(wù)一:安裝Python,并輸出hello world壹 在windows下安裝Python第一步:打開瀏覽器官網(wǎng),點擊“Python 3.8.2”下載。任務(wù)步驟任務(wù)一:安裝Python,并輸出hello world壹第二步:自定義安裝路徑,勾選“Add Python 3.8 to PATH”,開始傻瓜式安裝Python。任務(wù)步驟任務(wù)一:安裝Python,并輸出hello world壹第三步:打開Python軟件,效果如圖則安裝成功。第四步:在上圖效果圖中輸入print (“helloWorld”),出

8、現(xiàn)如圖所示的效果。 任務(wù)描述任務(wù)二:投擲骰子貳Python在編程過程中起著至關(guān)重要的作用,尤其是在大數(shù)據(jù)和人工智能行業(yè)進行數(shù)據(jù)分析、統(tǒng)計、采集等方面。所以學(xué)習(xí)Python基礎(chǔ)知識是必不可少的。本任務(wù)是使用Python基本語法及條件語句實現(xiàn)投擲骰子的游戲。實現(xiàn)該任務(wù)的思路是:(1)創(chuàng)建名為dice的Python文件。(2)定義函數(shù)roll,用來定義投擲一次并返回點數(shù)。(3)定義主函數(shù),編寫while循環(huán)。(4)運行項目,查看結(jié)果。 知識儲備任務(wù)二:投擲骰子貳 Python基本語法 編碼 默認情況下,Python 3 源碼文件以UTF-8編碼,所有字符串都是 unicode 字符串。也可以為源碼文

9、件指定不同的編碼。 行與縮進 python最具特色的就是使用縮進來表示代碼塊,不需要使用大括號??s進的空格數(shù)是可變的,但是同一個代碼塊的語句必須包含相同的縮進空格數(shù)。知識儲備任務(wù)二:投擲骰子貳 Python基本語法注釋注釋用于為程序添加說明性的文字,幫助程序員閱讀和理解代碼。Python解釋器會忽略注釋的內(nèi)容。注釋分單行注釋和多行注釋。單行注釋以符號“#”開始,當(dāng)前行中符號“#”及其后的內(nèi)容為注釋??梢詥为氄家恍?,也可放在語句末尾。多行注釋是用3個英文的單引號“”或3個雙引號“”作為注釋的開始和結(jié)束符號 多行注釋開始下面的代碼根據(jù)變量x的值計算y注意代碼中使用縮進表示代碼塊多行注釋結(jié)束x=5i

10、f x 100: y = x *5 - 1#單行注釋:x100時執(zhí)行該語句else: y = 0 #x大于,如果前面的值大于后面的值,則返回 True,否則返回 False。小于,如果=大于等于(等價于數(shù)學(xué)中的 ),如果=前面的值大于或者等于后面的值,則返回 True,否則返回 False。=小于等于(等價于數(shù)學(xué)中的 ),如果=前面的值小于或者等于后面的值,則返回 True,否則返回 False。!=不等于(等價于數(shù)學(xué)中的 ),如果!=兩邊的值不相等,則返回 True,否則返回 False。is判斷兩個變量所引用的對象是否相同,如果相同則返回 True,否則返回 False。is not判斷兩

11、個變量所引用的對象是否不相同,如果不相同則返回 True,否則返回 False。知識儲備任務(wù)二:投擲骰子貳 Python基本語法 運算符(4)位運算符位運算符允許對整型數(shù)中指定的位進行置位,只能用來操作整數(shù)類型,它按照整數(shù)在內(nèi)存中的二進制形式進行計算。 運算符描述使用形式舉例&按位與a & b4 & 5|按位或a | b4 | 5按位異或a b4 5按位取反a4按位左移a b4 按位右移a b4 2,表示整數(shù)4 按位右移 2 位知識儲備任務(wù)二:投擲骰子貳 Python基本語法 運算符(5)邏輯運算符邏輯運算符包含and、or、和not邏輯運算符含義基本格式說明and邏輯與運算,等價于數(shù)學(xué)中的“

12、且”a and b當(dāng) a 和 b 兩個表達式都為真時,a and b 的結(jié)果才為真,否則為假。or邏輯或運算,等價于數(shù)學(xué)中的“或”a or b當(dāng) a 和 b 兩個表達式都為假時,a or b 的結(jié)果才是假,否則為真。not邏輯非運算,等價于數(shù)學(xué)中的“非”not a如果 a 為真,那么 not a 的結(jié)果為假;如果 a 為假,那么 not a 的結(jié)果為真。相當(dāng)于對 a 取反。知識儲備任務(wù)二:投擲骰子貳 Python基本語法 數(shù)據(jù)類型 知識儲備任務(wù)二:投擲骰子貳 Python基本語法 數(shù)據(jù)類型在Python中,可以實現(xiàn)數(shù)值類型的相互轉(zhuǎn)換,使用的內(nèi)置函數(shù)包含int(),float,bool(),co

13、mplex() 知識儲備任務(wù)二:投擲骰子貳 Python基本語法 基本輸入/基本輸出 Python使用input()函數(shù)輸入數(shù)據(jù) Python3使用print()函數(shù)輸出數(shù)據(jù) 變量 = input(提示字符串)print(obj1,sep= ,end=n,file=sys.stdout)(1)省略所有參數(shù)print()函數(shù)的所有參數(shù)均可省略。無參數(shù)時,print函數(shù)輸出一個空行 print()知識儲備任務(wù)二:投擲骰子貳 Python基本語法 基本輸入/基本輸出(2)輸出一個或多個數(shù)據(jù)print()函數(shù)可同時輸出一個或多個數(shù)據(jù),在輸出多個數(shù)據(jù)時,默認使用空格作為輸出分隔符(3)指定輸出分隔符pr

14、int()函數(shù)的默認輸出分隔符為空格,可用sep參數(shù)指定分隔符號知識儲備任務(wù)二:投擲骰子貳(4)指定輸出結(jié)尾符號print()函數(shù)默認以回車換行符號作為輸出結(jié)尾符號,即在輸出所有數(shù)據(jù)后會換行。后續(xù)的print()函數(shù)在新行中繼續(xù)輸出??梢杂胑nd參數(shù)指定輸出結(jié)尾符號。(5)輸出到文件print()函數(shù)默認輸出到標準輸出流(即sys.stdout)。在Windows命令提示符窗口運行Python程序或在交互環(huán)境中執(zhí)行命令時,print()函數(shù)將數(shù)據(jù)輸出到命令提示符窗口。 file1=open(rd:data.txt,w)#打開文件 print(123,abc,45,book,file=file1

15、)#用file參數(shù)指定輸出文件 file1.close()#關(guān)閉文件 Python基本語法 基本輸入/基本輸出知識儲備任務(wù)二:投擲骰子貳 Python基本語法 函數(shù)函數(shù)由若干條語句組成,用于實現(xiàn)某一特定的功能,函數(shù)包括函數(shù)名、函數(shù)體、參數(shù)以及返回值。在Python語言中,不僅包括豐富的系統(tǒng)函數(shù),還允許自定義函數(shù)。函數(shù)調(diào)用語法為:functionName(parm1),其中functionName表示函數(shù)名稱,parm1表示參數(shù)名稱。(1)內(nèi)置函數(shù)Python中,系統(tǒng)提供了很多內(nèi)置函數(shù),主要包含數(shù)學(xué)運算函數(shù)、字符串處理函數(shù)以及其他函數(shù)。(2)自定義函數(shù)在Python中,自定義函數(shù)使用def關(guān)鍵字

16、定義,其后緊跟函數(shù)名,括號內(nèi)包含將要在函數(shù)體中使用的形式參數(shù),簡稱形參,定義語句以冒號(:)結(jié)束。語法格式如下所示。說明:參數(shù)列表可以為空,也可以包含多個參數(shù),多個參數(shù)之間使用逗號隔開。函數(shù)體可以包含一條或多條語句。def 函數(shù)名(函數(shù)列表): 函數(shù)體創(chuàng)建一個函數(shù)PrintHello(),該函數(shù)功能是打印“hello python”知識儲備任務(wù)二:投擲骰子貳 Python基本語法 條件語句條件語句屬于分支結(jié)構(gòu),掌握條件語句使用方式,可以選擇讓程序執(zhí)行指定的代碼塊,條件語句有三種形式結(jié)構(gòu):(1)“if”語句結(jié)構(gòu)if語句是最常用的條件語句,if語句執(zhí)行流程如下:說明:在“if”語句結(jié)構(gòu)中,條件為真

17、時(也就是布爾值為True),則執(zhí)語句,當(dāng)條件為假時(也就是布爾值為Flase),則不執(zhí)行語句塊A。知識儲備任務(wù)二:投擲骰子貳 Python基本語法(2)“ifelse”語句結(jié)構(gòu)在分支流程中,可以將if語句和else語句相結(jié)合,指定不滿足條件時所執(zhí)行的語句,其語法結(jié)構(gòu)如下:在“ifelse”語句結(jié)構(gòu)中,若表達式A為真,則執(zhí)行語句塊A,否則就會執(zhí)行語句塊B。執(zhí)行流程如下:if 條件語句:語句組1else語句組2知識儲備任務(wù)二:投擲骰子貳 Python基本語法循環(huán)語句,掌握條件語句后,發(fā)現(xiàn)當(dāng)條件為真或假時,將執(zhí)行對應(yīng)語句塊,但是怎樣才能重復(fù)執(zhí)行多次呢?此時需要使用循環(huán)語句,循環(huán)語句屬于循環(huán)結(jié)構(gòu),需

18、要重復(fù)執(zhí)行語句塊時必須要用到它。循環(huán)語句結(jié)構(gòu)有“while”循環(huán)和“for”循環(huán)。(1)while循環(huán)語法結(jié)構(gòu)如下:在“while”循環(huán)中,當(dāng)表達式A為真時(也就是布爾值True),則會一直執(zhí)循環(huán)語句塊,當(dāng)表達式A為假時(也就是布爾值Flase),則會不執(zhí)行或者會跳出while循環(huán)。需要注意,表達式A后面的冒號“:”不能省略,語句塊A要注意縮進的格式。while 表達式A:循環(huán)語句塊知識儲備任務(wù)二:投擲骰子貳 Python基本語法循環(huán)語句,掌握條件語句后,發(fā)現(xiàn)當(dāng)條件為真或假時,將執(zhí)行對應(yīng)語句塊,但是怎樣才能重復(fù)執(zhí)行多次呢?此時需要使用循環(huán)語句,循環(huán)語句屬于循環(huán)結(jié)構(gòu),需要重復(fù)執(zhí)行語句塊時必須要用

19、到它。循環(huán)語句結(jié)構(gòu)有“while”循環(huán)和“for”循環(huán)。(2)for循環(huán)當(dāng)循環(huán)次數(shù)固定時,可以使用for語句實現(xiàn)。語法結(jié)構(gòu)如下:在for循環(huán)中,可遍歷一個序列或迭代對象的所有元素。具體實現(xiàn)如下函數(shù)range(1,4)會生成一個1到(4-1)個數(shù)字列表,for循環(huán)就會循環(huán)3次,循環(huán)語句塊會執(zhí)行3次。for 取值 in 序列或迭代對象:語句塊for i in range(1,4):循環(huán)語句塊任務(wù)步驟任務(wù)二:投擲骰子貳第一步: 打開Python的IDLE文件第二步:新建dice.py文件。定義函數(shù)roll,用來定義投擲一次并返回點數(shù)。def roll(sides=6): 投擲一次骰子并返回點數(shù)。 s

20、ides:骰子有多少面,默認為6。 num_rolled = None * 隨機產(chǎn)生1-6之間的整數(shù) * num_rolled = random.randint(1, sides) return num_rolled任務(wù)步驟任務(wù)二:投擲骰子貳第三步:定義主函數(shù),編寫while循環(huán)。def main(): sides = 6 stop = False * 修改while循環(huán)的條件,使用stop變量控制循環(huán)的結(jié)束 * while not stop: user_in = input(試試手氣? 回車=擲骰子, Q=退出) * 修改if的條件,根據(jù)用戶的選擇做決定 * * 注意,用戶輸入Q,無論大小寫

21、都可以退出 * if user_in.lower() = q: stop = True else: num_rolled = None * 在這里補充你的代碼 * * 調(diào)用roll函數(shù)來擲骰子 * num_rolled = roll(sides) print(你擲出了 %d 點 % num_rolled) print(歡迎下次再來)任務(wù)步驟任務(wù)二:投擲骰子貳第四步: 在IDLE中運行Python文件。點擊回車會出現(xiàn)隨機的骰子數(shù)知識儲備任務(wù)三:提取分解數(shù)據(jù)弎 任務(wù)描述本任務(wù)是通過學(xué)習(xí) XML 數(shù)據(jù)操作和 JSON 數(shù)據(jù)操作,實現(xiàn)使用 xml.dom 解析 XML 文件,并使用 JSON 庫讀取分

22、析 JSON 文件。實現(xiàn)本任務(wù)的思路是:(1)準備 XML 文件。(2)使用 xml.dom 解析 XML 文件。(3)使用 JSON 庫解析 JSON 文件。知識儲備任務(wù)三:提取分解數(shù)據(jù)弎 XML概念 XML 指的是可擴展標記語言(Extensible Markup Language),使用XML可以存儲和傳輸數(shù)據(jù),還可以用作配置文件。類似于HTML超文本標記語言,但是HTML所有的標簽都是預(yù)定義的,而xml的標簽可以隨便定義。 XML和HTML設(shè)計的目的不同,超文本標記語言被設(shè)計用來顯示數(shù)據(jù),其焦點是數(shù)據(jù)的外觀。XML被設(shè)計用來傳輸和存儲數(shù)據(jù),其焦點是數(shù)據(jù)的內(nèi)容 XML元素是指開始標簽到結(jié)

23、束標簽部分,一個元素可以包含其他的元素、屬性、和文本。示例代碼如下: /包含其他元素/包含相關(guān)屬性/包含文本內(nèi)容abc知識儲備任務(wù)三:提取分解數(shù)據(jù)弎 XML數(shù)據(jù)操作 XML概念在使用XML中,需要遵循XML的語法規(guī)則,XML的語法規(guī)則如下:所有的元素都必須有開始標簽和結(jié)束標簽,省略結(jié)束標簽是非法的大小寫敏感,以下是兩個不同的標簽XML文檔必須有根元素XML必須正確嵌套,父元素必須完全包住子元素XML屬性值必須加引號,元素的屬性值都是一個鍵值對形式知識儲備任務(wù)三:提取分解數(shù)據(jù)弎 XML數(shù)據(jù)操作 xml.dom.minidom使用DOM解析數(shù)據(jù)使用DOM解析數(shù)據(jù)常用方法 方法描述minidom.p

24、arse(filename)加載讀取XML文件doc.documentElement獲取XML文檔對象node.getAttribute(AttributeName)獲取XML節(jié)點屬性值node.getElementsByTagName(TagName)獲取XML節(jié)點對象集合node.childNodes返回子節(jié)點列表node.childNodesindex.nodeValue獲取XML節(jié)點值node.firstChild訪問第一個節(jié)點,等價于pagexml.childNodes0node.nodeName/root.tagName節(jié)點的名稱node.nodeValue節(jié)點的值,文本節(jié)點才有值

25、,其它節(jié)點返回的是Nonenode.nodeType節(jié)點的類型知識儲備任務(wù)三:提取分解數(shù)據(jù)弎 JSON數(shù)據(jù)操作 什么是JSONJSON(JavaScript Object Notation) 是一種輕量級的數(shù)據(jù)交換格式,主要用于前端數(shù)據(jù)和后端數(shù)據(jù)進行交互,也就是JS和Python進行數(shù)據(jù)交互。說明:名稱必須用雙引號來包括;值可以是雙引號包括的字符串、數(shù)字、true、false、null、JavaScript數(shù)組,或子對象。知識儲備任務(wù)三:提取分解數(shù)據(jù)弎 JSON數(shù)據(jù)操作 JSON中常用的方法在使用JSON這個模塊前,首先要導(dǎo)入JSON庫:import json。方法描述json.dumps()

26、將 Python 對象編碼成 JSON 字符串json.loads()將已編碼的 JSON 字符串解碼為 Python 對象json.dump()將Python內(nèi)置類型序列化為json對象后寫入文件json.load()讀取文件中json形式的字符串元素轉(zhuǎn)化為Python類型任務(wù)描述任務(wù)三:提取分解數(shù)據(jù)弎本任務(wù)是通過學(xué)習(xí)XML數(shù)據(jù)操作和JSON數(shù)據(jù)操作,實現(xiàn)使用xml.dom解析XML文件,并使用JSON方法讀取JSON文件。實現(xiàn)本任務(wù)的思路是:(1)準備XML文件。(2)使用xml.dom解析XML文件。(3)使用JSON方法讀取JSON文件。任務(wù)步驟任務(wù)三:提取分解數(shù)據(jù)弎第一步:準備XML

27、文件,保存為movie.xml。第二步:創(chuàng)建test.py,使用xml.dom解析xml。 War, Thriller DVD 2003 PG 10 Talk about a US-Japan war任務(wù)步驟任務(wù)三:提取分解數(shù)據(jù)弎from xml.dom.minidom import parse#minidom解析器打開xml文檔并將其解析為內(nèi)存中的一棵樹DOMTree=parse(rmove.xml)#獲取xml文檔對象,就是拿到樹的根collection=DOMTree.documentElementif collection.hasAttribute(shelf): #判斷根節(jié)點coll

28、ection是否有shelf屬性,有則獲取并打印屬性值 print(Root element is ,collection.getAttribute(shelf) #獲取所有的movies節(jié)點movies=collection.getElementsByTagName(movie)#遍歷集合,打印每部電影的詳細信息for movie in movies: print (*movie*) my_list= if movie.hasAttribute(title): print (title is ,movie.getAttribute(title) for node in movie.child

29、Nodes: my_list.append (node.nodeName)任務(wù)步驟任務(wù)三:提取分解數(shù)據(jù)弎type=movie.getElementsByTagName(type)0 print (type is ,type.childNodes0.data) format=movie.getElementsByTagName(format)0 print (format is ,format.childNodes0.data) if year in my_list: year=movie.getElementsByTagName(year)0 print (year is ,year.chil

30、dNodes0.data) rating=movie.getElementsByTagName(rating)0 print (rating is ,rating.firstChild.data) stars=movie.getElementsByTagName(stars)0 print (stars is ,stars.childNodes0.data) description=movie.getElementsByTagName(description)0 print (description is ,description.childNodes0.data)任務(wù)步驟任務(wù)三:提取分解數(shù)據(jù)

31、弎第三步:運行test.py,查看效果。任務(wù)步驟任務(wù)三:提取分解數(shù)據(jù)弎第四步:使用JSON方法讀取JSON文件。/引入json文件import json/使用open打開test.json文件file = open(test.json,w,encoding=utf-8)data1 = name:john,age:12data2 = name:merry,age:13data = data1,data2print(data)/寫入文件json.dump(data,file,ensure_ascii=False)file.close()file = open(test.json,r,encodin

32、g=utf-8)s = json.load(file)print (s0name)任務(wù)步驟任務(wù)三:提取分解數(shù)據(jù)弎運行結(jié)果如圖所示。任務(wù)描述任務(wù)四:編寫TCP通訊程序肆本任務(wù)是學(xué)習(xí)網(wǎng)絡(luò)通訊相關(guān)模塊及Python內(nèi)置模塊。通過對網(wǎng)絡(luò)通訊Socket模塊的學(xué)習(xí),編寫TCP通訊程序,實現(xiàn)簡易客服機器人。實現(xiàn)簡易客服機器人任務(wù)思路如下:(1)搭建網(wǎng)絡(luò)服務(wù)器。(2)搭建網(wǎng)絡(luò)客戶端。知識儲備任務(wù)四:編寫TCP通訊程序肆 socket模塊 網(wǎng)絡(luò)上的兩個程序通過一個雙向的通信連接實現(xiàn)數(shù)據(jù)的交換,這個連接的一端稱為一個socket。socket本質(zhì)是編程接口(API),是對TCP/IP的封裝?!皊ocket”模塊

33、也叫做嵌套字模塊,嵌套字是雙向通訊信道的端點,套接字可以在一個進程內(nèi),在同一機器上的進程之間,或者在不同主機的進程之間進行通訊,主機可以是任何一臺有連接互聯(lián)網(wǎng)的機器。在Python中,使用socket()函數(shù)來創(chuàng)建套接字,語法格式如下:其中:family: 套接字家族可以使AF_UNIX或者AF_INETtype: 套接字類型可以根據(jù)是面向連接的還是非連接分為SOCK_STREAM或SOCK_DGRAMprotocol: 一般不填默認為0.嵌套字主要包括兩部分:服務(wù)器嵌套字和客戶端嵌套字。服務(wù)器嵌套字創(chuàng)建后,就必須一直開啟,等待客戶端服務(wù)器連接,同時處理多個連接,連接完成后可以進行通訊。客戶端

34、嵌套字創(chuàng)建后只需要連接服務(wù)器,發(fā)送數(shù)據(jù),然后斷開連接。socket.socket(family, type, proto)知識儲備任務(wù)四:編寫TCP通訊程序肆 Socket類型知識儲備任務(wù)四:編寫TCP通訊程序肆 Socket模塊 服務(wù)器端套接字方法客戶端套接字方法方法描述s.bind()綁定地址(host,port)到套接字, 在AF_INET下,以元組(host,port)的形式表示地址。s.listen()開始TCP監(jiān)聽。backlog指定在拒絕連接之前,操作系統(tǒng)可以掛起的最大連接數(shù)量。該值至少為1,大部分應(yīng)用程序設(shè)為5就可以了。s.accept()被動接受TCP客戶端連接,(阻塞式)等

35、待連接的到來方法描述s.connect()主動初始化TCP服務(wù)器連接,。一般address的格式為元組(hostname,port),如果連接出錯,返回socket.error錯誤s.connect_ex()connect()函數(shù)的擴展版本,出錯時返回出錯碼,而不是拋出異常知識儲備任務(wù)四:編寫TCP通訊程序肆 Socket模塊 公共Socket函數(shù)socket編程思路TCP服務(wù)端:1.創(chuàng)建套接字,綁定套接字到本地IP與端口 #socket.socket(socket.AF_INET,socket.SOCK_STREAM), s.bind()2.開始監(jiān)聽連接 #s.listen()3.進入循環(huán),

36、不斷接受客戶端的連接請求 #s.accept()4.然后接收傳來的數(shù)據(jù),并發(fā)送給對方數(shù)據(jù) #s.recv() , s.sendall()5.傳輸完畢后,關(guān)閉套接字 #s.close()知識儲備任務(wù)四:編寫TCP通訊程序肆socket編程思路TCP客戶端:1.創(chuàng)建套接字,連接遠端地址 #socket.socket(socket.AF_INET,socket.SOCK_STREAM), s.connect()2.連接后發(fā)送數(shù)據(jù)和接收數(shù)據(jù) # s.sendall(), s.recv()3.傳輸完畢后,關(guān)閉套接字 #s.close()知識儲備任務(wù)四:編寫TCP通訊程序肆任務(wù)步驟任務(wù)四:編寫TCP通訊程

37、序肆第一步:搭建網(wǎng)絡(luò)服務(wù)器。import socketfrom os.path import commonprefixwords = how are you?:Im Fine,thank you., how old are you?:23, what is your name?:jie, whats your name?:jie, where do you work?:Jinan, bye:Byes = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 綁定sockets.bind(, 9000)# 開始監(jiān)聽一個客戶端連接s.listen(1)conn, addr = s.accept()print(Connected by, addr)任務(wù)步驟任務(wù)四:編寫TCP通訊程序肆第一步:搭建網(wǎng)絡(luò)服務(wù)器。# 開始聊天while True: data = co

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論