《Python與數(shù)據(jù)科學(xué)》課件-一、基礎(chǔ)編_第1頁(yè)
《Python與數(shù)據(jù)科學(xué)》課件-一、基礎(chǔ)編_第2頁(yè)
《Python與數(shù)據(jù)科學(xué)》課件-一、基礎(chǔ)編_第3頁(yè)
《Python與數(shù)據(jù)科學(xué)》課件-一、基礎(chǔ)編_第4頁(yè)
《Python與數(shù)據(jù)科學(xué)》課件-一、基礎(chǔ)編_第5頁(yè)
已閱讀5頁(yè),還剩87頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

本章主要內(nèi)容

數(shù)據(jù)科學(xué)簡(jiǎn)介python基礎(chǔ)知識(shí)1數(shù)據(jù)科學(xué)簡(jiǎn)介華東師范大學(xué)出版社1.1什么是數(shù)據(jù)科學(xué)

近幾年,“數(shù)據(jù)科學(xué)”的概念被媒體和大眾炒得越來(lái)越熱,但究竟什么是“數(shù)據(jù)科學(xué)”,不同的時(shí)期、不同的專家給出了不同的答案。Naur認(rèn)為,數(shù)據(jù)科學(xué)是計(jì)算機(jī)科學(xué)的一個(gè)替代性稱謂。Wu則認(rèn)為,數(shù)據(jù)科學(xué)就是統(tǒng)計(jì)學(xué)。而Cleveland則認(rèn)為數(shù)據(jù)科學(xué)是統(tǒng)計(jì)學(xué)加上它在計(jì)算技術(shù)方面的擴(kuò)展。Conway則認(rèn)為數(shù)據(jù)科學(xué)是計(jì)算機(jī)科學(xué)技術(shù)、數(shù)學(xué)與統(tǒng)計(jì)學(xué)知識(shí)、專業(yè)應(yīng)用知識(shí)三者的交集??陀^來(lái)講,迄今數(shù)據(jù)科學(xué)還沒(méi)有一個(gè)統(tǒng)一成熟的定義,ChikioHayashi、MikeLoukides等人曾先后撰文專門探究“什么是數(shù)據(jù)科學(xué)”,作為一門交叉科學(xué),我們認(rèn)為數(shù)據(jù)科學(xué)是一門包括了計(jì)算機(jī)技巧,數(shù)學(xué)和統(tǒng)計(jì)知識(shí),實(shí)質(zhì)性的專業(yè)知識(shí)的強(qiáng)調(diào)以數(shù)據(jù)為導(dǎo)向的分析與決策的科學(xué)。

事實(shí)上,數(shù)據(jù)科學(xué)是利用計(jì)算機(jī)的運(yùn)算能力對(duì)數(shù)據(jù)進(jìn)行處理,從數(shù)據(jù)中提取信息,進(jìn)而形成“知識(shí)”的一門科學(xué)。它已經(jīng)影響了計(jì)算機(jī)視覺(jué)、信號(hào)處理、自然語(yǔ)言識(shí)別等計(jì)算機(jī)分支,也已經(jīng)在IT、金融、醫(yī)學(xué)、自動(dòng)駕駛等領(lǐng)域得到廣泛使用,甚至在總統(tǒng)競(jìng)選方面都出現(xiàn)了數(shù)據(jù)科學(xué)的身影。

數(shù)據(jù)科學(xué)的學(xué)習(xí)是一項(xiàng)即有趣又艱辛的工作,Metamarket公司的CEOMikeDriscoll曾說(shuō)過(guò):研究數(shù)據(jù)科學(xué),一方面需要如極客那般刻苦鉆研,一方面需要像統(tǒng)計(jì)學(xué)家那樣擁有完美的理論。數(shù)據(jù)科學(xué)家不僅僅是極客——極客只關(guān)心如何調(diào)試一行Bash腳本或Pig腳本,沒(méi)人會(huì)在意非歐氏距離矩陣。數(shù)據(jù)科學(xué)家也不僅僅是統(tǒng)計(jì)學(xué)家——后者只關(guān)注如何完成一個(gè)理論的證明或構(gòu)建出一個(gè)完美的模型,很少有人會(huì)使用R語(yǔ)言將數(shù)據(jù)文件讀入系統(tǒng),從而進(jìn)行后續(xù)的分析。數(shù)據(jù)科學(xué)是一門關(guān)于數(shù)據(jù)的工程,它需要同時(shí)具備理論基礎(chǔ)和工程經(jīng)驗(yàn),需要掌握各種工具的用法。1.2如何學(xué)習(xí)數(shù)據(jù)科學(xué)

數(shù)據(jù)科學(xué)集成了多種領(lǐng)域的不同元素,包括信號(hào)處理,數(shù)學(xué),概率模型技術(shù)和理論,機(jī)器學(xué)習(xí),計(jì)算機(jī)編程,統(tǒng)計(jì)學(xué),數(shù)據(jù)工程,模式識(shí)別和學(xué)習(xí),可視化,不確定性建模,數(shù)據(jù)倉(cāng)庫(kù),以及從數(shù)據(jù)中析取規(guī)律和產(chǎn)品的高性能計(jì)算。而且,數(shù)據(jù)科學(xué)并不局限于大數(shù)據(jù),但是數(shù)據(jù)量的擴(kuò)大誠(chéng)然使得數(shù)據(jù)科學(xué)的地位越發(fā)重要。所以,數(shù)據(jù)科學(xué)家,顧名思義就是數(shù)據(jù)科學(xué)的從業(yè)者。1.3什么是數(shù)據(jù)科學(xué)家

用ThomasH.Davenport(埃森哲戰(zhàn)略變革研究院主任)和D.J.Patil(美國(guó)科學(xué)促進(jìn)會(huì)科學(xué)與技術(shù)政策研究員,為美國(guó)國(guó)防部服務(wù))的話來(lái)總結(jié):數(shù)據(jù)科學(xué)家傾向于用探索數(shù)據(jù)的方式來(lái)看待周圍的世界。(好奇心)把大量散亂的數(shù)據(jù)變成結(jié)構(gòu)化的可供分析的數(shù)據(jù),還要找出豐富的數(shù)據(jù)源,整合其他可能不完整的數(shù)據(jù)源,并清理成結(jié)果數(shù)據(jù)集。(問(wèn)題分體整理能力)新的競(jìng)爭(zhēng)環(huán)境中,挑戰(zhàn)不斷地變化,新數(shù)據(jù)不斷地流入,數(shù)據(jù)科學(xué)家需要幫助決策者穿梭于各種分析,從臨時(shí)數(shù)據(jù)分析到持續(xù)的數(shù)據(jù)交互分析。(快速學(xué)習(xí)能力)數(shù)據(jù)科學(xué)家會(huì)遇到技術(shù)瓶頸,但他們能夠找到新穎的解決方案。(問(wèn)題轉(zhuǎn)化能力)當(dāng)他們有所發(fā)現(xiàn),便交流他們的發(fā)現(xiàn),建議新的業(yè)務(wù)方向。(業(yè)務(wù)精通)他們很有創(chuàng)造力的展示視覺(jué)化的信息,也讓找到的模式清晰而有說(shuō)服力。(表現(xiàn)溝通能力)他們會(huì)把蘊(yùn)含在數(shù)據(jù)中的規(guī)律建議給Boss,從而影響產(chǎn)品,流程和決策。(決策力)1.3什么是數(shù)據(jù)科學(xué)家1.4數(shù)據(jù)科學(xué)家需要掌握的技能

