人工智能技術(shù)基礎(chǔ) 課件全套 模塊1-8 人工智能概述、python的安裝-文件_第1頁
人工智能技術(shù)基礎(chǔ) 課件全套 模塊1-8 人工智能概述、python的安裝-文件_第2頁
人工智能技術(shù)基礎(chǔ) 課件全套 模塊1-8 人工智能概述、python的安裝-文件_第3頁
人工智能技術(shù)基礎(chǔ) 課件全套 模塊1-8 人工智能概述、python的安裝-文件_第4頁
人工智能技術(shù)基礎(chǔ) 課件全套 模塊1-8 人工智能概述、python的安裝-文件_第5頁
已閱讀5頁,還剩468頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

人工智能概述

隨著計(jì)算機(jī)和互聯(lián)網(wǎng)的飛速發(fā)展,人工智能早已不再是電影中虛構(gòu)的產(chǎn)物,從第一代人工智能發(fā)展至今,它已開始影響和改變著人們的生產(chǎn)和生活方式。前言人工智能概述AlphaGoVS李世石谷歌人工智能程序阿爾法圍棋(AlphaGo)是基于深度學(xué)習(xí)技術(shù)研究開發(fā)的。為了測(cè)試阿爾法圍棋的水平,谷歌于2016年3月份向圍棋世界冠軍、韓國頂尖棋手李世石發(fā)起挑戰(zhàn),李世石接收挑戰(zhàn)。人工智能概述

1950年艾倫.圖靈,提出了著名的圖靈測(cè)試。一、人工智能的起源1、人工智能的由來1951年馬文.閔斯基,建立了世界上第一個(gè)神經(jīng)網(wǎng)絡(luò)機(jī)器。這個(gè)只有40個(gè)神經(jīng)元的小網(wǎng)絡(luò)里,人們第一次模擬了神經(jīng)信號(hào)的傳遞。開創(chuàng)了人工智能的深淵基礎(chǔ)。1955年,艾倫.紐厄爾、赫伯特.西蒙和克里夫.肖建立了一個(gè)名為“邏輯理論家的計(jì)算機(jī)程序來模擬人類解決問題的技能。這個(gè)程序成功證明了一部大學(xué)數(shù)學(xué)教科書里52個(gè)定理中的38個(gè)?!币?、人工智能的起源1、人工智能的由來1956年,閔斯基、約翰.麥卡錫、克勞德.香農(nóng)和納撒尼爾.羅切斯特在美國達(dá)特茅斯學(xué)院組織了一次討論會(huì),這次會(huì)議提出了:學(xué)習(xí)和智能的每一個(gè)方面都能被精確地描述,使得人們可以制作一臺(tái)機(jī)器來模擬它。這次會(huì)議定義了通過機(jī)器模擬人類智能的新領(lǐng)域定義了名字“人工智能”一、人工智能的起源1、人工智能的由來2、人工智能的基本概念人工智能(ArtificialIntelligence),英文縮寫為AI。它是研究、開發(fā)用于模擬、延伸和擴(kuò)展人的智能的理論、方法、技術(shù)及應(yīng)用系統(tǒng)的一門新的技術(shù)科學(xué)。人工智能是計(jì)算機(jī)科學(xué)的一個(gè)分支,它企圖了解智能的實(shí)質(zhì),并生產(chǎn)出一種新的能以人類智能相似的方式做出反應(yīng)的智能機(jī)器,該領(lǐng)域的研究包括機(jī)器人、語言識(shí)別、圖像識(shí)別、自然語言處理和專家系統(tǒng)等。人工智能從誕生以來,理論和技術(shù)日益成熟,應(yīng)用領(lǐng)域也不斷擴(kuò)大,可以設(shè)想,未來人工智能帶來的科技產(chǎn)品,將會(huì)是人類智慧的“容器”。人工智能可以對(duì)人的意識(shí)、思維的信息過程的模擬。人工智能不是人的智能,但能像人那樣思考、也可能超過人的智能。一、人工智能的起源01就是只能解決特定領(lǐng)域問題的人工智能。如Siri等聊天機(jī)器人和AlphaGo等下棋機(jī)器人;弱人工智能02能夠勝任人類所有工作的人工智能,指比人類更聰明的機(jī)器。強(qiáng)人工智能就是能夠執(zhí)行“通用任務(wù)”(GeneralizedMission)的人工智能:它能夠進(jìn)行通常意義上的學(xué)習(xí)、推理、認(rèn)知,解決并非特定領(lǐng)域的問題。強(qiáng)人工智能人工智能有哪些類型?一、人工智能的起源3、人工智能的發(fā)展歷程人工智能的誕生震動(dòng)了世界,人們第一次看到了智慧通過機(jī)器產(chǎn)生的可能。20%20%20%1963年麻省理工開啟了新項(xiàng)目Theprojectonmathematicsandcomputation推動(dòng)了在視覺和語言理解領(lǐng)域的一系列研究,培養(yǎng)了最早的一批計(jì)算機(jī)科學(xué)人才.在巨大的熱情和投資下也產(chǎn)生了一系列的成果。比如世界上第一個(gè)自然語言對(duì)話程序ELIZA;第一臺(tái)人形機(jī)器人。第一次浪潮:1956-1974:偉大的首航一、人工智能的起源3、人工智能的發(fā)展歷程80年代,專家系統(tǒng)和人工神經(jīng)網(wǎng)絡(luò)等技術(shù)新進(jìn)展,人工智能浪潮再次興起。20%20%20%卡耐基梅隆大學(xué)為迪吉多公司開發(fā)了一套名為XCON的專家系統(tǒng),幫助公司根據(jù)客戶需求自動(dòng)選擇計(jì)算機(jī)部件的組合。人工神經(jīng)網(wǎng)絡(luò)取得了重要進(jìn)展1982年大衛(wèi).魯梅爾哈特、杰佛里.辛頓和羅納德.威廉姆斯聯(lián)合發(fā)表了具有里程杯意義的論文“通過誤差反向傳播學(xué)習(xí)表示”。反向傳播算法廣泛應(yīng)用于神經(jīng)網(wǎng)絡(luò)訓(xùn)練。第二次浪潮:1980-1987:專家系統(tǒng)的興衰一、人工智能的起源3、人工智能的發(fā)展歷程在數(shù)學(xué)的驅(qū)動(dòng)下,大批的新算法被發(fā)展起來,比如統(tǒng)計(jì)學(xué)習(xí)理論、支持向量機(jī)、概率圖模型等20%20%20%進(jìn)入21世紀(jì),全球化的加速和互聯(lián)網(wǎng)的蓬勃發(fā)展帶來全球范圍內(nèi)電子數(shù)據(jù)爆炸性增長。于此同時(shí)電腦芯片的計(jì)算能力持續(xù)高速增長,人工智能算法獲得重大突破。人工神經(jīng)網(wǎng)絡(luò)取得了重要進(jìn)展1982年大衛(wèi).魯梅爾哈特、杰佛里.辛頓和羅納德.威廉姆斯聯(lián)合發(fā)表了具有里程杯意義的論文“通過誤差反向傳播學(xué)習(xí)表示”。反向傳播算法廣泛應(yīng)用于神經(jīng)網(wǎng)絡(luò)訓(xùn)練。第三次浪潮:2011-今:厚積薄發(fā),再造輝煌一、人工智能的起源0103040203先進(jìn)的模型強(qiáng)大的計(jì)算能力海量數(shù)據(jù)3、人工智能的發(fā)展歷程一、人工智能的起源人工智能近期進(jìn)展主要集中在專用智能的突破,例如阿爾法狗(AlphaGo)在圍棋比賽中戰(zhàn)勝人類冠軍,AI程序在語音識(shí)別,大規(guī)模圖像識(shí)別和人臉識(shí)別中達(dá)到超越人類的水平。二、人工智能在各行各業(yè)中應(yīng)用現(xiàn)狀

