python程序設(shè)計(jì) 課件 第1章 初識(shí)python_第1頁(yè)
python程序設(shè)計(jì) 課件 第1章 初識(shí)python_第2頁(yè)
python程序設(shè)計(jì) 課件 第1章 初識(shí)python_第3頁(yè)
python程序設(shè)計(jì) 課件 第1章 初識(shí)python_第4頁(yè)
python程序設(shè)計(jì) 課件 第1章 初識(shí)python_第5頁(yè)
已閱讀5頁(yè),還剩67頁(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)介

第1章初識(shí)PythonPython程序設(shè)計(jì)·第1章初識(shí)Python本章首先介紹計(jì)算機(jī)與程序語(yǔ)言之間的關(guān)系,然后初步探索Python語(yǔ)言,簡(jiǎn)述其歷史、版本、支持平臺(tái)與各種實(shí)施。在本章的編程訓(xùn)練中,我們將下載Python,建立起可以正常運(yùn)行的Python程序設(shè)計(jì)環(huán)境,我們可以在互動(dòng)模式下一行一行地輸入程序代碼并執(zhí)行,或是將Python程序?qū)懺谠创a文件里,整個(gè)交給Python解釋器執(zhí)行。計(jì)算機(jī)簡(jiǎn)史1Python集成開發(fā)環(huán)境4計(jì)算機(jī)軟件與程序設(shè)計(jì)語(yǔ)言2Python語(yǔ)言簡(jiǎn)介3Python下載與安裝5目錄1.1計(jì)算機(jī)簡(jiǎn)史現(xiàn)代計(jì)算機(jī)計(jì)算機(jī)科學(xué)計(jì)算機(jī)組成1.1

現(xiàn)代計(jì)算機(jī)我們先來(lái)了解計(jì)算機(jī)、計(jì)算機(jī)科學(xué)和計(jì)算機(jī)硬件系統(tǒng)的相關(guān)知識(shí)。艾倫·麥席森·圖靈(1912年6月23日-1954年6月7日),出生于英國(guó)倫敦帕丁頓,畢業(yè)于美國(guó)普林斯頓大學(xué),是英國(guó)數(shù)學(xué)家、邏輯學(xué)家,被譽(yù)為“計(jì)算機(jī)科學(xué)之父”,“人工智能之父”,他是計(jì)算機(jī)邏輯的奠基者,他提出了“圖靈機(jī)”和“圖靈測(cè)試”等重要概念,為現(xiàn)代計(jì)算機(jī)的邏輯工作方式奠定了基礎(chǔ)。為了紀(jì)念圖靈對(duì)計(jì)算機(jī)科學(xué)的巨大貢獻(xiàn),1966年,由美國(guó)計(jì)算機(jī)協(xié)會(huì)(ACM)設(shè)立一年一度的“圖靈獎(jiǎng)”,以表彰在計(jì)算機(jī)科學(xué)中做出突出貢獻(xiàn)的人。圖靈獎(jiǎng)被喻為“計(jì)算機(jī)界的諾貝爾獎(jiǎng)”。

圖靈1.1

現(xiàn)代計(jì)算機(jī)約翰·馮·諾依曼(1903年12月28日-1957年2月8日),出生于匈牙利,畢業(yè)于瑞士蘇黎世聯(lián)邦理工學(xué)院,數(shù)學(xué)家,現(xiàn)代計(jì)算機(jī)、博弈論、核武器和生化武器等領(lǐng)域內(nèi)的科學(xué)全才,被后人稱為“現(xiàn)代計(jì)算機(jī)之父”和“博弈論之父”,他在泛函分析、遍歷理論、幾何學(xué)、拓?fù)鋵W(xué)和數(shù)值分析等眾多數(shù)學(xué)領(lǐng)域及計(jì)算機(jī)學(xué)、量子力學(xué)和經(jīng)濟(jì)學(xué)中都有重大成就,也為人類第一顆原子彈和第一臺(tái)電子計(jì)算機(jī)的研制做出了巨大貢獻(xiàn)。馮·諾依曼1.1

現(xiàn)代計(jì)算機(jī)電子計(jì)算機(jī)通稱電腦,簡(jiǎn)稱計(jì)算機(jī),是一種通用的信息處理機(jī)器,它能執(zhí)行可以充分詳細(xì)描述的任何過(guò)程。用于描述解決特定問(wèn)題的步驟序列稱為算法,算法可以變成軟件(程序),確定硬件(物理機(jī))能做什么和做了什么。創(chuàng)建軟件的過(guò)程稱為編程。1.1.1現(xiàn)代計(jì)算機(jī)幾乎每個(gè)人都用過(guò)計(jì)算機(jī)。也許你玩過(guò)計(jì)算機(jī)游戲,或曾用計(jì)算機(jī)寫文章、在線購(gòu)物、聽音樂或通過(guò)社交媒體與朋友聯(lián)系。計(jì)算機(jī)被用于預(yù)測(cè)天氣、設(shè)計(jì)飛機(jī)、制作電影、經(jīng)營(yíng)企業(yè)、完成金融交易和控制工廠等。世界上第一臺(tái)通用電子數(shù)字計(jì)算機(jī)ENIAC誕生于1946年2月14日的美國(guó)賓夕法尼亞大學(xué)。中國(guó)的第一臺(tái)電子計(jì)算機(jī)誕生于1958年。在2019年6月17日公布的全球超算500強(qiáng)榜單中,中國(guó)以擁有219臺(tái)超級(jí)計(jì)算機(jī),繼續(xù)蟬聯(lián)全球擁有超算數(shù)量最多的國(guó)家。