計(jì)算機(jī)科學(xué)

數(shù)學(xué)

統(tǒng)計(jì)學(xué)

機(jī)器學(xué)習(xí)

某一領(lǐng)域的專業(yè)知識(shí)

溝通和演講的技巧

數(shù)據(jù)可視化2.1python基本概念1.5python與數(shù)據(jù)科學(xué)

隨著NumPy、SciPy、matplotlib、ETS等眾多程序庫(kù)的開發(fā),Python越來(lái)越適合于做科學(xué)計(jì)算。與科學(xué)計(jì)算領(lǐng)域最流行的商業(yè)軟件MATLAB相比,Python是一門真正的通用程序設(shè)計(jì)語(yǔ)言,比MATLAB所采用的腳本語(yǔ)言的應(yīng)用范圍更廣泛,有更多程序庫(kù)的支持,適用于Windows和Linux等多種平臺(tái),完全免費(fèi)并且開放源碼。雖然MATLAB中的某些高級(jí)功能目前還無(wú)法替代,但是對(duì)于基礎(chǔ)性、前瞻性的科研工作和應(yīng)用系統(tǒng)的開發(fā),完全可以用Python來(lái)完成。1.6數(shù)據(jù)科學(xué)領(lǐng)域常用的python包⑴Numpy⑵Scipy⑶Pandas⑷Matplotlib⑸Scikit-learn1.6數(shù)據(jù)科學(xué)領(lǐng)域常用的python包還有其它一些庫(kù),如:用于自然語(yǔ)言處理的Nltk,用于網(wǎng)站數(shù)據(jù)抓取的Scrappy,用于網(wǎng)絡(luò)挖掘的Pattern,用于深度學(xué)習(xí)的Theano等。但是,如果你正開始學(xué)習(xí)Python,建議你首先熟悉這五個(gè)庫(kù),這些教程都非常適合初學(xué)者。Python有著像matlab一樣強(qiáng)大數(shù)值計(jì)算工具包NumPy;有著繪圖工具包matplotlib;有著科學(xué)計(jì)算工具包SciPy(基于Numpy和matplotlib的)。這三者為Python提供了像Matlab一樣強(qiáng)大的矩陣控制能力,這是Python完勝Perl和Ruby的地方。對(duì)于數(shù)據(jù)科學(xué)領(lǐng)域而言,Python可能是最重要的語(yǔ)言了,如前文所述,它有著非常豐富的生態(tài)系統(tǒng)。Python直接能夠處理數(shù)據(jù),而Pandas幾乎可以像SQL那樣對(duì)數(shù)據(jù)進(jìn)行控制。Matplotlib能夠讓你對(duì)數(shù)據(jù)和結(jié)果進(jìn)行可視化,以便快速理解你的數(shù)據(jù)。Scikit-learn提供了機(jī)器學(xué)習(xí)算法支持,Theano提供了深度學(xué)習(xí)框架(還可以使用GPU加速)。[1]許嘉,呂品.哈佛大學(xué)數(shù)據(jù)科學(xué)課程教學(xué)初探[J].教育界:高等教育研究(下),2015,第5期:109-110.[2]SwanA,BrownS.Theskills,roleandcareerstructureofdatascientistsandcurators:Anassessmentofcurrentpracticeandfutureneeds[J].LondonJiscRetrievedSeptember,2008.[3]PedregosaF,Varoquaux,Ga&#,GramfortA,etal.Scikit-learn:MachineLearninginPython[J].JournalofMachineLearningResearch,2011,12(10):2825-2830.參考文獻(xiàn)2Python基礎(chǔ)知識(shí)華東師范大學(xué)出版社2.1python基本概念Python是一種腳本語(yǔ)言,編程語(yǔ)言有多種多樣,但是有開源和閉源之分,Python就是一個(gè)開放核心源代碼的編程語(yǔ)言,它開發(fā)代碼的效率非常高,代碼編寫后非常易讀,非常適合多人參與的項(xiàng)目。它支持面向?qū)ο蟮木幊谭绞?,同樣也可以面?duì)過(guò)程,非常靈活,它不但免費(fèi),而且可以任意Copy分發(fā)。Python是開源自由軟件,容易獲得,可以閱讀它的源程序并修改它。同時(shí),python是一種功能強(qiáng)大而完善的通用語(yǔ)言,也是一種直譯式計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言。該語(yǔ)言借鑒了腳本和解釋性語(yǔ)言的易用性,能夠高效地完成各種復(fù)雜的高層次任務(wù)。本章接下來(lái)將簡(jiǎn)單介紹python的基礎(chǔ)知識(shí)和特性。2.1python基本概念

(1)安裝Python在開始學(xué)習(xí)python前,需要安裝一些應(yīng)用軟件。下面簡(jiǎn)要介紹如何下載和安裝Python。如果想直接跳到安裝過(guò)程的介紹而不看詳細(xì)的向?qū)В梢灾苯釉L問(wèn)網(wǎng)址:/download,下載并安裝Python的最新版本。要在Windows系統(tǒng)中安裝Python,請(qǐng)參照下面的步驟進(jìn)行。

2.1python基本概念①打開Web瀏覽器,訪問(wèn);②點(diǎn)擊Download鏈接;③可以在這里看到幾條鏈接,名字類似于Python2.7Windowsinstaller。點(diǎn)擊Windowsinstaller鏈接并且下載安裝文件;④將WindowsInstaller文件放在計(jì)算機(jī)的任何位置均可;⑤在Windows瀏覽器中雙擊運(yùn)行所下載的文件,這樣會(huì)開啟一個(gè)Python的安裝向?qū)АT撓驅(qū)褂闷饋?lái)很簡(jiǎn)單,只需要接受默認(rèn)設(shè)置,等到安裝程序完成,就能使用Python了。

如果安裝一切正常,應(yīng)該能在Windows的開始菜單中找到新的程序。按照開始—>程序—>Python—>IDLE(PythonGUI)的步驟啟動(dòng)Python的開發(fā)環(huán)境,啟動(dòng)好的Python運(yùn)行窗口如圖2-1所示,>>>是pythonIDLE運(yùn)行窗口的提示符,可以在后面輸入Python命令。2.1python基本概念圖2-1啟動(dòng)好的python運(yùn)行窗口2.1python基本概念(2)

Python基礎(chǔ)概念①常量