傳媒領(lǐng)域大量存在跨文化、跨語言的交流與互動(dòng),應(yīng)用人工智能語音識(shí)別、合成技術(shù),能夠根據(jù)聲音聲紋特征,將不同的聲音識(shí)別成文字,同時(shí)根據(jù)特定人的特征,將文本轉(zhuǎn)換成特定人的聲音,并能在不同的語言之間進(jìn)行實(shí)時(shí)翻譯,結(jié)合語音合成技術(shù)和視頻技術(shù)相結(jié)合,形成虛擬主播,播報(bào)新聞。1、AI+傳媒二、人工智能在各行各業(yè)中應(yīng)用現(xiàn)狀

二、人工智能在各行各業(yè)中應(yīng)用現(xiàn)狀①語音識(shí)別技術(shù):插安厚琳語音識(shí)別語音識(shí)別通信問題大數(shù)據(jù)編碼、傳輸、解碼數(shù)據(jù)驅(qū)動(dòng)的方法編碼的模型、傳輸?shù)哪P汀⒔獯a的模型二、人工智能在各行各業(yè)中應(yīng)用現(xiàn)狀①語音識(shí)別技術(shù)語音識(shí)別的準(zhǔn)確率:英文單詞識(shí)別數(shù)量:70%90%1002200這是一個(gè)非常大的飛躍①語音識(shí)別技術(shù)②翻譯機(jī)③語音合成應(yīng)用人工智能技術(shù)能夠快速提取安防攝像頭得到的結(jié)構(gòu)化數(shù)據(jù),與數(shù)據(jù)庫進(jìn)行對(duì)比,實(shí)現(xiàn)對(duì)目標(biāo)的性狀、屬性及身份的識(shí)別。對(duì)刑事案件、治安案件、交通違章、城管違章提供可靠的資料。2、AI+安防日本電信巨頭宣布已研發(fā)出一款名為AIGuardman的新型人工智能安全攝像頭,這款攝像頭可以通過對(duì)人類動(dòng)作意圖的理解,在盜竊行為發(fā)生前就能準(zhǔn)確預(yù)測(cè),從而幫助商店識(shí)別偷竊行為,發(fā)現(xiàn)潛在的商店扒手。一旦發(fā)現(xiàn)就會(huì)通過手機(jī)APP來通知店主。據(jù)相關(guān)媒體報(bào)道,這個(gè)攝像頭使得商店減少了約4成的盜竊行為。二、人工智能在各行各業(yè)中應(yīng)用現(xiàn)狀諸多研究機(jī)構(gòu)都投入很大力量開發(fā)醫(yī)學(xué)影像自動(dòng)分析系統(tǒng)為醫(yī)生提供參考信息。3、AI+醫(yī)療利用人工智能來自動(dòng)進(jìn)行機(jī)器閱卷,解決主觀題的公平公正性,能夠自動(dòng)判斷每個(gè)批次的考卷的難易程度。4、AI+教育6、

AI+機(jī)器人二、人工智能在各行各業(yè)中應(yīng)用現(xiàn)狀大家都知道百度在做無人車,無人車的技術(shù)就是一個(gè)非常復(fù)雜的系統(tǒng),它不像語音的技術(shù),它涉及到方方面面,需要在復(fù)雜的環(huán)境下做決策,這是困難的事情,因?yàn)闆]有人去操控,在路線上根據(jù)周圍環(huán)境情況做決策,包括紅綠燈,包括并線,能不能剎車,有很大的技術(shù)挑戰(zhàn),所以從長期看AI這個(gè)技術(shù)很多技術(shù)做整合,形成復(fù)雜的系統(tǒng),這個(gè)復(fù)雜的系統(tǒng)帶來的變化可能是翻天覆地的變化。5、AI+自動(dòng)駕駛二、人工智能在各行各業(yè)中應(yīng)用現(xiàn)狀機(jī)器人分兩類:工業(yè)機(jī)器人和服務(wù)機(jī)器人。6、

AI+機(jī)器人刷臉支付。2017年9月1日,支付寶試點(diǎn)肯德基,實(shí)現(xiàn)了真正的商用!在杭州萬象城肯德基餐廳,在自助點(diǎn)餐機(jī)上選好餐,進(jìn)入支付頁面,選擇“支付寶刷臉支付”,然后進(jìn)行人臉識(shí)別,只需要1-2秒即可識(shí)別成功,然后只需要輸入與賬號(hào)綁定的手機(jī)號(hào),確定之后就完成了支付,整個(gè)過程持續(xù)了不足10秒。7、AI+電子支付二、人工智能在各行各業(yè)中應(yīng)用現(xiàn)狀二、人工智能在各行各業(yè)中應(yīng)用現(xiàn)狀計(jì)算機(jī)還可以寫詩,科學(xué)家把唐詩三百首和古代一些詩詞輸進(jìn)去,通過深度學(xué)習(xí),按照寫詩的規(guī)則,它就可以寫詩了,比如寫一首與海有關(guān)的詩

這三首詩哪一首是計(jì)算機(jī)寫的?有時(shí)候它還是起到了以假亂真的作用,有文學(xué)功底的一下子看出來了,它寫得很順,但是沒有什么特點(diǎn)和詩意。

海三萬里河?xùn)|入海,五千仞岳上摩天。

遺民淚盡胡塵里,南望王師又一年。

海曾經(jīng)滄海變桑田今日書山別樣天莫道人生多坎坷蹉跎歲月幾回圓

海一雨縱橫亙二洲浪淘天地入東流

卻余人物淘難盡又挾風(fēng)雷作遠(yuǎn)游

AI的發(fā)展史,其發(fā)展過程也是潮起潮落。近年,一些技術(shù)重大的進(jìn)展和突破讓AI風(fēng)靡全球,這是否又是一次潮起?潮落是否又將來臨?但是不管未來如何,我們不可否認(rèn),AI對(duì)各行各業(yè)的影響是巨大的。專用人工智能在教育、自駕、電商、安保、金融,醫(yī)療等領(lǐng)域已經(jīng)不斷取得突破,涉及到人類生活的方方面面。

劍橋大學(xué)研究者預(yù)測(cè),未來十年,大概人類50%的工作,都會(huì)被人工智能取代,人工智能讓生活更美好。結(jié)束語安裝Python01安裝Python1.下載python安裝文件2.在Windows平臺(tái)安裝Python目錄1.下載python安裝文件在Python:/downloads/windows/ python-3.7.0-amd64.exe網(wǎng)站獲取對(duì)應(yīng)的python安裝文件。如圖1.1所示。2.在Windows平臺(tái)安裝Python(1)Windows要求選擇Windows7以上64位操作系統(tǒng)版本,在瀏覽器瀏覽Python官網(wǎng)網(wǎng)址,在下載列表中選擇Windows平臺(tái)64位安裝包(Python-XYZ.msi文件,XYZ為版本號(hào))。(2)雙擊下載包(例如Python-3.x.x.exe),進(jìn)入Python安裝向?qū)?,如圖1.2所示。2.在Windows平臺(tái)安裝Python勾選下面2個(gè)選項(xiàng)(其中AddPython3.7toPATH表示把Python安裝目錄加入Windows環(huán)境Path變量路徑中),選擇“InstallNow”,在其下方,系統(tǒng)顯示默認(rèn)的安裝目錄。單擊,系統(tǒng)進(jìn)入Python安裝。2.在Windows平臺(tái)安裝Python安裝成功顯示如圖1.4所示。2.在Windows平臺(tái)安裝Python此時(shí)Windows開始菜單欄就會(huì)包含Python3.7的主菜單。如圖1.5所示。2.在Windows平臺(tái)安裝Python(3)設(shè)置環(huán)境變量如果在安裝Python圖1.2時(shí)沒有勾選將Python安裝目錄加入Windows環(huán)境變量Path中,則需要在下列命令提示框中(運(yùn)行cmd)添加Python目錄到Path環(huán)境變量中:path%path%;<python安裝目錄>或者:我的電腦

屬性