世界上第一臺(tái)通用計(jì)算機(jī)ENIAC1.1.1現(xiàn)代計(jì)算機(jī)但是,計(jì)算機(jī)到底是什么機(jī)器?一個(gè)計(jì)算設(shè)備怎么能執(zhí)行這么多不同的任務(wù)呢?現(xiàn)代計(jì)算機(jī)可以被定義為“在可改變的程序的控制下,存儲(chǔ)和操縱信息的機(jī)器”。該定義有兩個(gè)關(guān)鍵要素:第一,計(jì)算機(jī)是用于操縱信息的設(shè)備。這意味著我們可以將信息放入計(jì)算機(jī),計(jì)算機(jī)將信息轉(zhuǎn)換為新的、有用的形式,然后輸出(顯示)信息。第二,計(jì)算機(jī)在可改變的程序的控制下運(yùn)行。1.1.1現(xiàn)代計(jì)算機(jī)計(jì)算機(jī)不是唯一能操縱信息的機(jī)器。當(dāng)你用簡(jiǎn)單的計(jì)算器來(lái)運(yùn)算一組數(shù)字時(shí),就是在輸入信息(數(shù)字),處理信息(如計(jì)算連續(xù)的總和),然后顯示。另一個(gè)典型的例子是油泵。給油箱加油時(shí),油泵利用某些輸入:當(dāng)前每升汽油的價(jià)格和來(lái)自傳感器的信號(hào),汽油流入汽車油箱的速率等。油泵將這個(gè)輸入轉(zhuǎn)換為加了多少汽油和應(yīng)付多少錢的信息。但計(jì)算器或油泵并不是完整的計(jì)算機(jī),這些設(shè)備包含的是嵌入式計(jì)算機(jī)(芯片),被構(gòu)建來(lái)執(zhí)行單一的任務(wù)?!坝?jì)算機(jī)程序”是一組詳細(xì)指令的有序集合。程序明確地告訴計(jì)算機(jī)做什么,如果我們改變程序,計(jì)算機(jī)就會(huì)執(zhí)行不同的動(dòng)作序列,從而完成不同的任務(wù)。正是這種靈活性,讓計(jì)算機(jī)在一個(gè)時(shí)刻是文字處理器,在另一個(gè)時(shí)刻是金融顧問(wèn),后來(lái)又變成一個(gè)街機(jī)游戲。機(jī)器(硬件)沒變,但控制機(jī)器的程序(軟件)改變了。1.1.1現(xiàn)代計(jì)算機(jī)每臺(tái)計(jì)算機(jī)只是“執(zhí)行”(運(yùn)行)程序的機(jī)器。例如AppleMacintosh、DellPC、聯(lián)想Thinkpad筆記本、AppleiPad和華為智能手機(jī)等,它們實(shí)際上是不同類型的計(jì)算機(jī)。所有這些不同的計(jì)算機(jī)具有相同的力量,通過(guò)適當(dāng)?shù)木幊?,每臺(tái)計(jì)算機(jī)基本上可以做任何其他計(jì)算機(jī)可以做的事情。從這個(gè)意義上說(shuō),放在你書桌上的PC機(jī)實(shí)際上是一臺(tái)通用機(jī)器,它可以做任何你想要它做的事,只要你能足夠詳細(xì)地描述要完成的任務(wù)。1.1.2計(jì)算機(jī)軟件與程序設(shè)計(jì)語(yǔ)言事實(shí)上,計(jì)算機(jī)科學(xué)并不只是研究計(jì)算機(jī)的。計(jì)算機(jī)科學(xué)本質(zhì)上是研究什么可以計(jì)算,它是更廣泛的計(jì)算科學(xué)領(lǐng)域的基礎(chǔ),其中包括網(wǎng)絡(luò)、數(shù)據(jù)庫(kù)和信息管理系統(tǒng)等。著名計(jì)算機(jī)科學(xué)家埃格斯·迪克斯特拉曾經(jīng)說(shuō)過(guò),“計(jì)算機(jī)之于計(jì)算機(jī)科學(xué),正如望遠(yuǎn)鏡之于天文學(xué)?!庇?jì)算機(jī)是計(jì)算機(jī)科學(xué)中的重要工具,由于它可以執(zhí)行我們描述的任何過(guò)程,所以真正的問(wèn)題是:“我們可以描述什么過(guò)程?”即:計(jì)算機(jī)科學(xué)的根本問(wèn)題就是“可以計(jì)算什么”。計(jì)算機(jī)科學(xué)家應(yīng)用許多研究技術(shù)來(lái)回答這個(gè)問(wèn)題,其中三種主要技術(shù)是設(shè)計(jì)、分析和實(shí)驗(yàn)。1.1.2計(jì)算機(jī)軟件與程序設(shè)計(jì)語(yǔ)言證明某個(gè)問(wèn)題可以解決的一種方式就是實(shí)際設(shè)計(jì)解決方案。也就是說(shuō),我們開發(fā)了一個(gè)逐步的過(guò)程,以實(shí)現(xiàn)期望的結(jié)果。計(jì)算機(jī)科學(xué)家稱之為“算法”,算法設(shè)計(jì)是計(jì)算機(jī)科學(xué)中最重要的方面之一。設(shè)計(jì)有一個(gè)弱點(diǎn),它只能回答“什么是可計(jì)算的”。如果可以設(shè)計(jì)一個(gè)算法,那么問(wèn)題是可解的。然而,未能找到算法并不意味著問(wèn)題是不可解的,這可能是碰巧還沒有找到正確的想法,這就是我們引入分析的原因。1.1.2計(jì)算機(jī)軟件與程序設(shè)計(jì)語(yǔ)言分析是以數(shù)學(xué)方式檢查算法和問(wèn)題的過(guò)程。算法分析是計(jì)算機(jī)科學(xué)的重要組成部分。當(dāng)一些問(wèn)題太復(fù)雜或者定義不明確而無(wú)法開展分析時(shí),在這種情況下,計(jì)算機(jī)科學(xué)家就依靠實(shí)驗(yàn)。他們實(shí)際實(shí)現(xiàn)一些系統(tǒng),然后研究行為的結(jié)果。即使在進(jìn)行理論分析時(shí),也經(jīng)常需要實(shí)驗(yàn)來(lái)驗(yàn)證和完善分析。對(duì)于大多數(shù)問(wèn)題,底線是能否構(gòu)建一個(gè)可靠的工作系統(tǒng)。通常我們需要對(duì)系統(tǒng)進(jìn)行測(cè)試,以確定這個(gè)底線已經(jīng)滿足。當(dāng)你開始編寫自己的程序時(shí),會(huì)有很多機(jī)會(huì)觀察你的解決方案的表現(xiàn)。如今,計(jì)算機(jī)科學(xué)家參與的活動(dòng)都在計(jì)算這把大傘之下,例如移動(dòng)計(jì)算、網(wǎng)絡(luò)、人機(jī)交互、人工智能、計(jì)算科學(xué)(使用強(qiáng)大的計(jì)算機(jī)來(lái)模擬科學(xué)過(guò)程)、數(shù)據(jù)庫(kù)和數(shù)據(jù)挖掘、軟件工程、網(wǎng)絡(luò)和多媒體設(shè)計(jì)、數(shù)字音樂制作、管理信息系統(tǒng)和計(jì)算機(jī)安全等。無(wú)論在何處進(jìn)行計(jì)算,計(jì)算機(jī)科學(xué)的技能和知識(shí)都有應(yīng)用。1.1.3計(jì)算機(jī)組成一名成功的程序員也許并不需要知道計(jì)算機(jī)工作的所有細(xì)節(jié),但是,了解計(jì)算機(jī)的基本原理將有助于掌握讓程序運(yùn)行所需的步驟。因此,讓我們來(lái)看看計(jì)算機(jī)的內(nèi)部構(gòu)造。不同計(jì)算機(jī)在具體細(xì)節(jié)上會(huì)顯著不同,但抽象起來(lái)看,所有現(xiàn)代數(shù)字計(jì)算機(jī)都是非常相似的。右圖展示了計(jì)算機(jī)的功能視圖,計(jì)算機(jī)系統(tǒng)包括中央處理單元(CPU)、主存儲(chǔ)器(RAM)、輔助存儲(chǔ)器以及輸入和輸出設(shè)備。CPU是機(jī)器的“大腦”,這是計(jì)算機(jī)執(zhí)行所有基本操作的地方。CPU可以執(zhí)行簡(jiǎn)單的算術(shù)運(yùn)算,如兩個(gè)數(shù)相加,也可以執(zhí)行邏輯操作,如測(cè)試兩個(gè)數(shù)是否相等。