一個(gè)字面意義上的常量的例子是如鍵入文檔的引述或關(guān)注點(diǎn)的摘要,可將文本框放置在文檔中的任何位置。可使用“文本框工具”選項(xiàng)卡更改重要引述文本框的格式。同15、1.823、10.25E-3這樣的數(shù),或者如同"Howareyou"、"It'sasquare!"這樣的字符串。它們具備字面的意義,按照它們的字面意義使用它們的值。數(shù)2總是代表它自己,而不會(huì)是別的什么東西——它是一個(gè)常量,因?yàn)椴荒芨淖兯闹?。因此,所有這些都被稱為字面意義上的常量。Python中邏輯常量為true(真)和false(假)。2.1python基本概念②編碼所謂文件編碼指的是Python源碼的編碼格式,一般用notepad++能看到源碼文件的編碼。源碼文件的格式會(huì)影響到在源碼中定義的字符串,假設(shè)源碼的編碼格式為utf-8,那么下面定義的字符串的編碼格式就是utf-8。源碼的編碼格式為utf-8,所以s1的編碼格式為utf-8。若要想將格式轉(zhuǎn)換為gb2312,則必須先解碼(decode)成系統(tǒng)缺省編碼,然后再編碼(encode)成gb2312。2.1python基本概念③轉(zhuǎn)義符

如果想要在一個(gè)字符串中包含一個(gè)單引號(hào)('),例如,這個(gè)字符串是What'syourname?。如果用'What'syourname?'來(lái)指示它,Python會(huì)弄不明白這個(gè)字符串從何處開始,何處結(jié)束,因?yàn)檫@里的’都被認(rèn)為是字符串的標(biāo)識(shí)符,但又不成對(duì)。所以,要指明單引號(hào)而不是字符串的標(biāo)識(shí),可以通過(guò)“\”來(lái)完成,如,'What\'syourname?'。第2個(gè)'前有一個(gè)“\”表示它就是單引號(hào),而不是字符串的標(biāo)識(shí)符。這里的“\”就是轉(zhuǎn)義符。

另一個(gè)表示這種字符串的方法是"What'syourname?",即用雙引號(hào)。類似地,要在雙引號(hào)字符串中使用雙引號(hào)本身的時(shí)候,也可以借助于轉(zhuǎn)義符。另外,可以用轉(zhuǎn)義符\\來(lái)指示反斜杠本身。2.1python基本概念轉(zhuǎn)義字符描述\(在行尾時(shí))續(xù)行符\\反斜杠符號(hào)\'單引號(hào)\"雙引號(hào)\a響鈴\b退格(Backspace)\e轉(zhuǎn)義\000空\(chéng)n換行\(zhòng)v縱向制表符\t橫向制表符\r回車\f換頁(yè)\oyyc\xyy十進(jìn)制數(shù)yy代表的字符\other其它的字符以普通格式輸出表2-1轉(zhuǎn)義字符列表2.1python基本概念>>>print'I\'mok.'I'mok.>>>print'I\'mlearning\nPython.'I'mlearningPython.>>>print'\\\n\\'\\轉(zhuǎn)義字符\可以轉(zhuǎn)義很多字符,比如\n表示換行,\t表示制表符,字符\本身也要轉(zhuǎn)義,所以\\表示的字符就是\,可以在Python的交互式命令行用print打印字符串:2.1python基本概念如果字符串里面有很多字符都需要轉(zhuǎn)義,就需要加很多\,為了簡(jiǎn)化,Python還允許用r''表示''內(nèi)部的字符串默認(rèn)不轉(zhuǎn)義:>>>print'\\\t\\'\\>>>printr'\\\t\\'\\\t\\2.1python基本概念④整數(shù)和浮點(diǎn)數(shù)在Python中包含有這兩種類型的數(shù)(number):整數(shù)(int)、浮點(diǎn)數(shù)(float)。A整數(shù)Python可以處理任意大小的整數(shù),當(dāng)然包括負(fù)整數(shù),在程序中的表示方法和數(shù)學(xué)上的寫法一模一樣,例如:1,100,-8080,0,等等。計(jì)算機(jī)由于使用二進(jìn)制,所以,有時(shí)候用十六進(jìn)制表示整數(shù)比較方便,十六進(jìn)制用0x前綴和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。2.1python基本概念B浮點(diǎn)數(shù)

浮點(diǎn)數(shù)也就是小數(shù),之所以稱為浮點(diǎn)數(shù),是因?yàn)榘凑湛茖W(xué)記數(shù)法表示時(shí),一個(gè)浮點(diǎn)數(shù)的小數(shù)點(diǎn)位置是可變的,比如,1.23x109和12.3x108是相等的。浮點(diǎn)數(shù)可以用數(shù)學(xué)寫法,如1.23,3.14,-9.01,等等。但是對(duì)于很大或很小的浮點(diǎn)數(shù),就必須用科學(xué)計(jì)數(shù)法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5,等等。2.1python基本概念⑤字符串字符串是以''或""括起來(lái)的任意文本,比如'abc',"xyz"等等。請(qǐng)注意,''或""本身只是一種表示方式,不是字符串的一部分,因此,字符串'abc'只有a,b,c這3個(gè)字符。如果'本身也是一個(gè)字符,那就可以用""括起來(lái),比如"I'mOK"包含的字符是I,',m,空格,O,K這6個(gè)字符。如果字符串內(nèi)部既包含'又包含",可以用轉(zhuǎn)義字符\來(lái)標(biāo)識(shí),比如:'I\'m\"OK\"!'表示的字符串內(nèi)容是:I'm"OK"!

如果字符串內(nèi)部有很多換行,用\n寫在一行里不好閱讀,為了簡(jiǎn)化,Python允許用'''...'''的格式表示多行內(nèi)容:>>>print'\\\t\\'\\>>>printr'\\\t\\'\\\t\\2.1python基本概念⑥布爾值布爾值和布爾代數(shù)的表示完全一致,一個(gè)布爾值只有True、False兩種值,要么是True,要么是False,在Python中,可以直接用True、False表示布爾值(請(qǐng)注意大小寫),也可以通過(guò)布爾運(yùn)算計(jì)算出來(lái):>>>TrueTrue>>>FalseFalse>>>3>2True>>>3>5False2.1python基本概念

布爾值可以用and、or和not運(yùn)算。and運(yùn)算是與運(yùn)算,只有所有都為True,and運(yùn)算結(jié)果才是True:>>>TrueandTrueTrue>>>TrueandFalseFalse>>>FalseandFalseFalseor運(yùn)算是或運(yùn)算,只要其中有一個(gè)為True,or運(yùn)算結(jié)果就是True:>>>TrueorTrueTrue>>>TrueorFalseTrue>>>FalseorFalseFalse2.1python基本概念not運(yùn)算是非運(yùn)算,它是一個(gè)單目運(yùn)算符,把True變成False,F(xiàn)alse變成True:>>>notTrueFalse>>>notFalseTrue布爾值經(jīng)常用在條件判斷中,比如:ifage>=18:print'adult'else:print'teenager'2.1python基本概念⑦空值