python安裝目錄“高級(jí)”選項(xiàng)卡,選擇“環(huán)境變量”,單擊“path”系統(tǒng)環(huán)境變量,選擇“編輯”。將python安裝目錄加入到path環(huán)境變量中。如圖1.6所示。

02Python集成開發(fā)環(huán)境:IDLE目錄Python集成開發(fā)環(huán)境:IDLE——交互式編程在Windows主菜單下單擊“Pthon3.7(64bit)”或者“IDLE(Pthon3.764bit)”進(jìn)入Pthon3.7(64bit)IDLE環(huán)境窗口。系統(tǒng)提示符為“>>>”。在窗口中可以輸入Python的命令或者語句,如圖1.7所示。其中:print(“easybooks@163.com”)顯示字符串“easybooks@163.com”。x=1983和y=35分別給變量x和y賦值。print(x+y)顯示表達(dá)式x+y的值。順便需要說明的是,Python對(duì)于命令(語句的格式)特別嚴(yán)格,>>>提示后面空格只有一個(gè),多了就會(huì)顯示錯(cuò)誤。Python集成開發(fā)環(huán)境:IDLE——文件式編程(1)IDLE中選擇File->NewFile,輸入代碼如下。保存該文件為helloword.py。(2)在helloword.py中點(diǎn)擊Run->RunModule,運(yùn)行該文件?!狿yCharm開發(fā)環(huán)境安裝和設(shè)置第1章Python,掀起您的蓋頭來01PyCharm的安裝和使用目錄PyCharm的安裝和使用下面是在Windows7下安裝社區(qū)版為例簡單說明安裝過程。(1)在PyCharm:/pycharm/pycharm-community-2018.1.4.exe網(wǎng)站下載PyCharmCommunity社區(qū)版。(2)雙擊“pycharm-community-2018.1.4.exe”運(yùn)行安裝PyCharmCommunityEdition。系統(tǒng)顯示如圖1.8所示。PyCharm是目前比較流行的Python程序開發(fā)環(huán)境。IDLE是Python系統(tǒng)自帶的開發(fā)環(huán)境,一般用于直接執(zhí)行命令,但就程序開發(fā)方便程度而言,大家比較推崇PyCharm。PyCharm的安裝和使用(2)進(jìn)入安裝歡迎界面,單擊“Next”按鈕,系統(tǒng)進(jìn)入如圖1.9所示。PyCharm的安裝和使用(3)選擇“Next>”,進(jìn)入安裝選項(xiàng)界面,如圖1.10所示。PyCharm的安裝和使用(4)安裝菜單文件夾界面,可以輸入新的程序組文件夾名,設(shè)置完成后單擊“Next”按鈕。如圖1.11所示。PyCharm的安裝和使用(5)進(jìn)入安裝進(jìn)程界面,如圖1.12所示。完成后單擊“Next”按鈕。PyCharm的安裝和使用(6)顯示Pycharm安裝完成并可運(yùn)行,如圖1.13所示。單擊“Finish”按鈕則完成安裝過程,如果選中“RunPyCharmCommunityEdition”復(fù)選框,則會(huì)首次運(yùn)行PyC-harm。PyCharm的安裝和使用(7)選擇是否指定位置導(dǎo)入擴(kuò)展庫,如圖1.14所示。PyCharm的安裝和使用選擇“Donotimportsettings”,系統(tǒng)進(jìn)入PyCharm運(yùn)行效果圖,如圖1.15所示。(8)在這里可以進(jìn)行新建Python源程序文件,輸入源程序并調(diào)試運(yùn)行等一系列操作。(9)選擇“SkipRemainingSetDefaults”,進(jìn)入PyCharm程序設(shè)計(jì)環(huán)境。02PyCharm程序設(shè)計(jì)環(huán)境目錄PyCharm程序設(shè)計(jì)環(huán)境(1)選擇工程創(chuàng)建和打開工程PyCharm程序設(shè)計(jì)環(huán)境進(jìn)入如圖1.16所示。PyCharm程序設(shè)計(jì)環(huán)境(2)選擇“CreateNewProject”,系統(tǒng)顯示如圖1.17所示。PyCharm程序設(shè)計(jì)環(huán)境這里指定當(dāng)前創(chuàng)建的工程存放目錄。不同的工程存放不同目錄,用戶根據(jù)自己情況選擇。例如,修改當(dāng)前創(chuàng)建工程的目錄為“C:\Users\Administrator\PycharmProjects\LovePython”,單擊“Create”。如圖進(jìn)入如圖1.18所示。PyCharm程序設(shè)計(jì)環(huán)境(3)系統(tǒng)顯示PyCharm歡迎頁面,選擇“Close”。系統(tǒng)進(jìn)入PyCharm的當(dāng)前創(chuàng)建的工程的開發(fā)環(huán)境。如圖1.19所示。PyCharm程序設(shè)計(jì)環(huán)境該頁面背景顏色太深,可以進(jìn)行調(diào)整。選擇fIle主菜單

Settings菜單項(xiàng)

選Appearance&Behavior項(xiàng)下面Appearance項(xiàng),系統(tǒng)顯示如圖1.20所示。PyCharm程序設(shè)計(jì)環(huán)境修改編碼格式為utf-8:03一個(gè)簡單的程序?qū)嵗夸浺粋€(gè)簡單的程序?qū)嵗齽?chuàng)建Python程序文件:選擇“LovePython”工程名,按右鍵,選擇“New”,在列出的菜單項(xiàng)下單擊“PythonFile”。如圖1.21所示。一個(gè)簡單的程序?qū)嵗到y(tǒng)顯示新建Python文件對(duì)話框,如圖1.22所示。輸入Deme作為Python文件名稱。單擊“OK”,系統(tǒng)顯示Demo程序編輯窗口選項(xiàng)卡,對(duì)應(yīng)的文件為Demo.py。py是pythonde源程序擴(kuò)展名。輸入Python演示程序:print("easybooks@163.com") x=1983 y=35 print(x+y)一個(gè)簡單的程序?qū)嵗@示如圖1.23所示。一個(gè)簡單的程序?qū)嵗\(yùn)行程序:按右鍵

選擇“Run‘Demo”,如圖1.24所示。3Python的對(duì)象模型對(duì)象是python語言中最基本的概念,在python中處理的一切都是對(duì)象。python中有許多內(nèi)置對(duì)象可供編程者使用,內(nèi)置對(duì)象可直接使用,如數(shù)字、字符串、列表、del等;非內(nèi)置對(duì)象需要導(dǎo)入模塊才能使用,如正弦函數(shù)sin(x),隨機(jī)數(shù)產(chǎn)生函數(shù)random()等。3Python的對(duì)象模型對(duì)象類型類型名稱示例簡要說明數(shù)字int,float,complex1234,3.14,1.3e5,3+4j數(shù)字大小沒有限制,內(nèi)置支持復(fù)數(shù)及其運(yùn)算字符串str'swfu',"I'mstudent",'''Python''',r'abc',R'bcd'使用單引號(hào)、雙引號(hào)、三引號(hào)作為定界符,以字母r或R引導(dǎo)的表示原始字符串字節(jié)串bytesb’helloworld’以字母b引導(dǎo),可以使用單引號(hào)、雙引號(hào)、三引號(hào)作為定界符列表list[1,2,3],['a','b',['c',2]]所有元素放在一對(duì)方括號(hào)中,元素之間使用逗號(hào)分隔,其中的元素可以是任意類型字典dict{1:'food',2:'taste',3:'import'}所有元素放在一對(duì)大括號(hào)中,元素之間使用逗號(hào)分隔,元素形式為“鍵:值”元組tuple(2,-5,6),(3,)不可變,所有元素放在一對(duì)圓括號(hào)中,元素之間使用逗號(hào)分隔,如果元組中只有一個(gè)元素的話,后面的逗號(hào)不能省略集合setfrozenset{'a','b','c'}所有元素放在一對(duì)大括號(hào)中,元素之間使用逗號(hào)分隔,元素不允許重復(fù);另外,set是可變的,而frozenset是不可變的常用內(nèi)置對(duì)象對(duì)象類型類型名稱示例簡要說明布爾型boolTrue,False邏輯值,關(guān)系運(yùn)算符、成員測(cè)試運(yùn)算符、同一性測(cè)試運(yùn)算符組成的表達(dá)式的值一般為True或False空類型NoneTypeNone空值異常Exception、ValueError、TypeError