計(jì)算機(jī)的功能視圖1.1.3計(jì)算機(jī)組成CPU只能直接訪問(wèn)(操作)存儲(chǔ)在“主存儲(chǔ)器”(RAM,隨機(jī)存取存儲(chǔ)器)中的信息(數(shù)據(jù)和程序)。主存儲(chǔ)器速度快,但它也是易失性存儲(chǔ)。也就是說(shuō),當(dāng)電源關(guān)閉時(shí),主存儲(chǔ)器中的信息會(huì)丟失。因此,還必須有一些輔助存儲(chǔ)器來(lái)提供永久存儲(chǔ)。在個(gè)人計(jì)算機(jī)中,主要的輔助存儲(chǔ)器通常是硬盤驅(qū)動(dòng)器(HDD)或固態(tài)驅(qū)動(dòng)器(SSD)。HDD將信息以磁模式存儲(chǔ)在磁盤上,而SSD使用稱為閃存的電子電路。大多數(shù)計(jì)算機(jī)還支持可移動(dòng)介質(zhì)作為輔助存儲(chǔ)器,如U盤和DVD數(shù)字多功能光盤,后者以光學(xué)模式存儲(chǔ)信息,由激光讀取和寫入。人們通過(guò)輸入和輸出設(shè)備與計(jì)算機(jī)交互,常見的設(shè)備如鍵盤、鼠標(biāo)和顯示器。來(lái)自輸入設(shè)備的信息由CPU處理,并可以被移動(dòng)到主存儲(chǔ)器或輔助存儲(chǔ)器。類似地,需要顯示信息時(shí),CPU將它發(fā)送到一個(gè)或多個(gè)輸出設(shè)備。1.1.3計(jì)算機(jī)組成當(dāng)在計(jì)算機(jī)上啟動(dòng)游戲或文字處理程序時(shí),構(gòu)成程序的指令從(更)持久的輔助存儲(chǔ)器復(fù)制到計(jì)算機(jī)的主存儲(chǔ)器中。一旦指令被加載,CPU就開始執(zhí)行程序。技術(shù)上,CPU遵循的過(guò)程稱為“讀取-執(zhí)行循環(huán)”。從存儲(chǔ)器取得第一條指令,解碼以弄清楚它代表什么,并且執(zhí)行適當(dāng)?shù)膭?dòng)作。然后,取得并解碼和執(zhí)行下一條指令。循環(huán)繼續(xù),一條指令接著一條指令。這確實(shí)是所有的計(jì)算機(jī)從你打開它直到關(guān)閉時(shí)做的事情:讀取指令、解碼、執(zhí)行。但計(jì)算機(jī)能以很快的速度執(zhí)行這個(gè)簡(jiǎn)單的指令流,每秒完成數(shù)十億條指令。將足夠多的簡(jiǎn)單指令以正確的方式放在一起(編程),計(jì)算機(jī)便完成了驚人的工作。1.2計(jì)算機(jī)軟件與程序設(shè)計(jì)語(yǔ)言計(jì)算機(jī)軟件程序設(shè)計(jì)語(yǔ)言計(jì)算機(jī)翻譯器1.2