空值是Python里一個(gè)特殊的值,用None表示。None不能理解為0,因?yàn)?是有意義的,而None是一個(gè)特殊的空值。此外,Python還提供了列表、字典等多種數(shù)據(jù)類型,還允許創(chuàng)建自定義數(shù)據(jù)類型,我們后面會(huì)繼續(xù)講到。2.1python基本概念⑧變量及其命名規(guī)范變量在程序中就是用一個(gè)變量名表示了,變量名必須是大小寫英文、數(shù)字和_的組合,且不能用數(shù)字開頭,比如:a=1,變量a是一個(gè)整數(shù)。t_007='T007',變量t_007是一個(gè)字符串。Answer=True,變量Answer是一個(gè)布爾值True。在Python中,等號(hào)=是賦值語(yǔ)句,可以把任意數(shù)據(jù)類型賦值給變量,同一個(gè)變量可以反復(fù)賦值,而且可以是不同類型的變量,例如:a=123#a是整數(shù)printaa='ABC'#a變?yōu)樽址畃rinta2.1python基本概念

變量是標(biāo)識(shí)符的例子。標(biāo)識(shí)符是用來(lái)標(biāo)識(shí)某樣?xùn)|西的名字。變量外,使用標(biāo)識(shí)符的例子還有函數(shù)名、類名等。在命名標(biāo)識(shí)符的時(shí)候,要遵循下列規(guī)則:第一個(gè)字符必須是字母表中的字母(大寫或小寫)或者一個(gè)下劃線(‘_’)。其他部分可以由字母(大寫或小寫)、下劃線(‘_’)或數(shù)字(0-9)組成。python標(biāo)識(shí)符對(duì)大小寫是敏感的。例如,name和Name被認(rèn)為是兩個(gè)標(biāo)識(shí)符。變量名全部小寫,由下劃線連接各個(gè)單詞,如:color=WHITE,this_is_a_variable=1。變量名不應(yīng)帶有類型信息,因?yàn)镻ython是動(dòng)態(tài)類型語(yǔ)言。如iValue、names_list、dict_obj等都是不好的命名。2.1python基本概念⑨縮進(jìn)空白在Python中非常重要。行首的空白稱為縮進(jìn),它決定邏輯行的縮進(jìn)層次,從而用來(lái)決定語(yǔ)句的分組。同一層次的語(yǔ)句必須有相同的縮進(jìn)量(縮進(jìn)幾個(gè)字符)。每一組這樣的語(yǔ)句稱為一個(gè)塊。語(yǔ)句塊是進(jìn)行處理的同一批語(yǔ)句。簡(jiǎn)言之,python是用連續(xù)相同層次縮進(jìn)表示語(yǔ)句塊的。例如for語(yǔ)句后相同縮進(jìn)量相同的連續(xù)語(yǔ)句是其循環(huán)體。注意,不要混合使用制表符和空格來(lái)縮進(jìn),因?yàn)檫@在跨越不同的平臺(tái)的時(shí)候,無(wú)法正常工作。建議在每個(gè)縮進(jìn)層次使用單個(gè)制表符或兩個(gè)或四個(gè)空格。2.1python基本概念⑩注釋在Python中,#號(hào)開始至行末的文字為注釋。沒(méi)有多行注釋。同代碼不一致的注釋比沒(méi)注釋更差。當(dāng)代碼修改時(shí),始終優(yōu)先更新注釋!注釋應(yīng)該是完整的句子,如果注釋是一個(gè)短語(yǔ)或句子,首字母應(yīng)該大寫,除非他是一個(gè)以小寫字母開頭的標(biāo)識(shí)符(永遠(yuǎn)不要修改標(biāo)識(shí)符的大小寫)。如果注釋很短,最好省略末尾的句號(hào)。2.1python基本概念⑶輸入和輸出①輸入

現(xiàn)在已經(jīng)可以用print輸出你想要的結(jié)果了。但是,如果要讓用戶從電腦輸入一些字符怎么辦?Python提供了一個(gè)raw_input,可以讓用戶輸入字符串,并存放到一個(gè)變量里。比如輸入用戶的名字:>>>name=raw_input()Michael2.1python基本概念②輸出用print加上字符串,就可以向屏幕上輸出指定的文字。比如輸出'hello,world',用代碼實(shí)現(xiàn)如下:

print語(yǔ)句也可以跟上多個(gè)字符串,用逗號(hào)“,”隔開,就可以連成一串輸出:>>>print'Thequickbrownfox','jumpsover','thelazydog'Thequickbrownfoxjumpsoverthelazydog>>>print'hello,world‘2.1python基本概念print會(huì)依次打印每個(gè)字符串,遇到逗號(hào)“,”會(huì)輸出一個(gè)空格,因此,輸出的字符串是這樣拼起來(lái)的:2.1python基本概念⑷運(yùn)算符及字符串的運(yùn)算①運(yùn)算符Python中包含數(shù)學(xué)中的多種運(yùn)算法則,詳細(xì)見下表:運(yùn)算符名稱說(shuō)明例子+加兩個(gè)對(duì)象相加3+5得到8。'a'+'b'得到'ab'。-減得到負(fù)數(shù)或是一個(gè)數(shù)減去另一個(gè)數(shù)-5.2得到一個(gè)負(fù)數(shù)。50-24得到26。*乘兩個(gè)數(shù)相乘或是返回一個(gè)被重復(fù)若干次的字符串2*3得到6。'la'*3得到'lalala'。**冪返回x的y次冪3**4得到81(即3*3*3*3)/除x除以y4/3得到1(整數(shù)的除法得到整數(shù)結(jié)果)。4.0/3或4/3.0得到1.3333333333333333//取整除返回商的整數(shù)部分4//3.0得到1.0%取余返回除法的余數(shù)8%3得到2。-25.5%2.25得到1.5<

小于返回x是否小于y。所有比較運(yùn)算符返回1表示真,返回0表示假。這分別與特殊的變量True和False等價(jià)。5<3返回0(即False)而3<5返回1(即True)。比較可以被任意連接:3<5<7返回True。>

大于返回x是否大于y5>3返回True。如果兩個(gè)操作數(shù)都是數(shù)字,它們首先被轉(zhuǎn)換為一個(gè)共同的類型。否則,它總是返回False。<=小于等于返回x是否小于等于yx=3;y=6;x<=y返回True。>=大于等于返回x是否大于等于yx=4;y=3;x>=y返回True。==等于比較對(duì)象是否相等x=2;y=2;x==y返回True!=不等于比較兩個(gè)對(duì)象是否不相等x=2;y=3;x!=y返回True。2.1python基本概念②運(yùn)算符優(yōu)先級(jí)表2-3給出Python的運(yùn)算符優(yōu)先級(jí),從最低的優(yōu)先級(jí)(最松散地結(jié)合)到最高的優(yōu)先級(jí)(最緊密地結(jié)合)。這意味著在一個(gè)表達(dá)式中,如果沒(méi)有括號(hào),Python會(huì)首先計(jì)算表中較下面的運(yùn)算符,然后在再計(jì)算列在表上部的運(yùn)算符。建議使用圓括號(hào)來(lái)對(duì)運(yùn)算符和操作數(shù)進(jìn)行分組,以便能夠明確地指出運(yùn)算的先后順序,使程序盡可能地易讀。運(yùn)算符描述or布爾“或”and布爾“與”notx布爾“非”表2-3運(yùn)算符優(yōu)先級(jí)2.1python基本概念③計(jì)算順序默認(rèn)地,運(yùn)算符優(yōu)先級(jí)表決定了哪個(gè)運(yùn)算符在別的運(yùn)算符之前計(jì)算。具有相同優(yōu)先級(jí)的運(yùn)算符按照從左向右的順序計(jì)算。通常可以使用圓括號(hào)改變計(jì)算次序,例如,在表達(dá)式12+3*4中乘法先進(jìn)行運(yùn)算,而表達(dá)式(12+3)*4中,加先進(jìn)行運(yùn)算。2.1python基本概念④字符串的運(yùn)算字符串是程序中經(jīng)常使用的元素,字符串的運(yùn)算也很多,包括連接兩個(gè)字符串,取一個(gè)字符串中的一部分,稱為取子字符串,大小寫轉(zhuǎn)換,字符串與數(shù)值的轉(zhuǎn)換等。A字符串連接python中可使用+進(jìn)行字符串的連接操作。其實(shí)在實(shí)際應(yīng)用中需要使用字符串連續(xù)相加是很少的,更多的操作是幾個(gè)字符串的連接,當(dāng)有這樣的需求時(shí),使用+操作符其實(shí)是最快的方式。