Python內(nèi)置大量異常類,分別對(duì)應(yīng)不同類型的異常文件

f=

open('data.dat','rb')open是Python內(nèi)置函數(shù),使用指定的模式打開文件,返回文件對(duì)象其他可迭代對(duì)象

生成器對(duì)象、range對(duì)象、zip對(duì)象、enumerate對(duì)象、map對(duì)象、filter對(duì)象等等具有惰性求值的特點(diǎn),除range對(duì)象之外,其他對(duì)象中的元素只能看一次編程單元

函數(shù)(使用def定義)類(使用class定義)模塊(類型為module)類和函數(shù)都屬于可調(diào)用對(duì)象,模塊用來集中存放函數(shù)、類、常量或其他對(duì)象續(xù)表3Python的對(duì)象模型3Python代碼規(guī)范(1)縮進(jìn)類定義、函數(shù)定義、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),行尾的冒號(hào)表示縮進(jìn)的開始。

python程序是依靠代碼塊的縮進(jìn)來體現(xiàn)代碼之間的邏輯關(guān)系的,縮進(jìn)結(jié)束就表示一個(gè)代碼塊結(jié)束了。

同一個(gè)級(jí)別的代碼塊的縮進(jìn)量必須相同。一般而言,以4個(gè)空格為基本縮進(jìn)單位。3Python代碼規(guī)范(2)注釋以#開始,表示本行#之后的內(nèi)容為注釋。包含在一對(duì)三引號(hào)'''...'''或"""..."""之間且不屬于任何語句的內(nèi)容將被解釋器認(rèn)為是注釋。3Python代碼規(guī)范(3)每個(gè)import語句只導(dǎo)入一個(gè)模塊(4)如果一行語句太長,可以在行尾加上續(xù)行符\來換行分成多行,但是更建議使用括號(hào)來包含多行內(nèi)容。(5)必要的空格與空行運(yùn)算符兩側(cè)、逗號(hào)后面建議增加一個(gè)空格。不同功能的代碼塊之間、不同的函數(shù)定義之間建議增加一個(gè)空行以增加可讀性。(6)適當(dāng)使用異常處理結(jié)構(gòu)進(jìn)行容錯(cuò),后面將詳細(xì)講解。(7)軟件應(yīng)具有較強(qiáng)的可測(cè)試性,測(cè)試與開發(fā)齊頭并進(jìn)。在Python中,不需要事先聲明變量名及其類型,直接賦值即可創(chuàng)建各種類型的對(duì)象變量。這一點(diǎn)適用于Python任意類型的對(duì)象。例如語句>>>x=3創(chuàng)建了整型變量x,并賦值為3,再例如語句>>>x='Helloworld.'創(chuàng)建了字符串變量x,并賦值為'Helloworld.'。3Python變量憑空出現(xiàn)一個(gè)整型變量x新的字符串變量,再也不是原來的x了3Python變量Python屬于強(qiáng)類型編程語言,Python解釋器會(huì)根據(jù)賦值或運(yùn)算來自動(dòng)推斷變量類型。Python還是一種動(dòng)態(tài)類型語言,變量的類型也是可以隨時(shí)變化的。>>>x=3>>>print(type(x))<class'int'>>>>x='Helloworld.'>>>print(type(x))#查看變量類型<class'str'>>>>x=[1,2,3]>>>print(type(x))<class'list'>>>>isinstance(3,int)#測(cè)試對(duì)象是否是某個(gè)類型的實(shí)例True>>>isinstance('Helloworld',str)True3Python變量如果變量出現(xiàn)在賦值運(yùn)算符或復(fù)合賦值運(yùn)算符(例如+=、*=等等)的左邊則表示創(chuàng)建變量或修改變量的值,否則表示引用該變量的值,這一點(diǎn)同樣適用于使用下標(biāo)來訪問列表、字典等可變序列以及其他自定義對(duì)象中元素的情況。>>>x=3#創(chuàng)建整型變量>>>print(x**2)9>>>x+=6#修改變量值>>>print(x)#讀取變量值并輸出顯示9>>>x=[1,2,3]#創(chuàng)建列表對(duì)象>>>x[1]=5#修改列表元素值>>>print(x)#輸出顯示整個(gè)列表[1,5,3]>>>print(x[2])#輸出顯示列表指定元素33Python變量字符串和元組屬于不可變序列,不能通過下標(biāo)的方式來修改其中的元素值,試圖修改元組中元素的值時(shí)會(huì)拋出異常。>>>x=(1,2,3)>>>print(x)(1,2,3)>>>x[1]=5Traceback(mostrecentcalllast):File"<pyshell#7>",line1,in<module>x[1]=5TypeError:'tuple'objectdoesnotsupportitemassignment3Python變量在Python中,允許多個(gè)變量指向同一個(gè)值,例如:>>>x=3>>>id(x)1786684560>>>y=x>>>id(y)1786684560然而,當(dāng)為其中一個(gè)變量修改值以后,其內(nèi)存地址將會(huì)變化,但這并不影響另一個(gè)變量,例如接著上面的代碼再繼續(xù)執(zhí)行下面的代碼:>>>x+=6>>>id(x)1786684752>>>y3>>>id(yython變量Python采用的是基于值的內(nèi)存管理方式,如果為不同變量賦值為相同值,這個(gè)值在內(nèi)存中只有一份,多個(gè)變量指向同一塊內(nèi)存地址。>>>x=3>>>id(x)10417624>>>y=3>>>id(y)10417624>>>x=[1,1,1,1]>>>id(x[0])==id(x[1])True3Python變量賦值語句的執(zhí)行過程是:首先把等號(hào)右側(cè)表達(dá)式的值計(jì)算出來,然后在內(nèi)存中尋找一個(gè)位置把值存放進(jìn)去,最后創(chuàng)建變量并指向這個(gè)內(nèi)存地址。Python中的變量并不直接存儲(chǔ)值,而是存儲(chǔ)了值的內(nèi)存地址或者引用,這也是變量類型隨時(shí)可以改變的原因。Python具有自動(dòng)內(nèi)存管理功能,對(duì)于沒有任何變量指向的值,Python自動(dòng)將其刪除。Python會(huì)跟蹤所有的值,并自動(dòng)刪除不再有變量指向的值。因此,Python程序員一般情況下不需要太多考慮內(nèi)存管理的問題。盡管如此,顯式使用del命令刪除不需要的值或顯式關(guān)閉不再需要訪問的資源,仍是一個(gè)好的習(xí)慣,同時(shí)也是一個(gè)優(yōu)秀程序員的基本素養(yǎng)之一。3Python變量在定義變量名的時(shí)候,需要注意以下問題:變量名必須以字母或下劃線開頭,但以下劃線開頭的變量在Python中有特殊含義;變量名中不能有空格以及標(biāo)點(diǎn)符號(hào)(括號(hào)、引號(hào)、逗號(hào)、斜線、反斜線、冒號(hào)、句號(hào)、問號(hào)等等);不能使用關(guān)鍵字作變量名,可以導(dǎo)入keyword模塊后使用print(keyword.kwlist)查看所有Python關(guān)鍵字;不建議使用系統(tǒng)內(nèi)置的模塊名、類型名或函數(shù)名以及已導(dǎo)入的模塊名及其成員名作變量名,這將會(huì)改變其類型和含義,可以通過dir(__builtins__)查看所有內(nèi)置模塊、類型和函數(shù);變量名對(duì)英文字母的大小寫敏感,例如student和Student是不同的變量。3數(shù)字?jǐn)?shù)字是不可變對(duì)象,可以表示任意大小的數(shù)字。>>>a=99999999999999999999999999999999>>>a*a9999999999999999999999999999999800000000000000000000000000000001>>>a**3999999999999999999999999999999970000000000000000000000000000000299999999999999999999999999999999Python的IDEL交互界面可以當(dāng)做簡便計(jì)算器來使用。>>>((3**2)+(4**2))**0.55.03數(shù)字Python中的整數(shù)類型可以分為:十進(jìn)制整數(shù)如,0、-1、9、123十六進(jìn)制整數(shù),需要16個(gè)數(shù)字0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f來表示整數(shù),必須以0x開頭,如0x10、0xfa、0xabcdef八進(jìn)制整數(shù),只需要8個(gè)數(shù)字0、1、2、3、4、5、6、7來表示整數(shù),必須以0o開頭,如0o35、0o11二進(jìn)制整數(shù),只需要2個(gè)數(shù)字0、1來表示整數(shù),必須以0b開頭如,0b101、0b1003數(shù)字浮點(diǎn)數(shù)又稱小數(shù)15.0、0.37、-11.2、1.2e2、314.15e-23數(shù)字Python內(nèi)置支持復(fù)數(shù)類型。>>>a=3+4j>>>b=5+6j>>>c=a+b>>>c(8+10j)>>>c.real#查看復(fù)數(shù)實(shí)部8.0>>>c.imag#查看復(fù)數(shù)虛部10.0>>>a.conjugate()#返回共軛復(fù)數(shù)(3-4j)>>>a*b#復(fù)數(shù)乘法(-9+38j)>>>a/b#復(fù)數(shù)除法(0.6393442622950819+0.03278688524590165j)Python3.6.x開始支持在數(shù)字中間位置使用單個(gè)下劃線作為分隔來提高數(shù)字的可讀性,類似于數(shù)學(xué)上使用逗號(hào)作為千位分隔符。>>>1_000_0001000000>>>1_2_3_41234>>>1_2+3_4j(12+34j)>>>1_2.3_4512.3453數(shù)字3運(yùn)算符和表達(dá)式運(yùn)算符功能說明+算術(shù)加法,列表、元組、字符串合并與連接,正號(hào)-算術(shù)減法,集合差集,相反數(shù)*算術(shù)乘法,序列重復(fù)/真除法//求整商,但如果操作數(shù)中有實(shí)數(shù)的話,結(jié)果為實(shí)數(shù)形式的整數(shù)%求余數(shù),字符串格式化**冪運(yùn)算<、<=、>、>=、==、!=(值)大小比較,集合的包含關(guān)系比較or邏輯或and邏輯與not邏輯非in成員測(cè)試is對(duì)象同一性測(cè)試,即測(cè)試是否為同一個(gè)對(duì)象或內(nèi)存地址是否相同|、^、&、<<、>>、~位或、位異或、位與、左移位、右移位、位求反&、|、^集合交集、并集、對(duì)稱差集@矩陣相乘運(yùn)算符Python運(yùn)算符與功能+運(yùn)算符除了用于算術(shù)加法以外,還可以用于列表、元組、字符串的連接,但不支持不同類型的對(duì)象之間相加或連接。>>>[1,2,3]+[4,5,6]#連接兩個(gè)列表[1,2,3,4,5,6]>>>(1,2,3)+(4,)#連接兩個(gè)元組(1,2,3,4)>>>'abcd'+'1234'#連接兩個(gè)字符串'abcd1234'>>>'A'+1#不支持字符與數(shù)字相加,拋出異常TypeError:Can'tconvert'int'objecttostrimplicitly>>>True+3#Python內(nèi)部把True當(dāng)作1處理4>>>False+3#把False當(dāng)作0處理33運(yùn)算符和表達(dá)式3運(yùn)算符和表達(dá)式*運(yùn)算符不僅可以用于數(shù)值乘法,還可以用于列表、字符串、元組等類型,當(dāng)列表、字符串或元組等類型變量與整數(shù)進(jìn)行“*”運(yùn)算時(shí),表示對(duì)內(nèi)容進(jìn)行重復(fù)并返回重復(fù)后的新對(duì)象。>>>2.0*3