計(jì)算機(jī)軟件與程序設(shè)計(jì)語(yǔ)言電腦硬件其實(shí)非常復(fù)雜,主要原因之一是輸入/輸出設(shè)備既繁多且各不相同,例如鍵盤、鼠標(biāo)、顯卡與屏幕、聲卡與喇叭、打印機(jī)、硬盤、U盤、攝像頭、藍(lán)牙、無(wú)線網(wǎng)卡與路由器等等,如果要由人們或直接由應(yīng)用軟件來(lái)面對(duì)這種種裝置,那幾乎是不可能的任務(wù),所幸,我們可以在軟件與硬件之間加入一層被稱為操作系統(tǒng)(operatingsystem,OS)的軟件,由它來(lái)管理下面的硬件并負(fù)責(zé)執(zhí)行上面的軟件,介于兩者之間,讓上層程序可存取下層的輸出入裝置。

硬件、操作系統(tǒng)與軟件1.2.1計(jì)算機(jī)軟件“計(jì)算”的一個(gè)要點(diǎn)是:“軟件”(程序)主宰“硬件”(物理機(jī)器)。軟件決定計(jì)算機(jī)可以做什么,沒有軟件,計(jì)算機(jī)也許只是昂貴的鎮(zhèn)紙。程序是一系列指令的有序集合,它告訴計(jì)算機(jī)做什么。顯然,就目前而言,我們?nèi)匀恍枰糜?jì)算機(jī)可以理解的語(yǔ)言來(lái)提供這些指令。1.2.1計(jì)算機(jī)軟件操作系統(tǒng)也是程序,只不過(guò)非常龐大復(fù)雜,在整個(gè)電腦系統(tǒng)中扮演著管理員的角色。操作系統(tǒng)可以分為許多組成部分。簡(jiǎn)單而言,其中會(huì)由驅(qū)動(dòng)程序負(fù)責(zé)與底層硬件溝通,不同的硬件裝置需要不同的驅(qū)動(dòng)程序,借以彌補(bǔ)其差異,提供一致的接口供上層調(diào)用;然后提供程序運(yùn)行環(huán)境,以執(zhí)行各式各樣的應(yīng)用軟件,而這些軟件可由各種“程序語(yǔ)言”編寫而成。我們平常自由自在地享受各式軟件,諸如網(wǎng)頁(yè)瀏覽器(InternetExplorer、百度、搜狗等)、即時(shí)通訊軟件(QQ、微信)、電子表格(Excel)、媒體播放程序、壓縮軟件(Zip、WinZip)、看圖軟件等等,這些軟件都必須由某一種(或數(shù)種)程序語(yǔ)言開發(fā)編寫而成。1.2.2程序設(shè)計(jì)語(yǔ)言人類的自然語(yǔ)言不太適合描述復(fù)雜的算法,因?yàn)槠渲谐錆M著模糊和不精確。計(jì)算機(jī)科學(xué)家設(shè)計(jì)了一些符號(hào),以準(zhǔn)確無(wú)二義的方式來(lái)表示計(jì)算,從而繞過(guò)了這些問(wèn)題,這些形式表示法的特殊符號(hào)稱為編程語(yǔ)言,其中的每個(gè)結(jié)構(gòu)都有精確的形式(即語(yǔ)法)和精確的含義(即語(yǔ)義)。編程語(yǔ)言就像一種規(guī)則,用于編寫計(jì)算機(jī)將遵循的指令。程序員通常將他們的程序稱為“計(jì)算機(jī)代碼”,用編程語(yǔ)言來(lái)編寫算法(軟件)的過(guò)程就被稱為“編碼”或“編程”,程序設(shè)計(jì)人員有時(shí)也自稱為“碼農(nóng)”。編程是計(jì)算機(jī)科學(xué)的一個(gè)基本組成部分,因此,對(duì)所有立志成為計(jì)算機(jī)專業(yè)人員的人都很重要。計(jì)算機(jī)已經(jīng)成為我們社會(huì)中的常見工具,要理解這個(gè)工具的優(yōu)點(diǎn)和局限性,就需要理解編程。程序員是計(jì)算機(jī)的真正控制者,編程能讓你成為一個(gè)更聰明的計(jì)算機(jī)用戶。1.2.2程序設(shè)計(jì)語(yǔ)言編程也有很多樂趣。這是一項(xiàng)智力活動(dòng),讓人們通過(guò)有用的、有時(shí)非常漂亮的創(chuàng)作來(lái)表達(dá)自己,因此,許多人確實(shí)愛好編寫計(jì)算機(jī)程序。編程也會(huì)培養(yǎng)有價(jià)值的問(wèn)題解決技能,特別是將復(fù)雜系統(tǒng)分解為一些可理解的子系統(tǒng)及其交互,從而分析復(fù)雜系統(tǒng)的能力。在信息社會(huì),程序員有著很大的市場(chǎng)需求,理解計(jì)算機(jī)和具備編程的能力可能會(huì)讓你在社會(huì)競(jìng)爭(zhēng)中占據(jù)優(yōu)勢(shì)。本質(zhì)上,計(jì)算機(jī)硬件只能理解一種稱為機(jī)器語(yǔ)言的低級(jí)語(yǔ)言,而程序通常使用面向人類的高級(jí)語(yǔ)言(如Python、Java)編寫。因此,高級(jí)語(yǔ)言必須被編譯或解釋,以便計(jì)算機(jī)能夠理解它。高級(jí)語(yǔ)言比機(jī)器語(yǔ)言更容易移植。時(shí)至今日,已經(jīng)出現(xiàn)過(guò)無(wú)數(shù)的程序語(yǔ)言,那些曾經(jīng)熱門的程序語(yǔ)言至少就有幾十個(gè),諸如FORTRAN、COBOL、C、C++、C#、Java、PHP、JavaScript、VisualBasic、Perl、Lisp、Prolog、Ada等等。1.2.3計(jì)算機(jī)翻譯器假設(shè)我們希望讓計(jì)算機(jī)對(duì)兩個(gè)數(shù)求和,CPU實(shí)際執(zhí)行的指令可能是這樣的:將內(nèi)存位置2001的數(shù)加載到CPU中將內(nèi)存位置2002的數(shù)加載到CPU中在CPU中對(duì)這兩個(gè)數(shù)求和將結(jié)果存儲(chǔ)到內(nèi)存位置2003兩個(gè)數(shù)求和似乎有很多工作,實(shí)際上甚至比這更復(fù)雜,因?yàn)橹噶詈蛿?shù)字是以二進(jìn)制符號(hào)表示的(即0和1的序列)。在高級(jí)語(yǔ)言中,兩個(gè)數(shù)求和可以更自然地表達(dá)為c=a+b。這讓人們?nèi)菀桌斫?,但我們還需要用“編譯”或“解釋”方法,以便將高級(jí)語(yǔ)言翻譯成計(jì)算機(jī)可以執(zhí)行的機(jī)器語(yǔ)言。1.2.3計(jì)算機(jī)翻譯器“編譯器”是一個(gè)復(fù)雜的計(jì)算機(jī)程序,它接受一個(gè)以高級(jí)語(yǔ)言編寫的程序,并將其翻譯成以某個(gè)計(jì)算機(jī)的機(jī)器語(yǔ)言表達(dá)的等效程序。下圖展示了編譯過(guò)程。高級(jí)語(yǔ)言程序被稱為“源代碼”,得到的“機(jī)器代碼”是計(jì)算機(jī)可以直接執(zhí)行的程序。圖中的虛線表示機(jī)器代碼的執(zhí)行(也稱為“運(yùn)行程序”)。