s0="Python"s1='C++'s2=s0+""+s1則S2的值為:'PythonC++'2.1python基本概念B取部分字符串<字符串名>[<起始位置>:<終止位置>:<步長(zhǎng)>]

得到從<起始位置>開始,間隔<步長(zhǎng)>,到<終止位置>前一個(gè)字符結(jié)束的字符串。<起始位置>可省略,表示從起始位置為0。<終止位置>可省略,表示從終止位置為末尾。<步長(zhǎng)>省略表示步長(zhǎng)為1。例如:f='abcdefghijklmnopqrstuvwxyz'則f[5]的值為'f'f[0:10:2]的值為'acegi'f[0:10:2]的值為'acegi'f[0:10]的值為'abcdefghij'f[:10]的值為'abcdefghij'f[10:]的值為'klmnopqrstuvwxyz'len(f)#字符串的長(zhǎng)度,本例結(jié)果為262.1python基本概念C其他的字符串處理函數(shù)其他的字符串處理函數(shù)還有:ord('a')#返回字符的ASCII的十進(jìn)制值chr(97)#返回整數(shù)對(duì)應(yīng)的字符D庫(kù)中的字符串處理函數(shù)上面的字符串處理函數(shù)可以直接使用,而要使用字符串的大小寫轉(zhuǎn)換、查找等功能,需要引入string庫(kù),方法是在程序開頭寫“importstring”,例如:importstringf='abcdefghijklmnopqrstuvwxyz'#定義一個(gè)字符串f.upper()#轉(zhuǎn)換為大寫,不改變ff.find('f')#返回f的索引值(即在字符串中從0開始的序號(hào))f.replace('b','boy')#返回b被boy替換的字符串,不改變f2.2序列和基本語(yǔ)句⑴列表列表是Python中最基本的數(shù)據(jù)結(jié)構(gòu),列表是最常用的Python數(shù)據(jù)類型,列表的數(shù)據(jù)項(xiàng)不需要具有相同的類型。列表中的每個(gè)元素都分配一個(gè)數(shù)字-它的位置,或索引,第一個(gè)索引是0,第二個(gè)索引是1,依此類推。列表時(shí)對(duì)象的有序集合。列表的內(nèi)容可以修改,列表的長(zhǎng)度可變。列表的定義:<列表名稱>[<列表項(xiàng)>]其中多個(gè)列表項(xiàng)用逗號(hào)隔開,它們的類型可以相同,也可以不同,還可以是其列表。例如:date=[2011,2,9,9,54]day=['sun','mon','tue','wed','thi','fri','sat']today=[2011,2,9,"wed"]data=[date,day]2.2序列和基本語(yǔ)句①創(chuàng)建一個(gè)列表只要把逗號(hào)分隔的不同的數(shù)據(jù)項(xiàng)使用方括號(hào)括起來(lái)即可。如下所示:

list1=['physics','chemistry',1997,2000];list2=[1,2,3,4,5];list3=["a","b","c","d"];與字符串的索引一樣,列表索引從0開始。列表可以進(jìn)行截取、組合等。2.2序列和基本語(yǔ)句②訪問(wèn)列表中的值使用下標(biāo)索引來(lái)訪問(wèn)列表中的值,同樣你也可以使用方括號(hào)的形式截取字符,如下所示:list1=['physics','chemistry',1997,2000];list2=[1,2,3,4,5,6,7];print"list1[0]:",list1[0]print"list2[1:5]:",list2[1:5]以上實(shí)例輸出結(jié)果:list1[0]:physicslist2[1:5]:[2,3,4,5]2.2序列和基本語(yǔ)句③更新列表你可以對(duì)列表的數(shù)據(jù)項(xiàng)進(jìn)行修改或更新,你也可以直接改變列表位置上的值,如下所示:Valueavailableatindex2:1997Newvalueavailableatindex2:2001list=['physics','chemistry',1997,2000];print"Valueavailableatindex2:"printlist[2];list[2]=2001;print"Newvalueavailableatindex2:"printlist[2];2.2序列和基本語(yǔ)句⑤Python列表腳本操作符列表對(duì)+和*的操作符與字符串相似。+號(hào)用于組合列表,*號(hào)用于重復(fù)列表。如下:

表2-4:Python列表腳本操作符Python表達(dá)式結(jié)果描述len([1,2,3])3長(zhǎng)度[1,2,3]+[4,5,6][1,2,3,4,5,6]組合['Hi!']*4['Hi!','Hi!','Hi!','Hi!']重復(fù)3in[1,2,3]True元素是否存在于列表中2.2序列和基本語(yǔ)句⑥Python列表截取Python的列表截取與字符串操作類型,如下所示:列表為:L=['a','b','c'],進(jìn)行截取操作:Python表達(dá)式結(jié)果描述L[2]'c'讀取列表中第三個(gè)元素L[-2]'b'讀取列表中倒數(shù)第二個(gè)元素L[1:]['b','c']從第二個(gè)元素開始截取列表2.2序列和基本語(yǔ)句函數(shù)名描述cmp(list1,list2)比較兩個(gè)列表的元素len(list)列表元素個(gè)數(shù)max(list)返回列表元素最大值min(list)返回列表元素最小值list(seq)將元組轉(zhuǎn)換為列表⑦Python列表操作的函數(shù)和方法列表操作包含以下函數(shù):2.2序列和基本語(yǔ)句列表操作包含以下方法:列表操作方法描述list.append(obj)在列表末尾添加新的對(duì)象list.count(obj)統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù)list.extend(seq)在列表末尾一次性追加另一個(gè)序列中的多個(gè)值(用新列表擴(kuò)展原來(lái)的列表)list.index(obj)從列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置list.insert(index,obj)將對(duì)象插入列表list.pop(obj=list[-1])移除列表中的一個(gè)元素(默認(rèn)最后一個(gè)元素),并且返回該元素的值list.remove(obj)移除列表中某個(gè)值的第一個(gè)匹配項(xiàng)list.reverse()反向列表中元素list.sort([func])對(duì)原列表進(jìn)行排序2.2序列和基本語(yǔ)句#useoftuple#filename:tuple.pygarden=("BirdofParadise","rose","tulip","lotus","olive","Sunflower")print('Numberofflowersinthegardenis',len(garden))i=2;print('flower',i,'is',garden[i-1])new_garden=('Phlox','PeachBlossom',garden)i=1;print('flower',i,'is',garden[i-1])C:\Python2.71>pythontuple.pyNumberofflowersinthegardenis6flower2isroseflower1isBirdofParadise(2)元組元組和列表十分類似,只不過(guò)元組和字符串一樣是不可變的,即不能修改元組。元組通過(guò)圓括號(hào)中用逗號(hào)分割的項(xiàng)目定義。當(dāng)一組數(shù)據(jù),只使用,不修改時(shí)使用元組。元組的使用與列表相同,只是不能修改、刪除、增加其元素。例如:

運(yùn)行結(jié)果如下:2.2序列和基本語(yǔ)句運(yùn)算格式/舉例說(shuō)明/結(jié)果T1()空元組T2=(2011,)有一項(xiàng)的元組T3=(2011,2,9,19,54)5項(xiàng),整數(shù)元組,索引號(hào)0-4T4=('sun',('mon','tue','wed'))嵌套的元組T3[i],T4[i][j]索引,T3[1]的值為2,T4[1][1]的值為'tue'T3[i:j]分片,取i到j(luò)-1的項(xiàng)Len(T3)求元組的長(zhǎng)度T3+T4合并T3*3重復(fù),T3重復(fù)3次forxinT3循環(huán),x取T3中的每個(gè)成員執(zhí)行循環(huán)體19inT319是否是L2的成員元組的運(yùn)算如表2-8所示:元組與列表的最大不同:一是定義時(shí)用一對(duì)圓括號(hào),二是內(nèi)容不能修改。

2.2序列和基本語(yǔ)句⑶字典字典是無(wú)序的對(duì)象的集合,通過(guò)鍵進(jìn)行操作。類似于通訊錄,通過(guò)姓名來(lái)查找電話、地址等信息,則姓名就是鍵。字典要求一定要沒(méi)有同名的人。

字典的定義為:<字典名>={鍵1:值2,鍵2:值2,鍵3:值3,…}其中,鍵1,鍵2,鍵3不相同,值可以是任何類型的數(shù)據(jù),可以是列表或元組。注意,字典定義中使用的是大括號(hào),項(xiàng)通過(guò)逗號(hào)隔開,每個(gè)項(xiàng)有鍵部分和值部分,鍵和值之間用冒號(hào)隔開。只可使用簡(jiǎn)單的對(duì)象作為鍵,而且不能改變,但可以用不可變或可變的對(duì)象作為字典的值。例如:2.2序列和基本語(yǔ)句#useofdictionaries#filename:dict.pyaddress1={'zhang':'larry@',

'wang':'wang@','lily':'lily@',

'sam':'sam@'}print('mailofzhang',address1['zhang'])address2={'zhang':['larry@','shaanxi'],

'wang':['wang@','beijing'],

'lily':['lily@','shanghai'],'sam':['sam@','hubei']}print('mailoflily',address2['lily'][0])print('provinceoflily',address2['lily'][0])運(yùn)行結(jié)果如下:C:\Python2.7>pythondict.pymailofzhanglarry@mailoflilylily@provinceoflilylily@2.2序列和基本語(yǔ)句字典的操作如下:運(yùn)算格式/舉例說(shuō)明/結(jié)果d1={}空字典d2={'class':'jianhuan','year':'2011'}有兩項(xiàng)的字典d3={'xjtu':{'class':'huagong','year':'2011'}}字典的嵌套d2['class'],d3['xjtu']['class']按鍵使用字典d2.keys()獲得鍵的列表d2.values()獲得值的列表len(d2)求字典的長(zhǎng)度d2['year']=2020添加或改變字典的值deld2['year']刪除鍵2.2序列和基本語(yǔ)句①創(chuàng)建字典

Python字典是另一種可變?nèi)萜髂P?,且可存?chǔ)任意類型對(duì)象,如字符串、數(shù)字、元組等其他容器模型。

可以創(chuàng)建詞典:dict1={'abc':456}

dict2={'abc':123,98.6:37}每個(gè)鍵與值用冒號(hào)隔開(:),每對(duì)用逗號(hào),每對(duì)用逗號(hào)分割,整體放在花括號(hào)中({})。

鍵必須獨(dú)一無(wú)二,但值則不必。值可以取任何數(shù)據(jù)類型,但必須是不可變的,如字符串,數(shù)或元組。2.2序列和基本語(yǔ)句②訪問(wèn)字典的值

把相應(yīng)的鍵放入熟悉的方括弧,如下實(shí)例:dict={'Name':'Zara','Age':7,'Class':'First'}

print"dict['Name']:",dict['Name']

print"dict['Age']:",dict['Age']2.2序列和基本語(yǔ)句③修改字典

向字典添加新內(nèi)容的方法是增加新的鍵/值對(duì),修改或刪除已有鍵/值對(duì)如下實(shí)例:

dict={'Name':'Zara','Age':7,'Class':'First'}

dict['Age']=8;#updateexistingentry

dict['School']="DPSSchool";#Addnewentry

print"dict['Age']:",dict['Age']

print"dict['School']:",dict['School']2.2序列和基本語(yǔ)句④刪除字典元素能刪單一的元素也能清空字典,清空只需一項(xiàng)操作。顯示刪除一個(gè)字典用del命令,如下實(shí)例:dict={'Name':'Zara','Age':7,'Class':'First'}

deldict['Name'];#刪除鍵是'Name'的條目

dict.clear()

#清空詞典所有條目

deldict

#刪除詞典

print"dict['Age']:",dict['Age']

print"dict['School']:",dict['School']

2.2序列和基本語(yǔ)句⑤字典鍵的特性

字典值可以沒(méi)有限制地取任何python對(duì)象,既可以是標(biāo)準(zhǔn)的對(duì)象,也可以是用戶定義的,但鍵不行。但是兩個(gè)重要的點(diǎn)需要記?。?/p>

A不允許同一個(gè)鍵出現(xiàn)兩次。創(chuàng)建時(shí)如果同一個(gè)鍵被賦值兩次,后一個(gè)值會(huì)被記住,如下所示:

dict={'Name':'Zara','Age':7,'Name':'Manni'}

print"dict['Name']:",dict['Name']以上實(shí)例輸出結(jié)果:

dict['Name']:

ManniB鍵必須不可變,所以可以用數(shù),字符串或元組充當(dāng),所以用列表就不行,如下實(shí)例:dict={['Name']:'Zara','Age':7}

print"dict['Name']:",dict['Name']以上實(shí)例輸出結(jié)果:Traceback(mostrecentcalllast):

File"test.py",line3,in<module>

dict={['Name']:'Zara','Age':7};