#浮點(diǎn)數(shù)與整數(shù)相乘6.0>>>(3+4j)*2

#復(fù)數(shù)與整數(shù)相乘(6+8j)>>>(3+4j)*(3-4j)

#復(fù)數(shù)與復(fù)數(shù)相乘(25+0j)>>>"a"*10

#字符串重復(fù)'aaaaaaaaaa'>>>[1,2,3]*3

#列表重復(fù)[1,2,3,1,2,3,1,2,3]>>>(1,2,3)*3

#元組重復(fù)(1,2,3,1,2,3,1,2,3)3運(yùn)算符和表達(dá)式Python中的除法有兩種,“/”和“//”分別表示除法和整除運(yùn)算。>>>3/50.6>>>3//50>>>3.0/50.6>>>3.0//50.0>>>13//101>>>-13//10-23運(yùn)算符和表達(dá)式%運(yùn)算符除去可以用于字符串格式化之外,還可以對(duì)整數(shù)和浮點(diǎn)數(shù)計(jì)算余數(shù)。但是由于浮點(diǎn)數(shù)的精確度影響,計(jì)算結(jié)果可能略有誤差。>>>3.1%21.1>>>6.3%2.12.0999999999999996>>>6%20>>>6.0%20.0>>>6.0%2.00.0>>>5.7%4.80.9000000000000004關(guān)系運(yùn)算符可以連用,一般用于同類型對(duì)象之間值的大小比較,或者測(cè)試集合之間的包含關(guān)系>>>1<3<5#等價(jià)于1<3and3<5True>>>'Hello'>'world'#比較字符串大小False>>>[1,2,3]<[1,2,4]#比較列表大小True>>>'Hello'>3#字符串和數(shù)字不能比較TypeError:unorderabletypes:str()>int()>>>{1,2,3}<{1,2,3,4}#測(cè)試是否子集True3運(yùn)算符和表達(dá)式成員測(cè)試運(yùn)算符in用于成員測(cè)試,即測(cè)試一個(gè)對(duì)象是否為另一個(gè)對(duì)象的元素。>>>3in[1,2,3]#測(cè)試3是否存在于列表[1,2,3]中True>>>5inrange(1,10,1)#range()是用來生成指定范圍數(shù)字的內(nèi)置函數(shù)True>>>'abc'in'abcdefg'#子字符串測(cè)試True>>>foriin(3,5,7):#循環(huán),成員遍歷print(i,end='\t')3 5 7 3運(yùn)算符和表達(dá)式同一性測(cè)試運(yùn)算符(identitycomparison)is用來測(cè)試兩個(gè)對(duì)象是否是同一個(gè),如果是則返回True,否則返回False。如果兩個(gè)對(duì)象是同一個(gè),二者具有相同的內(nèi)存地址。>>>3is3True>>>x=[300,300,300]>>>x[0]isx[1]#基于值的內(nèi)存管理,同一個(gè)值在內(nèi)存中只有一份True>>>x=[1,2,3]>>>y=[1,2,3]>>>xisy#上面形式創(chuàng)建的x和y不是同一個(gè)列表對(duì)象False3運(yùn)算符和表達(dá)式位運(yùn)算符只能用于整數(shù),其內(nèi)部執(zhí)行過程為:首先將整數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),然后右對(duì)齊,必要的時(shí)候左側(cè)補(bǔ)0,按位進(jìn)行運(yùn)算,最后再把計(jì)算結(jié)果轉(zhuǎn)換為十進(jìn)制數(shù)字返回。>>>3<<2#把3左移2位12>>>3&7#位與運(yùn)算3>>>3|8#位或運(yùn)算11>>>3^5#位異或運(yùn)算63運(yùn)算符和表達(dá)式位運(yùn)算符規(guī)則集合的交集、并集、對(duì)稱差集等運(yùn)算借助于位運(yùn)算符來實(shí)現(xiàn),而差集則使用減號(hào)運(yùn)算符實(shí)現(xiàn)(注意,并集運(yùn)算符不是加號(hào))。3運(yùn)算符和表達(dá)式集合的交集、并集、對(duì)稱差集等運(yùn)算借助于位運(yùn)算符來實(shí)現(xiàn),而差集則使用減號(hào)運(yùn)算符實(shí)現(xiàn)(注意,并集運(yùn)算符不是加號(hào))。>>>{1,2,3}|{3,4,5}#并集,自動(dòng)去除重復(fù)元素{1,2,3,4,5}>>>{1,2,3}&{3,4,5}#交集{3}>>>{1,2,3}^{3,4,5}#對(duì)稱差集{1,2,4,5}>>>{1,2,3}-{3,4,5}#差集{1,2}3運(yùn)算符和表達(dá)式and和or具有惰性求值特點(diǎn),只計(jì)算必須計(jì)算的表達(dá)式。>>>3>5anda>3#注意,此時(shí)并沒有定義變量aFalse>>>3>5ora>3#3>5的值為False,所以需要計(jì)算后面表達(dá)式NameError:name'a'isnotdefined>>>3<5ora>3#3<5的值為True,不需要計(jì)算后面表達(dá)式True>>>3and5#最后一個(gè)計(jì)算的表達(dá)式的值作為整個(gè)表達(dá)式的值5>>>3and5>2True>>>3notin[1,2,3]#邏輯非運(yùn)算notFalse>>>3isnot5#not的計(jì)算結(jié)果只能是True或False之一True3運(yùn)算符和表達(dá)式3運(yùn)算符和表達(dá)式逗號(hào)并不是運(yùn)算符,只是一個(gè)普通分隔符。>>>'a'in'b','a'(False,'a')>>>'a'in('b','a')True>>>x=3,5>>>x(3,5)>>>3==3,5(True,5)>>>x=3+5,7>>>x(8,7)Python不支持++和--運(yùn)算符,雖然在形式上有時(shí)候似乎可以這樣用,但實(shí)際上是另外的含義。>>>i=3>>>++i#正正得正3>>>+(+3)#與++i等價(jià)3>>>i++#Python不支持++運(yùn)算符,語法錯(cuò)誤SyntaxError:invalidsyntax>>>--i#負(fù)負(fù)得正3>>>-(-i)#與--i等價(jià)33運(yùn)算符和表達(dá)式3字符串用單引號(hào)、雙引號(hào)或三引號(hào)界定的符號(hào)系列稱為字符串單引號(hào)、雙引號(hào)、三單引號(hào)、三雙引號(hào)可以互相嵌套,用來表示復(fù)雜字符串'abc'、'123'、'中國'、"Python"、'''Tomsaid,"Let'sgo"'''字符串屬于不可變序列空字符串表示為''或""