編譯高級(jí)語(yǔ)言1.2.3計(jì)算機(jī)翻譯器“解釋器”模擬能理解高級(jí)語(yǔ)言的計(jì)算機(jī),它根據(jù)需要一條一條地分析和執(zhí)行源代碼指令。下圖展示了這個(gè)過(guò)程。

解釋高級(jí)語(yǔ)言1.2.3計(jì)算機(jī)翻譯器解釋和編譯之間的區(qū)別在于,編譯是一次性翻譯。一旦程序被編譯,它可以重復(fù)運(yùn)行而不再需要編譯器或源代碼。在解釋的情況下,每次程序運(yùn)行時(shí)都需要解釋器和源代碼。編譯的程序往往更快,因?yàn)槠浞g是一次完成的,但是解釋語(yǔ)言擁有更靈活的編程環(huán)境,程序可以交互式地開發(fā)和運(yùn)行。翻譯過(guò)程突出了高級(jí)語(yǔ)言對(duì)機(jī)器語(yǔ)言的可移植性。計(jì)算機(jī)的機(jī)器語(yǔ)言由特定CPU的設(shè)計(jì)者創(chuàng)建,每種類型的計(jì)算機(jī)都有自己的機(jī)器語(yǔ)言。不同的是,以高級(jí)語(yǔ)言編寫的程序可以在許多不同種類的計(jì)算機(jī)上運(yùn)行,只要存在合適的編譯器或解釋器(這只是另一個(gè)程序)。因此,我們可以在自己的筆記本計(jì)算機(jī)和平板計(jì)算機(jī)上運(yùn)行完全相同的Python程序。盡管它們有不同的CPU,但都運(yùn)行著Python解釋器。1.3

Python語(yǔ)言Python簡(jiǎn)史Python語(yǔ)言特點(diǎn)Python語(yǔ)言的版本1.3Python語(yǔ)言簡(jiǎn)介Python是一種解釋型程序語(yǔ)言,了解Python的一個(gè)好方法是使用交互式shell(俗稱“殼”,用來(lái)區(qū)別于“核”)進(jìn)行實(shí)訓(xùn)操作。shell是指“為使用者提供操作界面”的軟件。Python標(biāo)準(zhǔn)版包括一個(gè)IDLE程序,它提供了一個(gè)shell以及編輯Python程序的工具。1.3.1Python簡(jiǎn)史Python語(yǔ)言是由荷蘭人吉多·范羅蘇姆在1980年代末設(shè)計(jì)的,于1994年1月正式發(fā)布1.0版,經(jīng)過(guò)近三十年的發(fā)展演進(jìn),現(xiàn)在已經(jīng)成為主流的程序設(shè)計(jì)語(yǔ)言之一。