TypeError:listobjectsareunhashable2.2序列和基本語(yǔ)句⑥字典內(nèi)置函數(shù)和方法字典操內(nèi)置函數(shù)描述cmp(dict1,dict2)比較兩個(gè)字典元素len(dict)計(jì)算字典元素個(gè)數(shù),即鍵的總數(shù)str(dict)輸出字典可打印的字符串表示type(variable)返回輸入的變量類型,如果變量是字典就返回字典類型字典內(nèi)置方法描述radiansdict.clear()刪除字典內(nèi)所有元素radiansdict.copy()返回一個(gè)字典的淺復(fù)制radiansdict.fromkeys創(chuàng)建一個(gè)新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對(duì)應(yīng)的初始值radiansdict.get(key,default=None)返回指定鍵的值,若值不在字典返回default值radiansdict.has_key(key)如果鍵在字典dict里返回true,否則返回falseradiansdict.items()以列表返回可遍歷的(鍵,值)元組數(shù)組radiansdict.keys()以列表返回一個(gè)字典所有的鍵radiansdict.setdefault(key,default=None)和get()類似,但如果鍵不已經(jīng)存在于字典中,將會(huì)添加鍵并將值設(shè)為defaultradiansdict.update(dict2)把字典dict2的鍵/值對(duì)更新到dict里radiansdict.values()以列表返回字典中的所有值2.2序列和基本語(yǔ)句字典的操作如下:運(yùn)算格式/舉例說(shuō)明/結(jié)果d1={}空字典d2={'class':'jianhuan','year':'2011'}有兩項(xiàng)的字典d3={'xjtu':{'class':'huagong','year':'2011'}}字典的嵌套d2['class'],d3['xjtu']['class']按鍵使用字典d2.keys()獲得鍵的列表d2.values()獲得值的列表len(d2)求字典的長(zhǎng)度d2['year']=2020添加或改變字典的值deld2['year']刪除鍵2.2序列和基本語(yǔ)句⑷基本語(yǔ)句①條件選擇語(yǔ)句Python的if語(yǔ)句的功能跟其他語(yǔ)言的非常相似,都是用來(lái)判定給出的條件是否滿足,然后根據(jù)判斷的結(jié)果(即真或假)決定是否執(zhí)行給出的操作。If語(yǔ)句是一種單選結(jié)構(gòu),它選擇的是做與不做。它是由三部分組成:關(guān)鍵字if本身、測(cè)試條件真假的表達(dá)式(我們簡(jiǎn)稱為條件表達(dá)式)和表達(dá)式結(jié)果為真(即表達(dá)式的值為非零)時(shí)要執(zhí)行的代碼。If語(yǔ)句的語(yǔ)法形式如下所示:if語(yǔ)句用來(lái)檢驗(yàn)一個(gè)條件,如果<條件>為真,我們運(yùn)行一塊語(yǔ)句(稱為if-塊),否則我們處理另外一塊語(yǔ)句(稱為else-塊)。else從句是可選的。

具體格式如下:if<條件>:<if塊>else:<else塊>2.2序列和基本語(yǔ)句②while循環(huán)語(yǔ)句while語(yǔ)句的功能是,當(dāng)給定的條件表達(dá)式為真時(shí),重復(fù)執(zhí)行循環(huán)體(即內(nèi)嵌的語(yǔ)句),直到條件為假時(shí)才退出循環(huán),并執(zhí)行循環(huán)體后面的語(yǔ)句。while語(yǔ)句的語(yǔ)法形式如下所示:while<條件>:<循環(huán)體>舉例:whilei<10:printii=i+1在循環(huán)中,<條件>后有一個(gè)冒號(hào),<循環(huán)體>要使用縮進(jìn)的格式。While語(yǔ)句的功能是黨<條件>成立(為真)時(shí),執(zhí)行循環(huán)體,然后再次檢驗(yàn)<條件>,如果成立,再次執(zhí)行循環(huán)體,直到<條件>不再成立,然后執(zhí)行后面的程序。2.2序列和基本語(yǔ)句③for循環(huán)for是用來(lái)循環(huán)的,是從某個(gè)對(duì)象那里依次將元素讀取出來(lái)。for<循環(huán)變量>in<序列>:<循環(huán)體>2.2序列和基本語(yǔ)句names=['Michael','Bob','Tracy']scores=[95,75,85]>>>d={'Michael':95,'Bob':75,'Tracy':85}>>>d['Michael']95④使用dict和set首先我們來(lái)看一下dict,Python內(nèi)置了字典:dict的支持,在其他語(yǔ)言中也稱為map,使用鍵-值(key-value)存儲(chǔ),具有極快的查找速度。舉個(gè)例子,假設(shè)要根據(jù)同學(xué)的名字查找對(duì)應(yīng)的成績(jī),如果用list實(shí)現(xiàn),需要兩個(gè)list:給定一個(gè)名字,要查找對(duì)應(yīng)的成績(jī),就先要在names中找到對(duì)應(yīng)的位置,再?gòu)膕cores取出對(duì)應(yīng)的成績(jī),list越長(zhǎng),耗時(shí)越長(zhǎng)。如果用dict實(shí)現(xiàn),只需要一個(gè)“名字”-“成績(jī)”的對(duì)照表,直接根據(jù)名字查找成績(jī),無(wú)論這個(gè)表有多大,查找速度都不會(huì)變慢。用Python寫一個(gè)dict如下:2.2序列和基本語(yǔ)句把數(shù)據(jù)放入dict的方法,除了初始化時(shí)指定外,還可以通過(guò)key放入::>>>d['Adam']=67>>>d['Adam']67由于一個(gè)key只能對(duì)應(yīng)一個(gè)value,所以,多次對(duì)一個(gè)key放入value,后面的值會(huì)把前面的值沖掉:>>>d['Jack']=90>>>d['Jack']90如果key不存在,dict就會(huì)報(bào)錯(cuò):>>>d['Thomas']Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>KeyError:'Thomas'2.2序列和基本語(yǔ)句要避免key不存在的錯(cuò)誤,有兩種辦法:A通過(guò)in判斷key是否存在:>>>'Thomas'indFalseB通過(guò)dict提供的get方法如果key不存在,可以返回None,或者自己指定的value:>>>d.get('Thomas')>>>d.get('Thomas',-1)-12.2序列和基本語(yǔ)句要?jiǎng)h除一個(gè)key,用pop(key)方法,對(duì)應(yīng)的value也會(huì)從dict中刪除:>>>d.pop('Bob')75>>>d{'Michael':95,'Tracy':85}

