《Python電子教案1-2 程序設(shè)計(jì)基本方法[谷風(fēng)參考]》由會(huì)員分享,可在線閱讀,更多相關(guān)《Python電子教案1-2 程序設(shè)計(jì)基本方法[谷風(fēng)參考](53頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第1章 程序設(shè)計(jì)基本方法1谷風(fēng)書苑Python開發(fā)環(huán)境配置2谷風(fēng)書苑 到Python主頁(yè)下載并安裝Python基本開發(fā)和運(yùn)行環(huán)境,網(wǎng)址:www.python.org/downloads/ 根據(jù)操作系統(tǒng)不同選擇不同版本 下載相應(yīng)的Python 3.0系列版本程序安裝安裝安裝 方法1:?jiǎn)?dòng)Windows命令行工具,輸入python啟動(dòng) 方法2:調(diào)用IDLE來(lái)啟動(dòng)Python圖形化運(yùn)行環(huán)境啟動(dòng) 方法3:按照語(yǔ)法格式編寫代碼,編寫可以用任何文本編輯器,保存為文件。啟動(dòng) 方法4:打開IDLE,點(diǎn)擊Ctrl+N打開一個(gè)新窗口,輸入語(yǔ)句并保存,使用快鍵建F5即可運(yùn)行該程序啟動(dòng) 方法5:將Python集成到E
2、clipse、PyCharm等面向較大規(guī)模項(xiàng)目開發(fā)的集成開發(fā)環(huán)境中啟動(dòng) 采用上述某個(gè)方法,執(zhí)行:Hello程序 Hello程序只有一行代碼,實(shí)在太小。本節(jié)給出5個(gè)5行代碼左右的Python小程序(稱為“微實(shí)例”),在IDLE交互式和批量式兩種方式下練習(xí)。這5個(gè)微實(shí)例分別給出了交互式執(zhí)行過程和文件式內(nèi)容(即全部程序內(nèi)容)。 在編輯器中輸入代碼時(shí),#及以后的文字不影響程序執(zhí)行,可以不用輸入。#后面的文字是注釋,僅用來(lái)幫助讀者理解程序。運(yùn)行Python小程序 微實(shí)例1.1:圓面積的計(jì)算 交互式執(zhí)行過程如下運(yùn)行Python小程序 微實(shí)例1.1的文件式內(nèi)容如下運(yùn)行Python小程序 微實(shí)例1.2:簡(jiǎn)單的
3、人名對(duì)話運(yùn)行Python小程序 斐波那契數(shù)列(Fibonacci sequence),又稱黃金分割數(shù)列,由意大利數(shù)學(xué)家Leonardo Fibonacci于1202年提出,并以其名字命名。該數(shù)列F(n)定義如下:F(0)=0, F(1)=1,F(xiàn)(n)=F(n-2)+F(n-1),其中n=2。簡(jiǎn)單說,斐波那契數(shù)列中每個(gè)數(shù)是前兩個(gè)數(shù)之和。斐波那契數(shù)列中鄰近兩個(gè)數(shù)的比值接近于黃金分割數(shù),即F(n)/F(n-1)接近1.618,這個(gè)比例的極限值就是黃金分割數(shù)。斐波那契數(shù)列 微實(shí)例1.3:斐波那契數(shù)列運(yùn)行Python小程序 微實(shí)例1.4:同切圓的繪制運(yùn)行Python小程序 微實(shí)例1.5:日期和時(shí)間的輸出
4、運(yùn)行Python小程序 程序的基本編寫方法20谷風(fēng)書苑 每個(gè)計(jì)算機(jī)程序都用來(lái)解決特定計(jì)算問題,較大規(guī)模的程序提供豐富功能解決完整計(jì)算問題。例如:控制航天飛機(jī)運(yùn)行的程序、操作系統(tǒng)等。小型程序或程序片段可以為其他程序提供特定計(jì)算支持,作為解決更大計(jì)算問題的組成部分。 無(wú)論程序規(guī)模如何,每個(gè)程序都有統(tǒng)一的運(yùn)算模式:輸入數(shù)據(jù)、處理數(shù)據(jù)和輸出數(shù)據(jù)。這種樸素運(yùn)算模式形成了程序的基本編寫方法:IPO(Input, Process, Output)方法。IPO程序編寫方法 輸入數(shù)據(jù) 處理數(shù)據(jù) 輸出數(shù)據(jù)IPO程序編寫方法 輸入數(shù)據(jù)輸入(Input)是一個(gè)程序的開始。程序要處理的數(shù)據(jù)有多種來(lái)源,形成了多種輸入方式
5、,包括:文件輸入、網(wǎng)絡(luò)輸入、控制臺(tái)輸入、交互界面輸出、隨機(jī)數(shù)據(jù)輸入、內(nèi)部參數(shù)輸入等。IPO程序編寫方法文件輸入將文件作為程序輸入來(lái)源,在獲得文件控制權(quán)后,需要根據(jù)文件格式解析內(nèi)部具體數(shù)據(jù)。例如統(tǒng)計(jì)excel文件數(shù)據(jù)的數(shù)量,需要首先獲得excel文件的控制權(quán),打開文件后根據(jù)excel中數(shù)據(jù)存儲(chǔ)方式獲得所需處理的數(shù)據(jù),進(jìn)而開展計(jì)算網(wǎng)絡(luò)輸入將互聯(lián)網(wǎng)上的數(shù)據(jù)作為輸入來(lái)源。使用網(wǎng)絡(luò)數(shù)據(jù)需要明確網(wǎng)絡(luò)協(xié)議和使用特定的網(wǎng)絡(luò)接口。例如,捕獲并處理互聯(lián)網(wǎng)上的數(shù)據(jù),需要使用HTTP協(xié)議并解析HTML格式IPO程序編寫方法 控制臺(tái)輸入將程序使用者輸入的信息作為輸入來(lái)源。當(dāng)程序與用戶間存在交互時(shí),程序需要有明確的用戶提
6、示,輔助用戶正確輸入數(shù)據(jù)。從程序語(yǔ)法上來(lái)說,這種提示不是必須的,但良好的提示設(shè)計(jì)有助于提高用戶體驗(yàn)。 交互界面輸入通過提供一個(gè)圖形交互界面從用戶處獲得輸入來(lái)源。此時(shí),鼠標(biāo)移動(dòng)或點(diǎn)擊操作、文本框內(nèi)的鍵盤操作等都為程序提供事件和數(shù)據(jù)輸入。IPO程序編寫方法 隨機(jī)數(shù)據(jù)輸入將隨機(jī)數(shù)作為程序輸入,這需要使用特定的隨機(jī)數(shù)發(fā)成器程序或調(diào)用相關(guān)函數(shù)。4.5節(jié)將詳細(xì)介紹產(chǎn)生隨機(jī)數(shù)的方法。 內(nèi)部參數(shù)輸入以程序內(nèi)部定義的初始化變量作為輸入,盡管程序看似沒有從外部獲得輸入,但程序執(zhí)行之前的初始化過程為程序賦予了執(zhí)行所需的數(shù)據(jù)。IPO程序編寫方法 控制臺(tái)輸入將程序使用者輸入的信息作為輸入來(lái)源。當(dāng)程序與用戶間存在交互時(shí),
7、程序需要有明確的用戶提示,輔助用戶正確輸入數(shù)據(jù)。從程序語(yǔ)法上來(lái)說,這種提示不是必須的,但良好的提示設(shè)計(jì)有助于提高用戶體驗(yàn)。 交互界面輸入通過提供一個(gè)圖形交互界面從用戶處獲得輸入來(lái)源。此時(shí),鼠標(biāo)移動(dòng)或點(diǎn)擊操作、文本框內(nèi)的鍵盤操作等都為程序提供事件和數(shù)據(jù)輸入。IPO程序編寫方法 輸出數(shù)據(jù)輸出(Output)是程序展示運(yùn)算成果的方式。程序的輸出方式包括:控制臺(tái)輸出、圖形輸出、文件輸出、網(wǎng)絡(luò)輸出、操作系統(tǒng)內(nèi)部變量輸出等。IPO程序編寫方法 控制臺(tái)輸出以計(jì)算機(jī)屏幕為輸出目標(biāo),通過程序運(yùn)行環(huán)境中的命令行打印輸出結(jié)果。這里“控制臺(tái)”可以理解為啟動(dòng)程序的環(huán)境,例如,Windows中的命令行工具、IDLE工具等
8、。 圖形輸出在計(jì)算機(jī)中啟動(dòng)獨(dú)立的圖形輸出窗口,根據(jù)指令繪制運(yùn)算結(jié)果。IPO程序編寫方法 文件輸出以生成新的文件或修改已有文件方式輸出運(yùn)行結(jié)果,這是程序常用的輸出方式。7.1節(jié)將具體介紹文件的使用。 網(wǎng)絡(luò)輸出以訪問網(wǎng)絡(luò)接口方式輸出數(shù)據(jù)。第12章將介紹自動(dòng)向搜索引擎提交關(guān)鍵詞查詢的實(shí)例。 操作系統(tǒng)內(nèi)部變量輸出指程序?qū)⑦\(yùn)行結(jié)果輸出到系統(tǒng)內(nèi)部變量中,這類變量包括管道、線程、信號(hào)量等。IPO程序編寫方法 處理數(shù)據(jù)處理(Process)是程序?qū)斎霐?shù)據(jù)進(jìn)行計(jì)算產(chǎn)生輸出結(jié)果的過程。計(jì)算問題的處理方法統(tǒng)稱為“算法”,它是程序最重要的組成部分??梢哉f,算法是一個(gè)程序的靈魂。IPO程序編寫方法是否存在沒有輸入輸出
9、的程序呢?存在,例如,無(wú)限循環(huán),代碼如下。while(True): a = 1IPO程序編寫方法 這個(gè)無(wú)限循環(huán)程序包含兩行語(yǔ)句其中,while()根據(jù)括號(hào)內(nèi)部值的真假?zèng)Q定是否進(jìn)入循環(huán),當(dāng)括號(hào)內(nèi)值為真時(shí),進(jìn)入第2行語(yǔ)句執(zhí)行,否則跳過。由于括號(hào)內(nèi)值被設(shè)定為True(即“真”),代碼將一直執(zhí)行下去。 無(wú)限循環(huán)程序盡管沒有輸入也沒有輸出,它也有價(jià)值。通過不間斷執(zhí)行,該程序快速消耗CPU的計(jì)算資源,可以用來(lái)輔助測(cè)試CPU或系統(tǒng)性能。IPO程序編寫方法 IPO不僅是程序設(shè)計(jì)的基本方法,也是描述計(jì)算問題的方式。以微實(shí)例1.1圓面積的計(jì)算為例,其IPO描述如下:輸入:圓半徑raduis處理:計(jì)算圓面積area
10、 = * radius * radius輸出:圓面積area微實(shí)例1.1圓面積的計(jì)算 可以看到,問題的IPO描述實(shí)際上是對(duì)一個(gè)計(jì)算問題輸入、輸出和求解方式的自然語(yǔ)言描述,為了區(qū)別其他描述方式,本書中所有IPO描述都包括“輸入”、“處理”和“輸出”三個(gè)引導(dǎo)詞。 IPO描述能夠幫助初學(xué)程序設(shè)計(jì)的讀者理解程序設(shè)計(jì)的開始過程,即了解程序的運(yùn)算模式,進(jìn)而建立設(shè)計(jì)程序的基本概念。微實(shí)例1.1圓面積的計(jì)算分析問題分析問題的計(jì)算部分劃分邊界劃分問題的功能邊界設(shè)計(jì)算法設(shè)計(jì)問題的求解算法編寫程序,編寫問題的計(jì)算程序調(diào)試測(cè)試,調(diào)試和測(cè)試程序升級(jí)維護(hù),適應(yīng)問題的升級(jí)維護(hù)理解問題的計(jì)算部分 人工智能(Artificia
11、l Intelligence),簡(jiǎn)稱AI,計(jì)算機(jī)科學(xué)的一個(gè)分支,區(qū)別于人類智能,人工智能指由機(jī)器或軟件所體現(xiàn)的智能 圖靈測(cè)試中,機(jī)器和人分別通過文本途徑(避免計(jì)算機(jī)理解語(yǔ)言能力不足的影響)回答一組獨(dú)立評(píng)判人提出的問題,如果評(píng)判人無(wú)法從回答中區(qū)分機(jī)器和人,則認(rèn)為機(jī)器通過測(cè)試,具備與人相當(dāng)?shù)闹悄?。圖靈測(cè)試并不評(píng)判問題答案的正確性,而是通過評(píng)判答案之間的相似性確定機(jī)器是否具備智能。人工智能和圖靈測(cè)試Python語(yǔ)言版本更迭38谷風(fēng)書苑 更高級(jí)別的3.0系列不兼容早期2.0系列 2008年至今,版本更迭帶來(lái)大量庫(kù)函數(shù)的升級(jí)替換,Python語(yǔ)言的版本更迭痛苦且漫長(zhǎng) 到今天,Python 3.x系列已經(jīng)
12、成為主流Python語(yǔ)言的版本更迭兩個(gè)版本的語(yǔ)法區(qū)別: 修改編碼:3.x系列默認(rèn)采用UTF-8編碼,因此處理中文與英文一樣方便。因此,在表達(dá)UTF-8編碼字符串時(shí),不需要在前面增加u或者U 修改print語(yǔ)句:用print()函數(shù)替換了print語(yǔ)句,兩者功能一樣,格式不同 修改exec語(yǔ)句:用exec()函數(shù)替換了exec語(yǔ)句,兩者功能一樣,格式不同。Python語(yǔ)言的版本更迭 去掉符號(hào):用!=表示“不等于”。 修改比較行為:用, =, 符號(hào)比較兩個(gè)元素時(shí),如果元素之間不存在有意義的順序關(guān)系,將拋出TypeError錯(cuò)誤,不再返回False。因此,這類元素之間的排序也將拋出錯(cuò)誤。 去掉長(zhǎng)整數(shù)
13、類型:3.x系列不再區(qū)分整數(shù)和長(zhǎng)整數(shù)類型,只有一個(gè)int類型,int類型無(wú)取值范圍限制。因此,sys.maxint常量被去掉。本章小結(jié) 修改整數(shù)除法:兩個(gè)整數(shù)的一般除法(/)返回一個(gè)浮點(diǎn)數(shù),不再返回一個(gè)整數(shù),如果想返回整數(shù),用整數(shù)除法(/) 修改八進(jìn)制整數(shù)格式:使用0o開頭,而不再使用0開頭,例如:0o237,而不是0237。 增加關(guān)鍵字:增加as、with、True、False、None為關(guān)鍵字。 去掉raw_input()函數(shù):用input()替代raw_input(),input()返回一個(gè)字符串。本章小結(jié) 修改range()函數(shù):range()功能與2.x系列中xrange()類似,不
14、再顯式返回一個(gè)列表。如果希望返回列表,需要通過list()函數(shù)轉(zhuǎn)換。 修改返回類型:除range()外,zip()、map()、filter()、字典類型的key()方法、value()方法、item()方法不再返回列表類型。 修改異常處理表達(dá):使用as關(guān)鍵字標(biāo)識(shí)異常信息。本章小結(jié) 去掉符號(hào):用!=表示“不等于”。 修改比較行為:用, =, 符號(hào)比較兩個(gè)元素時(shí),如果元素之間不存在有意義的順序關(guān)系,將拋出TypeError錯(cuò)誤,不再返回False。因此,這類元素之間的排序也將拋出錯(cuò)誤。 去掉長(zhǎng)整數(shù)類型:3.x系列不再區(qū)分整數(shù)和長(zhǎng)整數(shù)類型,只有一個(gè)int類型,int類型無(wú)取值范圍限制。因此,sys.maxint常量被去掉。本章小結(jié)Python實(shí)例展示45谷風(fēng)書苑實(shí)例展示