Python語(yǔ)言LogoPython之父吉多·范羅蘇姆1.3.1Python簡(jiǎn)史Python這個(gè)名字取自于著名的英國(guó)超現(xiàn)實(shí)喜劇“蒙提派森的飛行馬戲團(tuán)”,另外,Python又有巨蟒蛇之意,所以其代表圖示為兩只蟒蛇纏繞在一起,形成類似于太極陰陽(yáng)圖的樣子。Python支持多種程序設(shè)計(jì)范式,包括程序式、結(jié)構(gòu)式、面向?qū)ο?、函?shù)式、腳本式,其語(yǔ)法高級(jí)且簡(jiǎn)潔,易于學(xué)習(xí),具備了垃圾收集、動(dòng)態(tài)類型檢查、異常處理機(jī)制等特色。Python的程序庫(kù)模塊多得不計(jì)其數(shù),游戲、多媒體、數(shù)學(xué)運(yùn)算、視頻處理、系統(tǒng)程序、網(wǎng)站網(wǎng)頁(yè)、機(jī)器人等等領(lǐng)域,都可見其運(yùn)用之處,廣受各界采用。1.3.2Python語(yǔ)言特點(diǎn)Python的程序代碼清楚易懂,開發(fā)軟件時(shí)易于編寫功能,之后也易于維護(hù)修改,提供一致的程序設(shè)計(jì)模型,核心概念并不多。與C、C++、Java等程序語(yǔ)言相比,Python的開發(fā)速度快,相同功能需要的程序代碼行數(shù)較少。所以,使用Python可以提高程序開發(fā)人員與軟件工程師的生產(chǎn)力,在較短時(shí)間內(nèi)完成較多功能。Python常被昵稱為膠水語(yǔ)言,它能夠把用其他語(yǔ)言制作的各種模塊(尤其是C/C++)很輕松地聯(lián)結(jié)在一起。常見的一種應(yīng)用情形是,使用Python快速生成程序的原型(有時(shí)甚至是程序的最終界面),然后對(duì)其中有特別要求的部分,用更合適的語(yǔ)言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而后封裝為Python可以調(diào)用的擴(kuò)展類庫(kù)。在使用擴(kuò)展類庫(kù)時(shí)可能需要考慮平臺(tái)問(wèn)題,某些可能不提供跨平臺(tái)的實(shí)現(xiàn)。Python語(yǔ)法簡(jiǎn)潔清晰,它強(qiáng)制使用空白符(whitespace)作為語(yǔ)句縮進(jìn)。1.3.3Python語(yǔ)言的版本Python是純粹的自由軟件,源代碼和解釋器CPython遵循GNU通用公共許可證許可,為此成立了非營(yíng)利組織Python軟件基金會(huì),開發(fā)人員也逐漸演變成Python開發(fā)團(tuán)隊(duì),并擁有廣大的社團(tuán)。Python語(yǔ)言的各項(xiàng)開發(fā)工作都記錄在Python功能增進(jìn)建議書之中,規(guī)范并定義各種擴(kuò)充與延伸功能的技術(shù)規(guī)格,讓整個(gè)Python社區(qū)擁有共同遵循的原則和依據(jù)。目前在用的Python版本分為2.x與3.x(又稱為Python3000或py3k),兩個(gè)版本并不完全兼容,學(xué)習(xí)與查詢相關(guān)數(shù)據(jù)時(shí),應(yīng)看清楚適用版本。1.3.3Python語(yǔ)言的版本雖然3.x版已推出一段時(shí)日,但仍有很多人以2.x版開發(fā)程序,使用者眾多,很多程序代碼只相容于2.x版,某些程序庫(kù)模塊也尚未更新提供3.x的版本。Python的2.7版本發(fā)布至今已相當(dāng)普及,也是2.x的最后一版,該版本進(jìn)入了糾錯(cuò)和維護(hù)的穩(wěn)定狀態(tài)。關(guān)于Python各版本之間功能與特色的差異詳情,可以到Python官方網(wǎng)站的文件區(qū)(/)查詢。本書編寫時(shí)應(yīng)用的是Python版本3.8。1.4

Python集成開發(fā)環(huán)境1.4Python集成開發(fā)環(huán)境執(zhí)行Python程序的規(guī)格已經(jīng)由Python語(yǔ)言定義好了,而現(xiàn)在需要的是實(shí)施,就是要為實(shí)際動(dòng)手編寫程序搭建好Python程序的運(yùn)行環(huán)境,它依托于不同的操作系統(tǒng)。理論上,只要Python程序運(yùn)行環(huán)境的每一個(gè)具體實(shí)現(xiàn)都遵守Python語(yǔ)言的規(guī)格,而且程序員也按照標(biāo)準(zhǔn)編寫Python程序,那么所編寫的程序代碼不管在哪一個(gè)程序運(yùn)行環(huán)境里都應(yīng)該能正確無(wú)誤地得到執(zhí)行。換句話說(shuō),在Windows上編寫的Python程序,也可以放到Linux上執(zhí)行,只要兩處都安裝了相兼容的Python運(yùn)行環(huán)境即可,因此Python具備良好的可移植性。1.4Python集成開發(fā)環(huán)境常見的Python實(shí)施有CPython、StacklessPython、UnladenSwallow、IronPython、Jython、PyPy等等,且各有其獨(dú)特之處,例如CPython是Python官方團(tuán)隊(duì)以C語(yǔ)言編寫開發(fā)的運(yùn)行環(huán)境,具有標(biāo)準(zhǔn)地位,其源代碼完全開放,可移植性最高。另外有些實(shí)施,如ActivePython、PythonXY、AnacondaPython等,是把CPython重新包裝,再加入額外的程序庫(kù),專供特定領(lǐng)域使用,例如科學(xué)計(jì)算、數(shù)據(jù)分析與管理、數(shù)據(jù)庫(kù)運(yùn)用等。本書的程序與范例都以CPython實(shí)施為準(zhǔn);平常提到Python時(shí)指的便是這個(gè)運(yùn)行環(huán)境。1.5

Python下載與安裝安裝Python開發(fā)環(huán)境執(zhí)行Python程序1.5