2.2序列和基本語(yǔ)句dict內(nèi)部存放的順序和key放入的順序是沒(méi)有關(guān)系的,和list比較,dict有以下幾個(gè)特點(diǎn):A查找和插入的速度極快,不會(huì)隨著key的增加而增加;B需要占用大量的內(nèi)存,內(nèi)存浪費(fèi)多。C查找和插入的時(shí)間隨著元素的增加而增加;D占用空間小,浪費(fèi)內(nèi)存很少。2.2序列和基本語(yǔ)句Set和dict類似,也是一組key的集合,但不存儲(chǔ)value。由于key不能重復(fù),所以,在set中,沒(méi)有重復(fù)的key。要?jiǎng)?chuàng)建一個(gè)set,需要提供一個(gè)list作為輸入集合:>>>s=set([1,2,3])>>>sset([1,2,3])重復(fù)元素在set中自動(dòng)被過(guò)濾:>>>s=set([1,1,2,2,3,3])>>>sset([1,2,3])2.2序列和基本語(yǔ)句通過(guò)add(key)方法可以添加元素到set中,可以重復(fù)添加,但不會(huì)有效果>>>s.add(4)>>>sset([1,2,3,4])>>>s.add(4)>>>sset([1,2,3,4])通過(guò)remove(key)方法可以刪除元素:>>>s.remove(4)>>>sset([1,2,3])2.3函數(shù)和模塊很多時(shí)候,Python程序中的語(yǔ)句都會(huì)組織成函數(shù)的形式。函數(shù)就是完成特定功能的一個(gè)語(yǔ)句組,這組語(yǔ)句可以作為一個(gè)單位使用,并且給它取一個(gè)名字,這樣,我們就可以通過(guò)函數(shù)名在程序的不同地方多次執(zhí)行(這通常叫做函數(shù)調(diào)用),卻不需要在所有地方都重復(fù)編寫這些語(yǔ)句。另外,每次使用函數(shù)時(shí)可以提供不同的參數(shù)作為輸入,以便對(duì)不同的數(shù)據(jù)進(jìn)行處理;函數(shù)處理后,還可以將相應(yīng)的結(jié)果反饋給我們。2.3函數(shù)和模塊⑴函數(shù)①定義函數(shù)當(dāng)我們自己定義一個(gè)函數(shù)時(shí),通常使用def語(yǔ)句,其語(yǔ)法形式如下所示:def<函數(shù)名>(<形參表>):<函數(shù)體>其中,函數(shù)名可以是任何有效的Python標(biāo)識(shí)符;參數(shù)列表是調(diào)用該函數(shù)時(shí)傳遞給它的值,可以由多個(gè)、一個(gè)或零個(gè)參數(shù)組成,當(dāng)有多個(gè)參數(shù)時(shí)各個(gè)參數(shù)由逗號(hào)分隔;圓括號(hào)是必不可少的,即使沒(méi)有參數(shù)也不能沒(méi)有它;函數(shù)體是函數(shù)每次被調(diào)用時(shí)執(zhí)行的代碼,可以由一個(gè)語(yǔ)句或多個(gè)語(yǔ)句組成,函數(shù)體一定要注意縮進(jìn)。此外,有時(shí)候會(huì)忘記圓括號(hào)后面的冒號(hào),這會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤。2.3函數(shù)和模塊⑴函數(shù)①定義函數(shù)當(dāng)我們自己定義一個(gè)函數(shù)時(shí),通常使用def語(yǔ)句,其語(yǔ)法形式如下所示:def<函數(shù)名>(<形參表>):<函數(shù)體>其中,函數(shù)名可以是任何有效的Python標(biāo)識(shí)符;參數(shù)列表是調(diào)用該函數(shù)時(shí)傳遞給它的值,可以由多個(gè)、一個(gè)或零個(gè)參數(shù)組成,當(dāng)有多個(gè)參數(shù)時(shí)各個(gè)參數(shù)由逗號(hào)分隔;圓括號(hào)是必不可少的,即使沒(méi)有參數(shù)也不能沒(méi)有它;函數(shù)體是函數(shù)每次被調(diào)用時(shí)執(zhí)行的代碼,可以由一個(gè)語(yǔ)句或多個(gè)語(yǔ)句組成,函數(shù)體一定要注意縮進(jìn)。此外,有時(shí)候會(huì)忘記圓括號(hào)后面的冒號(hào),這會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤。2.3函數(shù)和模塊②調(diào)用函數(shù)Python內(nèi)置了很多有用的函數(shù),我們可以直接調(diào)用。要調(diào)用一個(gè)函數(shù),需要知道函數(shù)的名稱和參數(shù),比如求絕對(duì)值的函數(shù)abs,只有一個(gè)參數(shù)??梢灾苯訌腜ython的官方網(wǎng)站查看文檔,也可以在交互式命令行通過(guò)help(abs)查看abs函數(shù)的幫助信息。調(diào)用abs函數(shù):>>>abs(100)100>>>abs(-20)20>>>abs(12.34)12.342.3函數(shù)和模塊③數(shù)據(jù)類型轉(zhuǎn)換Python內(nèi)置的常用函數(shù)還包括數(shù)據(jù)類型轉(zhuǎn)換函數(shù),比如int()函數(shù)可以把其他數(shù)據(jù)類型轉(zhuǎn)換為整數(shù):>>>int('123')123>>>int(12.34)12>>>float('12.34')12.34>>>str(1.23)'1.23'>>>unicode(100)u'100'>>>bool(1)True>>>bool('')False2.3函數(shù)和模塊④自定義函數(shù)在Python中,定義一個(gè)函數(shù)要使用def語(yǔ)句,依次寫出函數(shù)名、括號(hào)、括號(hào)中的參數(shù)和冒號(hào):,然后,在縮進(jìn)塊中編寫函數(shù)體,函數(shù)的返回值用return語(yǔ)句返回。我們以自定義一個(gè)求絕對(duì)值的my_abs函數(shù)為例:defmy_abs(x):ifx>=0:returnxelse:return-x

2.3函數(shù)和模塊A空函數(shù)如果想定義一個(gè)什么事也不做的空函數(shù),可以用pass語(yǔ)句:defnop():passB參數(shù)檢查調(diào)用函數(shù)時(shí),如果參數(shù)個(gè)數(shù)不對(duì),Python解釋器會(huì)自動(dòng)檢查出來(lái),并拋出TypeError:>>>my_abs(1,2)Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>TypeError:my_abs()takesexactly1argument(2given)2.3函數(shù)和模塊C返回多個(gè)值函數(shù)可以返回多個(gè)值,比如在游戲中經(jīng)常需要從一個(gè)點(diǎn)移動(dòng)到另一個(gè)點(diǎn),給出坐標(biāo)、位移和角度,就可以計(jì)算出新的新的坐標(biāo):importmathdefmove(x,y,step,angle=0):nx=x+step*math.cos(angle)ny=y-step*math.sin(angle)returnnx,ny2.3函數(shù)和模塊⑤函數(shù)的參數(shù)

定義函數(shù)的時(shí)候,我們把參數(shù)的名字和位置確定下來(lái),函數(shù)的接口定義就完成了。對(duì)于函數(shù)的調(diào)用者來(lái)說(shuō),只需要知道如何傳遞正確的參數(shù),以及函數(shù)將返回什么樣的值就夠了,函數(shù)內(nèi)部的復(fù)雜邏輯被封裝起來(lái),調(diào)用者無(wú)需了解。Python的函數(shù)定義非常簡(jiǎn)單,但靈活度卻非常大。除了正常定義的必選參數(shù)外,還可以使用默認(rèn)參數(shù)、可變參數(shù)和關(guān)鍵字參數(shù),使得函數(shù)定義出來(lái)的接口,不但能處理復(fù)雜的參數(shù),還可以簡(jiǎn)化調(diào)用者的代碼。2.3函數(shù)和模塊

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論