三引號(hào)'''或"""表示的字符串可以換行,支持排版較為復(fù)雜的字符串;三引號(hào)還可以在程序中表示較長的注釋。3字符串字符串合并>>>a='abc'+'123'#生成新字符串>>>x='1234''abcd'>>>x'1234abcd'>>>x=x+',.;'>>>x'1234abcd,.;'>>>x=x'efg'#不允許這樣連接字符串SyntaxError:invalidsyntax字符串格式化>>>a=3.6674>>>'%7.3f'%a'3.667'>>>"%d:%c"%(65,65)'65:A'>>>"""Mynameis%s,andmyageis%d"""%('DongFuguo',39)'MynameisDongFuguo,andmyageis39'3字符串3字符串常用轉(zhuǎn)義字符轉(zhuǎn)義字符含義轉(zhuǎn)義字符含義\b退格,把光標(biāo)移動(dòng)到前一列位置\\一個(gè)斜線\\f換頁符\’單引號(hào)’\n換行符\”雙引號(hào)”\r回車\ooo3位八進(jìn)制數(shù)對(duì)應(yīng)的字符\t水平制表符\xhh2位十六進(jìn)制數(shù)對(duì)應(yīng)的字符\v垂直制表符\uhhhh4位十六進(jìn)制數(shù)表示的Unicode字符轉(zhuǎn)義字符用法>>>print('Hello\nWorld')#包含轉(zhuǎn)義字符的字符串HelloWorld>>>print('\101')#三位八進(jìn)制數(shù)對(duì)應(yīng)的字符A>>>print('\x41')#兩位十六進(jìn)制數(shù)對(duì)應(yīng)的字符A>>>print('我是\u8463\u4ed8\u56fd')#四位十六進(jìn)制數(shù)表示Unicode字符我是董付國3字符串3字符串字符串界定符前面加字母r或R表示原始字符串,其中的特殊字符不進(jìn)行轉(zhuǎn)義,但字符串的最后一個(gè)字符不能是\。原始字符串主要用于正則表達(dá)式、文件路徑或者URL的場(chǎng)合。>>>path='C:\Windows\notepad.exe'>>>print(path)#字符\n被轉(zhuǎn)義為換行符C:\Windowsotepad.exe>>>path=r'C:\Windows\notepad.exe'#原始字符串,任何字符都不轉(zhuǎn)義>>>print(path)C:\Windows\notepad.exe3常用內(nèi)置函數(shù)內(nèi)置函數(shù)不需要導(dǎo)入任何模塊即可使用執(zhí)行下面的命令可以列出所有內(nèi)置函數(shù)>>>dir(__builtins__)函數(shù)功能簡要說明abs(x)返回?cái)?shù)字x的絕對(duì)值或復(fù)數(shù)x的模all(iterable)如果對(duì)于可迭代對(duì)象中所有元素x都等價(jià)于True,也就是對(duì)于所有元素x都有bool(x)等于True,則返回True。對(duì)于空的可迭代對(duì)象也返回Trueany(iterable)只要可迭代對(duì)象iterable中存在元素x使得bool(x)為True,則返回True。對(duì)于空的可迭代對(duì)象,返回Falseascii(obj)把對(duì)象轉(zhuǎn)換為ASCII碼表示形式,必要的時(shí)候使用轉(zhuǎn)義字符來表示特定的字符bin(x)把整數(shù)x轉(zhuǎn)換為二進(jìn)制串表示形式bool(x)返回與x等價(jià)的布爾值True或Falsebytes(x)生成字節(jié)串,或把指定對(duì)象x轉(zhuǎn)換為字節(jié)串表示形式callable(obj)測(cè)試對(duì)象obj是否可調(diào)用。類和函數(shù)是可調(diào)用的,包含__call__()方法的類的對(duì)象也是可調(diào)用的compile()用于把Python代碼編譯成可被exec()或eval()函數(shù)執(zhí)行的代碼對(duì)象complex(real,[imag])返回復(fù)數(shù)chr(x)返回Unicode編碼為x的字符3常用內(nèi)置函數(shù)函數(shù)功能簡要說明delattr(obj,name)刪除屬性,等價(jià)于deldir(obj)返回指定對(duì)象或模塊obj的成員列表,如果不帶參數(shù)則返回當(dāng)前作用域內(nèi)所有標(biāo)識(shí)符divmod(x,y)返回包含整商和余數(shù)的元組((x-x%y)/y,x%y)enumerate(iterable[,start])返回包含元素形式為(0,iterable[0]),(1,iterable[1]),(2,iterable[2]),...的迭代器對(duì)象eval(s[,globals[,locals]])計(jì)算并返回字符串s中表達(dá)式的值exec(x)執(zhí)行代碼或代碼對(duì)象xexit()退出當(dāng)前解釋器環(huán)境filter(func,seq)返回filter對(duì)象,其中包含序列seq中使得單參數(shù)函數(shù)func返回值為True的那些元素,如果函數(shù)func為None則返回包含seq中等價(jià)于True的元素的filter對(duì)象float(x)把整數(shù)或字符串x轉(zhuǎn)換為浮點(diǎn)數(shù)并返回frozenset([x]))創(chuàng)建不可變的集合對(duì)象getattr(obj,name[,default])獲取對(duì)象中指定屬性的值,等價(jià)于,如果不存在指定屬性則返回default的值,如果要訪問的屬性不存在并且沒有指定default則拋出異常續(xù)表13常用內(nèi)置函數(shù)函數(shù)功能簡要說明globals()返回包含當(dāng)前作用域內(nèi)全局變量及其值的字典hasattr(obj,name)測(cè)試對(duì)象obj是否具有名為name的成員hash(x)返回對(duì)象x的哈希值,如果x不可哈希則拋出異常help(obj)返回對(duì)象obj的幫助信息hex(x)把整數(shù)x轉(zhuǎn)換為十六進(jìn)制串id(obj)返回對(duì)象obj的標(biāo)識(shí)(內(nèi)存地址)input([提示])顯示提示,接收鍵盤輸入的內(nèi)容,返回字符串int(x[,d])返回實(shí)數(shù)(float)、分?jǐn)?shù)(Fraction)或高精度實(shí)數(shù)(Decimal)x的整數(shù)部分,或把d進(jìn)制的字符串x轉(zhuǎn)換為十進(jìn)制并返回,d默認(rèn)為十進(jìn)制isinstance(obj,class-or-type-or-tuple)測(cè)試對(duì)象obj是否屬于指定類型(如果有多個(gè)類型的話需要放到元組中)的實(shí)例iter(...)返回指定對(duì)象的可迭代對(duì)象len(obj)返回對(duì)象obj包含的元素個(gè)數(shù),適用于列表、元組、集合、字典、字符串以及range對(duì)象和其他可迭代對(duì)象續(xù)表23常用內(nèi)置函數(shù)函數(shù)功能簡要說明list([x])、set([x])、tuple([x])、dict([x])把對(duì)象x轉(zhuǎn)換為列表、集合、元組或字典并返回,或生成空列表、空集合、空元組、空字典locals()返回包含當(dāng)前作用域內(nèi)局部變量及其值的字典map(func,*iterables)返回包含若干函數(shù)值的map對(duì)象,函數(shù)func的參數(shù)分別來自于iterables指定的每個(gè)迭代對(duì)象,max(x)、min(x)返回可迭代對(duì)象x中的最大值、最小值,要求x中的所有元素之間可比較大小,允許指定排序規(guī)則和x為空時(shí)返回的默認(rèn)值next(iterator[,default])返回可迭代對(duì)象x中的下一個(gè)元素,允許指定迭代結(jié)束之后繼續(xù)迭代時(shí)返回的默認(rèn)值oct(x)把整數(shù)x轉(zhuǎn)換為八進(jìn)制串open(name[,mode])以指定模式mode打開文件name并返回文件對(duì)象ord(x)返回1個(gè)字符x的Unicode編碼pow(x,y,z=None)返回x的y次方,等價(jià)于x**y或(x**y)%z續(xù)表33常用內(nèi)置函數(shù)函數(shù)功能簡要說明print(value,...,sep='',end='\n',file=sys.stdout,flush=False)基本輸出函數(shù)quit()退出當(dāng)前解釋器環(huán)境range([start,]end[,step])返回range對(duì)象,其中包含左閉右開區(qū)間[start,end)內(nèi)以step為步長的整數(shù)reduce(func,sequence[,initial])將雙參數(shù)的函數(shù)func以迭代的方式從左到右依次應(yīng)用至序列seq中每個(gè)元素,最終返回單個(gè)值作為結(jié)果。在Python2.x中該函數(shù)為內(nèi)置函數(shù),在Python3.x中需要從functools中導(dǎo)入reduce函數(shù)再使用repr(obj)返回對(duì)象obj的規(guī)范化字符串表示形式,對(duì)于大多數(shù)對(duì)象有eval(repr(obj))==objreversed(seq)返回seq(可以是列表、元組、字符串、range以及其他可迭代對(duì)象)中所有元素逆序后的迭代器對(duì)象續(xù)表43常用內(nèi)置函數(shù)函數(shù)功能簡要說明round(x[,小數(shù)位數(shù)])對(duì)x進(jìn)行四舍五入,若不指定小數(shù)位數(shù),則返回整數(shù)sorted(iterable,key=None,reverse=False)返回排序后的列表,其中iterable表示要排序的序列或迭代對(duì)象,key用來指定排序規(guī)則或依據(jù),reverse用來指定升序或降序。該函數(shù)不改變iterable內(nèi)任何元素的順序str(obj)把對(duì)象obj直接轉(zhuǎn)換為字符串sum(x,start=0)返回序列x中所有元素之和,返回start+sum(x)type(obj)返回對(duì)象obj的類型zip(seq1[,seq2[...]])返回zip對(duì)象,其中元素為(seq1[i],seq2[i],...)形式的元組,最終結(jié)果中包含的元素個(gè)數(shù)取決于所有參數(shù)序列或可迭代對(duì)象中最短的那個(gè)續(xù)表53常用內(nèi)置函數(shù)3常用內(nèi)置函數(shù)dir()函數(shù)可以查看指定模塊中包含的所有成員或者指定對(duì)象類型所支持的操作。help()函數(shù)則返回指定模塊或函數(shù)的說明文檔。內(nèi)置函數(shù)bin()、oct()、hex()用來將整數(shù)轉(zhuǎn)換為二進(jìn)制、八進(jìn)制和十六進(jìn)制形式,這三個(gè)函數(shù)都要求參數(shù)必須為整數(shù)。>>>bin(555)#把數(shù)字轉(zhuǎn)換為二進(jìn)制串'0b1000101011'>>>oct(555)#轉(zhuǎn)換為八進(jìn)制串'0o1053'>>>hex(555)#轉(zhuǎn)換為十六進(jìn)制串'0x22b'3常用內(nèi)置函數(shù)3常用內(nèi)置函數(shù)ord()和chr()是一對(duì)功能相反的函數(shù),ord()用來返回單個(gè)字符的序數(shù)或Unicode碼,而chr()則用來返回某序數(shù)對(duì)應(yīng)的字符,str()則直接將其任意類型參數(shù)轉(zhuǎn)換為字符串。>>>ord('a')>>>chr(65)97

'A'>>>chr(ord('A')+1)>>>str(1)'B'

'1'>>>str(1234)>>>str([1,2,3])'1234'

'[1,2,3]'>>>str((1,2,3))>>>str({1,2,3})'(1,2,3)'

'{1,2,3}'3常用內(nèi)置函數(shù)max()、min()、sum()這三個(gè)內(nèi)置函數(shù)分別用于計(jì)算列表、元組或其他可迭代對(duì)象中所有元素最大值、最小值以及所有元素之和,sum()要求元素支持加法運(yùn)算,max()和min()則要求序列或可迭代對(duì)象中的元素之間可比較大小。>>>importrandom>>>a=[random.randint(1,100)foriinrange(10)]#列表推導(dǎo)式>>>a[72,26,80,65,34,86,19,74,52,40]>>>print(max(a),min(a),sum(a))8619548如果需要計(jì)算該列表中的所有元素的平均值,可以直接這樣用:>>>sum(a)/len(a)54.83常用內(nèi)置函數(shù)內(nèi)置函數(shù)max()和min()的key參數(shù)可以用來指定比較規(guī)則。>>>x=['21','1234','9']>>>max(x)'9'>>>max(x,key=len)'1234'>>>max(x,key=int)'1234'3常用內(nèi)置函數(shù)>>>fromrandomimportrandrange>>>x=[[randrange(1,100)foriinrange(10)]forjinrange(5)]>>>foriteminx: print(item)

[15,50,38,53,58,13,22,54,7,45][45,63,58,89,85,91,77,45,53,50][80,10,46,16,71,73,13,68,94,50][66,4,49,67,26,58,52,46,69,99][35,57,63,35,71,18,86,2,16,87]>>>max(x,key=sum)#求所有元素之和最大的子列表[45,63,58,89,85,91,77,45,53,50]這里要打兩個(gè)回車才會(huì)執(zhí)行代碼內(nèi)置函數(shù)sum()的start參數(shù)可以實(shí)現(xiàn)非數(shù)值型列表元素的求和。>>>sum([1,2,3,4])10>>>sum([[1],[2],[3],[4]],[])[1,2,3,4]3常用內(nèi)置函數(shù)內(nèi)置函數(shù)type()和isinstance()可以判斷數(shù)據(jù)類型。>>>type([3])#查看[3]的類型<class'list'>>>>type({3})in(list,tuple,dict)#判斷{3}是否為list,tuple#或dict類型的實(shí)例False>>>isinstance(3,int)#判斷3是否為int類型的實(shí)例True>>>isinstance(3j,(int,float,complex))#判斷3j是否為int,float#或complex類型True3常用內(nèi)置函數(shù)sorted()對(duì)列表、元組、字典、集合或其他可迭代對(duì)象進(jìn)行排序并返回新列表。>>>x=['aaaa','bc','d','b','ba']>>>sorted(x,key=lambdaitem:(len(item),item))#先按長度排序,長度一樣的正常排序['b','d','ba','bc','aaaa']3常用內(nèi)置函數(shù)reversed()對(duì)可迭代對(duì)象(生成器對(duì)象和具有惰性求值特性的zip、map、filter、enumerate等類似對(duì)象除外)進(jìn)行翻轉(zhuǎn)(首尾交換)并返回可迭代的reversed對(duì)象。>>>x=['aaaa','bc','d','b','ba']>>>reversed(x)#逆序,返回reversed對(duì)象<list_reverseiteratorobjectat0x0000000002E6C3C8>>>>list(reversed(x))#reversed對(duì)象是可迭代的['ba','b','d','bc','aaaa']3常用內(nèi)置函數(shù)range()語法格式為range([start,]end[,step]),返回具有惰性求值特點(diǎn)的range對(duì)象,其中包含左閉右開區(qū)間[start,end)內(nèi)以step為步長的整數(shù)。參數(shù)start默認(rèn)為0,step默認(rèn)為1。>>>range(5)#start默認(rèn)為0,step默認(rèn)為1range(0,5)>>>list(_)[0,1,2,3,4]>>>list(range(1,10,2))#指定起始值和步長[1,3,5,7,9]>>>list(range(9,0,-2))#步長為負(fù)數(shù)時(shí),start應(yīng)比end大[9,7,5,3,1]3常用內(nèi)置函數(shù)enumerate()函數(shù)用來枚舉可迭代對(duì)象中的元素,返回可迭代的enumerate對(duì)象,其中每個(gè)元素都是包含索引和值的元組。>>>list(enumerate('abcd'))#枚舉字符串中的元素[(0,'a'),(1,'b'),(2,'c'),(3,'d')]>>>list(enumerate(['Python','Greate']))#枚舉列表中的元素[(0,'Python'),(1,'Greate')]>>>list(enumerate({'a':97,'b':98,'c':99}.items()))#枚舉字典中的元素[(0,('a',97)),(1,('b',98)),(2,('c',99))]>>>forindex,valueinenumerate(range(10,15)):#枚舉range對(duì)象中的元素 print((index,value),end='')(0,10)(1,11)(2,12)(3,13)(4,14)3常用內(nèi)置函數(shù)內(nèi)置函數(shù)map()把一個(gè)函數(shù)func依次映射到序列或迭代器對(duì)象的每個(gè)元素上,并返回一個(gè)可迭代的map對(duì)象作為結(jié)果,map對(duì)象中每個(gè)元素是原序列中元素經(jīng)過函數(shù)func處理后的結(jié)果。>>>list(map(str,range(5)))#把列表中元素轉(zhuǎn)換為字符串['0','1','2','3','4']>>>defadd5(v):#單參數(shù)函數(shù) returnv+5>>>list(map(add5,range(10)))#把單參數(shù)函數(shù)映射到一個(gè)序列的所有元素[5,6,7,8,9,10,11,12,13,14]>>>defadd(x,y):#可以接收2個(gè)參數(shù)的函數(shù) returnx+y>>>list(map(add,range(5),range(5,10)))#把雙參數(shù)函數(shù)映射到兩個(gè)序列上[5,7,9,11,13]3常用內(nèi)置函數(shù)3常用內(nèi)置函數(shù)>>>defmyMap(iterable,op,value):#自定義函數(shù)ifopnotin'+-*/':#實(shí)現(xiàn)序列與數(shù)字的四則運(yùn)算return'Erroroperator'func=lambdai:eval(repr(i)+op+repr(value))returnmap(func,iterable)>>>list(myMap(range(5),'+',5))[5,6,7,8,9]>>>list(myMap(range(5),'-',5))[-5,-4,-3,-2,-1]>>>list(myMap(range(5),'*',5))[0,5,10,15,20]>>>list(myMap(range(5),'/',5))[0.0,0.2,0.4,0.6,0.8]3常用內(nèi)置函數(shù)>>>importrandom>>>x=random.randint(1,1e30)#生成指定范圍內(nèi)的隨機(jī)整數(shù)>>>x839746558215897242220046223150>>>list(map(int,str(x)))#提取大整數(shù)每位上的數(shù)字[8,3,9,7,4,6,5,5,8,2,1,5,8,9,7,2,4,2,2,2,0,0,4,6,2,2,3,1,5,0]3常用內(nèi)置函數(shù)標(biāo)準(zhǔn)庫functools中的函數(shù)reduce()可以將一個(gè)接收2個(gè)參數(shù)的函數(shù)以迭代累積的方式從左到右依次作用到一個(gè)序列或迭代器對(duì)象的所有元素上,并且允許指定一個(gè)初始值。>>>fromfunctoolsimportreduce>>>seq=list(range(1,10))>>>reduce(lambdax,y:x+y,seq)453常用內(nèi)置函數(shù)>>>importoperator#標(biāo)準(zhǔn)庫operator提供了大量運(yùn)算>>>operator.add(3,5)#可以像普通函數(shù)一樣直接調(diào)用8>>>reduce(operator.add,seq)#使用add運(yùn)算45>>>reduce(operator.mul,seq)#乘法運(yùn)算362880>>>reduce(operator.mul,range(1,6))#5的階乘120>>>reduce(operator.add,map(str,seq))#轉(zhuǎn)換成字符串再累加'123456789'>>>reduce(operator.add,[[1,2],[3]],[])#這個(gè)操作占用空間較大,慎用[1,2,3]3常用內(nèi)置函數(shù)內(nèi)置函數(shù)filter()將一個(gè)單參數(shù)函數(shù)作用到一個(gè)序列上,返回該序列中使得該函數(shù)返回值為True的那些元素組成的filter對(duì)象,如果指定函數(shù)為None,則返回序列中等價(jià)于True的元素。>>>seq=['foo','x41','?!','***']>>>deffunc(x): returnx.isalnum()#測(cè)試是否為字母或數(shù)字>>>filter(func,seq)#返回filter對(duì)象<filterobjectat0x000000000305D898>>>>list(filter(func,seq))#把filter對(duì)象轉(zhuǎn)換為列表['foo','x41']3常用內(nèi)置函數(shù)zip()函數(shù)用來把多個(gè)可迭代對(duì)象中的元素壓縮到一起,返回一個(gè)可迭代的zip對(duì)象,其中每個(gè)元素都是包含原來的多個(gè)可迭代對(duì)象對(duì)應(yīng)位置上元素的元組,如同拉拉鏈一樣。>>>list(zip('abcd',[1,2,3]))#壓縮字符串和列表[('a',1),('b',2),('c',3)]>>>list(zip('123','abc',',.!'))#壓縮3個(gè)序列[('1','a',','),('2','b','.'),('3','c','!')]>>>x=zip('abcd','1234')>>>list(x)[('a','1'),('b','2'),('c','3'),('d','4')]3常用內(nèi)置函數(shù)map、filter、enumerate、zip等對(duì)象不僅具有惰性求值的特點(diǎn),還有另外一個(gè)特點(diǎn):訪問過的元素不可再次訪問。>>>x=map(str,range(10))>>>list(x)['0','1','2','3','4','5','6','7','8','9']>>>list(x)[]>>>x=map(str

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(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)論