安裝Python學(xué)習(xí)Python課程時(shí),除了利用學(xué)校的計(jì)算機(jī)實(shí)驗(yàn)室完成相關(guān)實(shí)訓(xùn)任務(wù)外,還應(yīng)該在自己的個(gè)人計(jì)算機(jī)中安裝Python軟件,以方便隨時(shí)進(jìn)行編程練習(xí)。我們以Windows環(huán)境和CPython版本為例,來(lái)學(xué)習(xí)搭建Python3.x開發(fā)環(huán)境。1.5.1安裝Python開發(fā)環(huán)境請(qǐng)按照下列步驟完成安裝并進(jìn)行簡(jiǎn)單操作。步驟1:在自己的個(gè)人計(jì)算機(jī)中為Python語(yǔ)言建立一個(gè)文件夾(例如:\Python)。步驟2:下載Python軟件?;ヂ?lián)網(wǎng)上有很多地方提供了下載服務(wù)。這里,我們選擇在Python的官網(wǎng)上下載python。打開Python官網(wǎng)(。

Python官網(wǎng)1.5.1安裝Python開發(fā)環(huán)境鼠標(biāo)指向“Downloads”-“Windows”菜單命令,屏幕顯示如圖所示,單擊“Python3.8.1”按鈕,按屏幕提示,將Python軟件下載到指定的文件夾。

選擇“Windows”1.5.1安裝Python開發(fā)環(huán)境步驟3:下載完成后雙擊執(zhí)行下載的exe程序,進(jìn)入安裝界面。(安裝完成后,若再次單擊該程序,可執(zhí)行卸載Python的操作。)

Python安裝界面1.5.1安裝Python開發(fā)環(huán)境在選擇安裝時(shí),可以把下方的“AddPython3.8toPATH”勾選上,直接默認(rèn)把用戶變量添加上,后續(xù)不用再添加。安裝界面中可以選擇默認(rèn)安裝或者自定義安裝。由于默認(rèn)安裝路徑層次比較深,可以選擇自定義安裝,例如將Python程序系統(tǒng)安裝在前面定義的“\Python”目錄中,以方便后續(xù)查找。其他選項(xiàng)選擇默認(rèn)(見圖1-12),單擊“Next”按鈕,進(jìn)一步的高級(jí)選項(xiàng)選擇默認(rèn)(見圖1-13),單機(jī)“Install”按鈕,完成安裝(見圖1-14)。1.5.1安裝Python開發(fā)環(huán)境圖1-12設(shè)置選項(xiàng)1.5.1安裝Python開發(fā)環(huán)境圖1-13設(shè)置高級(jí)選項(xiàng)1.5.1安裝Python開發(fā)環(huán)境圖1-14完成安裝1.5.1安裝Python開發(fā)環(huán)境步驟4:安裝成功。在安裝目錄可以看到Python安裝文件的相關(guān)信息,在“開始”菜單可以單擊“Python3.8”>“Python3.8(32-bit)”命令,打開Python軟件。至此,可以使用Python了。

Python操作界面1.5.1安裝Python開發(fā)環(huán)境下載安裝后,若沒有改動(dòng)缺省設(shè)置的安裝路徑,那么Python3.x版會(huì)放在C:\Python中。Windows“開始”菜單的“Python3.8”子菜單中也會(huì)出現(xiàn)“IDLE(Python3.832-bit)”命令,這是一款簡(jiǎn)易的圖形化開發(fā)編輯器。請(qǐng)分析并記錄:(1)你實(shí)際選擇安裝的Python軟件版本是:答:__________________________________________________________________________(2)你是否完成Python軟件的安裝?若未完成,則簡(jiǎn)單分析原因是什么?答:________________________________________________________________________________________________________________________________________________________1.5.1安裝Python開發(fā)環(huán)境安裝后的Python程序運(yùn)行環(huán)境,里面最主要的部分是“解釋器”,解釋器負(fù)責(zé)執(zhí)行程序,把Python程序交給它后,它就開始解析程序代碼、檢查語(yǔ)法有無(wú)錯(cuò)誤、根據(jù)程序語(yǔ)義去完成任務(wù)(例如計(jì)算某個(gè)數(shù)學(xué)公式)、把數(shù)據(jù)存回文件、通過(guò)網(wǎng)絡(luò)請(qǐng)求到某網(wǎng)站,等等,而這些具體功能都會(huì)由某個(gè)程序庫(kù)負(fù)責(zé);解釋器與眾多程序庫(kù)再加上Python運(yùn)行環(huán)境的其他部分,將會(huì)往下層存取操作系統(tǒng)提供的服務(wù),完成程序代碼定義的功能。當(dāng)然這是極度簡(jiǎn)化后的示意圖,Python程序運(yùn)行環(huán)境可再細(xì)分出許多部分,解釋器的功能也可再細(xì)分。解釋器是Python程序運(yùn)行環(huán)境的門戶,編寫Python程序時(shí),直接面對(duì)的就是解釋器。運(yùn)行環(huán)境架構(gòu)1.5.1安裝Python開發(fā)環(huán)境Python具有非常豐富龐大的程序庫(kù),例如處理各種數(shù)據(jù)形式的程序庫(kù)、網(wǎng)絡(luò)連線的程序庫(kù)、存取文件系統(tǒng)的程序庫(kù)等。1.5.2執(zhí)行Python程序下面我們來(lái)學(xué)習(xí)編寫控制機(jī)器內(nèi)部計(jì)算過(guò)程的程序。我們通過(guò)向Python解釋器發(fā)出指令來(lái)指揮計(jì)算機(jī)內(nèi)部的計(jì)算過(guò)程??梢杂媒换ツJ絾?dòng)Python解釋器(shell)。shell允許用戶在其中鍵入Python命令,然后顯示執(zhí)行結(jié)果。啟動(dòng)shell的具體細(xì)節(jié)因不同的Python安裝而異。一般情況下,我們會(huì)使用IDLE應(yīng)用程序,它提供了Pythonshell,可以幫助我們創(chuàng)建和編輯Python程序。在Windows“開始”菜單中單擊“IDLE(Python3.832-bit)”命令,屏幕顯示IDLE窗口。

PythonIDLE窗口1.5.2執(zhí)行Python程序當(dāng)?shù)谝淮螁?dòng)IDLE時(shí),所看到的具體的啟動(dòng)消息取決于當(dāng)前正在運(yùn)行的Python版本和正在使用的系統(tǒng)。重要的部分是圖中的最后一行,>>>

是一個(gè)Python提示符,表示Python解釋器正在進(jìn)行展示交互式會(huì)話,等待給它的命令。在編程語(yǔ)言中,一個(gè)完整的命令稱為語(yǔ)句(注意,不要使用中文的句號(hào)、引號(hào)等符號(hào))。下面是與Pythonshell交互的例子:>>>print("Hello,World!")Hello,World!>>>print(2+3)5>>>print("2+3=",2+3)2+3=51.5.2執(zhí)行Python程序1.5.2執(zhí)行Python程序這里,我們嘗試了三個(gè)使用Python的print語(yǔ)句的例子。第一個(gè)print語(yǔ)句要求Python顯示文本短語(yǔ)“Hello,World!”,Python在下一行做出響應(yīng),打印出該短語(yǔ)。第二個(gè)print語(yǔ)句要求Python打印2與3之和。第三個(gè)print結(jié)合了這兩個(gè)想法。Python打印出引號(hào)中的部分“2+3=”,然后是2+3的結(jié)果,即5。建議讀者啟動(dòng)自己的Pythonshell并嘗試這些例子。Python允許我們將一系列語(yǔ)句放在一起,創(chuàng)建一個(gè)全新的命令或函數(shù)。下面的例子創(chuàng)建了一個(gè)名為hello的新函數(shù):>>>defhello():print("Hello")print("計(jì)算機(jī)很有趣!")>>>1.5.2執(zhí)行Python程序1.5.2執(zhí)行Python程序第一行告訴Python我們正在定義一個(gè)新函數(shù),命名為hello。接下來(lái)兩行縮進(jìn),表明它們是hello函數(shù)的一部分。最后的空白行(通過(guò)按兩次回車鍵獲得)讓Python知道定義己完成,并且shell用另一個(gè)提示符進(jìn)行響應(yīng)。注意,鍵入定義并不會(huì)導(dǎo)致Python打印任何東西。我們告訴Python,當(dāng)hello函數(shù)用作命令時(shí)應(yīng)該發(fā)生什么,但實(shí)際上并沒有要求Python執(zhí)行它。鍵入函數(shù)名稱并跟上括號(hào),函數(shù)就被調(diào)用了。下面是使用hello命令時(shí)發(fā)生的事情:>>>hello()Hello計(jì)算機(jī)很有趣!>>>1.5.2執(zhí)行Python程序1.5.2執(zhí)行Python程序這時(shí),hello函數(shù)定義中的兩個(gè)print語(yǔ)句按順序執(zhí)行了。命令可以有可變部分,稱為參數(shù),放在括號(hào)中。讓我們看一個(gè)使用參數(shù)、自定義問(wèn)候語(yǔ)的例子。先是定義:>>>defgreet(person):print("Hello",person)print("Howareyou?")1.5.2執(zhí)行Python程序現(xiàn)在我們可以使用定制的問(wèn)候。>>>greet("John")HelloJohnHowareyou?>>>greet("Emily")HelloEmilyHowareyou?>>>1.5.2執(zhí)行Python程序1.5.2執(zhí)行Python程序使用greet時(shí),我們可以發(fā)送不同的名稱,從而自定義結(jié)果。print是Python中的一個(gè)內(nèi)置函數(shù),當(dāng)我們調(diào)用print函數(shù)時(shí),括號(hào)中的參數(shù)告訴函數(shù)要打印什么。注意到,執(zhí)行一個(gè)函數(shù)時(shí),括號(hào)必須包含在函數(shù)名之后,即使沒有給出參數(shù)也是如此。例如,可以使用print而不使用任何參數(shù),創(chuàng)建一個(gè)空白的輸出行。>>>print()>>>但是如果只鍵入函數(shù)的名稱,省略括號(hào),函數(shù)將不會(huì)真正執(zhí)行。這時(shí),交互式Python會(huì)話將顯示一些輸出,表明名稱所引用的函數(shù),如下面的交互所示:>>>greet<functiongreetatOx8393aec>>>>print<built-infunctionprint)1.5.2執(zhí)行Python程序1.5.2執(zhí)行Python程序這里的0x8393aec是在計(jì)算機(jī)存儲(chǔ)器中的位置(地址),其中恰好存儲(chǔ)了greet函數(shù)的定義。如果你在自己的計(jì)算機(jī)上嘗試,肯定會(huì)看到不同的地址。如果將函數(shù)交互式地輸入到Pythonshell中,當(dāng)退出shell時(shí),定義會(huì)丟失。如果下次希望再次使用它們時(shí),必須重新鍵入。1.5.2執(zhí)行Python程序?qū)嶋H上,程序的創(chuàng)建通常是將定義寫入獨(dú)立的文件,稱為“模塊”或“腳本”。此文件保存在輔助存儲(chǔ)器中,可以反復(fù)使用。模塊文件是一個(gè)文本文件,可以用任何應(yīng)用程序來(lái)編輯文本,例如記事本或文字處理程序,只要將程序保存為“純文本”文件即可。有一種特殊類型的應(yīng)用稱為集成開發(fā)環(huán)境(IDE,IntegratedDevelopmentEnvironment)簡(jiǎn)化了這個(gè)過(guò)程,它們專門設(shè)計(jì)用于幫助程序員編寫程序,包括自動(dòng)縮進(jìn)、顏色高亮顯示和交互式開發(fā)等功能。作為Pythonshell的IDLE就是一個(gè)簡(jiǎn)單卻完整的開發(fā)環(huán)境?!癐DLE”中多出來(lái)的字母“L”是表達(dá)對(duì)EricIdle(埃里克·艾多爾)的致敬,他是英國(guó)六人喜劇團(tuán)體MontyPython的6位成員之一。1.5.2執(zhí)行Python程序我們來(lái)編寫并運(yùn)行一個(gè)完整的程序,以說(shuō)明模塊文件的使用。要將此程序鍵入IDLE,應(yīng)選擇File/NewFile菜單選項(xiàng)。這將打開一個(gè)空白(非shell)窗口,可以在其中鍵入程序。下面是程序的Python代碼:【程序?qū)嵗?-1】一個(gè)簡(jiǎn)單的示例程序。#chaos.py#一個(gè)隨意編寫的簡(jiǎn)單程序,沒有特定的目的defmain():print("該程序說(shuō)明了一個(gè)隨意的功能。")x=eval(input("輸入0到

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論