




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、整理整理pptEmail: weng-程序設(shè)計(jì)思想與方法 - 2v教材教材很遺憾很遺憾,暫無合適的中文版教材暫無合適的中文版教材目前使用目前使用: Python Programming: An Introduction to Computer Science. (電子版電子版)How to Think Like a Computer ScientistLearning with Python.(電子版電子版)程序設(shè)計(jì)思想與方法 - 3v計(jì)算機(jī)科學(xué)并非研究計(jì)算機(jī)計(jì)算機(jī)科學(xué)并非研究計(jì)算機(jī)!正如天文學(xué)不是研究天文望遠(yuǎn)鏡正如天文學(xué)不是研究天文望遠(yuǎn)鏡vCS要回答的基本問題要回答的基本問題:什么是可計(jì)算的
2、什么是可計(jì)算的?v對此問題的回答有三種方式對此問題的回答有三種方式:實(shí)際實(shí)際設(shè)計(jì)設(shè)計(jì)一個(gè)解決問題的算法一個(gè)解決問題的算法理論理論分析分析問題的可解性:無解的問題的可解性:無解的,不是能行不是能行可解的可解的通過通過實(shí)驗(yàn)實(shí)驗(yàn)來研究問題來研究問題.3程序設(shè)計(jì)思想與方法 - 4v解決可計(jì)算問題需要教會計(jì)算機(jī)如何解解決可計(jì)算問題需要教會計(jì)算機(jī)如何解決問題決問題v如何教計(jì)算機(jī)解決問題如何教計(jì)算機(jī)解決問題了解計(jì)算機(jī)有哪些基本功能了解計(jì)算機(jī)有哪些基本功能因材施教,設(shè)計(jì)教學(xué)的過程因材施教,設(shè)計(jì)教學(xué)的過程一門與計(jì)算機(jī)進(jìn)行交流的語言一門與計(jì)算機(jī)進(jìn)行交流的語言程序設(shè)計(jì)思想與方法 - 5v學(xué)習(xí)計(jì)算機(jī)科學(xué)解決問題的思想
3、方法學(xué)習(xí)計(jì)算機(jī)科學(xué)解決問題的思想方法, 應(yīng)用于應(yīng)用于其他專業(yè)領(lǐng)域其他專業(yè)領(lǐng)域v不是程序設(shè)計(jì)語言課程不是程序設(shè)計(jì)語言課程!本課程需要編程本課程需要編程,以加深對計(jì)算思維的理解以加深對計(jì)算思維的理解壞消息壞消息:學(xué)習(xí)編程語言需要掌握非常繁瑣的細(xì)節(jié)學(xué)習(xí)編程語言需要掌握非常繁瑣的細(xì)節(jié)好消息:好消息:Python語言非常簡單語言非常簡單,易學(xué)易用易學(xué)易用v也不是算法和數(shù)據(jù)結(jié)構(gòu)課程也不是算法和數(shù)據(jù)結(jié)構(gòu)課程!當(dāng)然會學(xué)習(xí)這方面的一些基本技術(shù)當(dāng)然會學(xué)習(xí)這方面的一些基本技術(shù)5程序設(shè)計(jì)思想與方法 - 6v計(jì)算機(jī)組成計(jì)算機(jī)組成v程序設(shè)計(jì)語言程序設(shè)計(jì)語言v初識初識Python程序設(shè)計(jì)思想與方法 - 7v硬件:計(jì)算機(jī)的軀
4、殼硬件:計(jì)算機(jī)的軀殼v軟件:計(jì)算機(jī)的靈魂軟件:計(jì)算機(jī)的靈魂計(jì)算機(jī),也被稱之為計(jì)算機(jī),也被稱之為“電腦電腦”,是一種能夠按照事先,是一種能夠按照事先存儲的程序自動(dòng)、高效地對數(shù)據(jù)進(jìn)行輸入、處理、存存儲的程序自動(dòng)、高效地對數(shù)據(jù)進(jìn)行輸入、處理、存儲和輸出的系統(tǒng)儲和輸出的系統(tǒng)程序設(shè)計(jì)思想與方法 - 8存儲器存儲器輸入設(shè)備輸入設(shè)備輸出設(shè)備輸出設(shè)備控制器控制器運(yùn)算器運(yùn)算器CPU程序設(shè)計(jì)思想與方法 - 9v保存正在運(yùn)行的程序代碼和數(shù)據(jù)保存正在運(yùn)行的程序代碼和數(shù)據(jù)v內(nèi)存的最小單元是內(nèi)存的最小單元是bitbit,一個(gè),一個(gè)bitbit存儲一個(gè)二存儲一個(gè)二進(jìn)制位。一般進(jìn)制位。一般8 8個(gè)個(gè)bitbit組成一個(gè)組成一
5、個(gè)bytebyte,若干個(gè),若干個(gè)bytebyte組成一個(gè)組成一個(gè)wordwordv在一般的機(jī)器中,內(nèi)存按字節(jié)編址,內(nèi)存大在一般的機(jī)器中,內(nèi)存按字節(jié)編址,內(nèi)存大小也是按字節(jié)計(jì)量小也是按字節(jié)計(jì)量v關(guān)機(jī)后,內(nèi)存的數(shù)據(jù)全部丟失關(guān)機(jī)后,內(nèi)存的數(shù)據(jù)全部丟失程序設(shè)計(jì)思想與方法 - 10CPU (Central Processing Unit) 有兩個(gè)有兩個(gè)部件組成:部件組成:vALU Arithmetic-Logic Unit(運(yùn)(運(yùn)算器)算器)vControl unit (控制器)(控制器)程序設(shè)計(jì)思想與方法 - 11v控制器控制計(jì)算機(jī)的其余部分如何完成控制器控制計(jì)算機(jī)的其余部分如何完成程序的指令程序的
6、指令指揮內(nèi)存和其它部件之間的信息的傳送指揮內(nèi)存和其它部件之間的信息的傳送(包括信息和指令)(包括信息和指令)指揮指揮CPU和輸入輸出設(shè)備之間的控制信息和輸入輸出設(shè)備之間的控制信息的傳送的傳送程序設(shè)計(jì)思想與方法 - 12v控制器中有兩個(gè)寄存器:控制器中有兩個(gè)寄存器:指令寄存器指令寄存器( IR ):保存當(dāng)前正在執(zhí)行的指:保存當(dāng)前正在執(zhí)行的指令令程序計(jì)數(shù)器程序計(jì)數(shù)器 ( PC ):保存下一條要執(zhí)行的:保存下一條要執(zhí)行的指令地址指令地址程序設(shè)計(jì)思想與方法 - 13v取下一條指令:按取下一條指令:按PCPC指定的地址到內(nèi)存指定的地址到內(nèi)存中取出下一條指令,存入中取出下一條指令,存入IRIR。v解碼指令
7、:將指令解碼成一系列的控制解碼指令:將指令解碼成一系列的控制信號信號v執(zhí)行指令:將控制信號發(fā)送給相關(guān)部件,執(zhí)行指令:將控制信號發(fā)送給相關(guān)部件,執(zhí)行相應(yīng)的運(yùn)算執(zhí)行相應(yīng)的運(yùn)算程序設(shè)計(jì)思想與方法 - 14v邏輯電路:執(zhí)行控制器發(fā)出的控制信號邏輯電路:執(zhí)行控制器發(fā)出的控制信號v一組存放正在運(yùn)算的數(shù)據(jù)的寄存器一組存放正在運(yùn)算的數(shù)據(jù)的寄存器程序設(shè)計(jì)思想與方法 - 15v輸入設(shè)備將人能理解的符號轉(zhuǎn)換成計(jì)算輸入設(shè)備將人能理解的符號轉(zhuǎn)換成計(jì)算機(jī)能處理的符號。常用的輸入設(shè)備有:機(jī)能處理的符號。常用的輸入設(shè)備有:鍵盤、鼠標(biāo)、光筆等鍵盤、鼠標(biāo)、光筆等v輸出設(shè)備將計(jì)算機(jī)的輸出轉(zhuǎn)換成人能理輸出設(shè)備將計(jì)算機(jī)的輸出轉(zhuǎn)換成人能
8、理解的輸出。常用的輸出設(shè)備有:顯示器、解的輸出。常用的輸出設(shè)備有:顯示器、打印機(jī)、音響設(shè)備等打印機(jī)、音響設(shè)備等程序設(shè)計(jì)思想與方法 - 16v硬件:計(jì)算機(jī)的軀殼硬件:計(jì)算機(jī)的軀殼v軟件:計(jì)算機(jī)的靈魂軟件:計(jì)算機(jī)的靈魂計(jì)算機(jī),也被稱之為計(jì)算機(jī),也被稱之為“電腦電腦”,是一種能夠按照事先,是一種能夠按照事先存儲的程序自動(dòng)、高效地對數(shù)據(jù)進(jìn)行輸入、處理、存存儲的程序自動(dòng)、高效地對數(shù)據(jù)進(jìn)行輸入、處理、存儲和輸出的系統(tǒng)儲和輸出的系統(tǒng)程序設(shè)計(jì)思想與方法 - 17v軟件決定了計(jì)算機(jī)能做什么軟件決定了計(jì)算機(jī)能做什么.沒有軟件沒有軟件,計(jì)算機(jī)只計(jì)算機(jī)只是一堆廢鐵是一堆廢鐵.v軟件可以分為系統(tǒng)軟件和應(yīng)用軟件。軟件可以
9、分為系統(tǒng)軟件和應(yīng)用軟件。v系統(tǒng)軟件居于計(jì)算機(jī)系統(tǒng)中最靠硬件的部分,它系統(tǒng)軟件居于計(jì)算機(jī)系統(tǒng)中最靠硬件的部分,它將計(jì)算機(jī)的用戶與硬件隔離。系統(tǒng)軟件與具體的將計(jì)算機(jī)的用戶與硬件隔離。系統(tǒng)軟件與具體的應(yīng)用無關(guān),但其他的軟件要通過系統(tǒng)軟件才能發(fā)應(yīng)用無關(guān),但其他的軟件要通過系統(tǒng)軟件才能發(fā)揮作用。常用的系統(tǒng)軟件有操作系統(tǒng)、編譯器、揮作用。常用的系統(tǒng)軟件有操作系統(tǒng)、編譯器、網(wǎng)絡(luò)軟件等。網(wǎng)絡(luò)軟件等。v應(yīng)用軟件是為了支持某一應(yīng)用而開發(fā)的軟件。如應(yīng)用軟件是為了支持某一應(yīng)用而開發(fā)的軟件。如字處理軟件、財(cái)務(wù)軟件等。字處理軟件、財(cái)務(wù)軟件等。程序設(shè)計(jì)思想與方法 - 18v計(jì)算機(jī)組成計(jì)算機(jī)組成v程序設(shè)計(jì)語言程序設(shè)計(jì)語言v初
10、識初識Python程序設(shè)計(jì)思想與方法 - 19v人與計(jì)算機(jī)進(jìn)行交流的一種語言人與計(jì)算機(jī)進(jìn)行交流的一種語言v為什么不用自然語言與計(jì)算機(jī)交互?為什么不用自然語言與計(jì)算機(jī)交互?精確的語法和語義精確的語法和語義無二義性無二義性v有不同層次的程序設(shè)計(jì)語言有不同層次的程序設(shè)計(jì)語言Lu Chaojun, SJTU 19程序設(shè)計(jì)思想與方法 - 20v機(jī)器語言機(jī)器語言v匯編語言匯編語言v高級語言高級語言程序設(shè)計(jì)思想與方法 - 21v是機(jī)器的母語。每種計(jì)算機(jī)都有自己的機(jī)器是機(jī)器的母語。每種計(jì)算機(jī)都有自己的機(jī)器語言。與計(jì)算機(jī)硬件設(shè)計(jì)有關(guān)。語言。與計(jì)算機(jī)硬件設(shè)計(jì)有關(guān)。v每個(gè)語句用一組二進(jìn)制數(shù)表示每個(gè)語句用一組二進(jìn)制數(shù)
11、表示v用機(jī)器語言寫程序是非常困難的,讀機(jī)器語用機(jī)器語言寫程序是非常困難的,讀機(jī)器語言寫的程序也是非常困難的言寫的程序也是非常困難的v機(jī)器語言提供的功能非常簡單機(jī)器語言提供的功能非常簡單程序設(shè)計(jì)思想與方法 - 22v用縮寫和助記符代替機(jī)器語言的用縮寫和助記符代替機(jī)器語言的0和和1的比特串的比特串v和機(jī)器語言一樣,不同類的機(jī)器有不同的匯編語言和機(jī)器語言一樣,不同類的機(jī)器有不同的匯編語言v匯編程序:將匯編語言寫的程序翻譯成機(jī)器語言的匯編程序:將匯編語言寫的程序翻譯成機(jī)器語言的程序程序v解決了機(jī)器語言的可讀性問題,但沒有解決功能簡解決了機(jī)器語言的可讀性問題,但沒有解決功能簡單的問題以及可移植型問題單的
12、問題以及可移植型問題程序設(shè)計(jì)思想與方法 - 23v類似于英語的語言,適合于人理解類似于英語的語言,適合于人理解v功能比機(jī)器語言強(qiáng),解決問題更加容易功能比機(jī)器語言強(qiáng),解決問題更加容易v編譯器:將過程化語言寫的程序(源代碼)翻譯成編譯器:將過程化語言寫的程序(源代碼)翻譯成機(jī)器語言的程序(目標(biāo)代碼)機(jī)器語言的程序(目標(biāo)代碼)v解釋器:逐句解釋源程序并執(zhí)行,不保存目標(biāo)代碼。解釋器:逐句解釋源程序并執(zhí)行,不保存目標(biāo)代碼。程序設(shè)計(jì)思想與方法 - 24main() int i, s;i=1;s=0;C compilerSource programObject program將程序全部翻譯成機(jī)器語言的程序,
13、然后再執(zhí)行。程序設(shè)計(jì)思想與方法 - 25源程序源程序 解釋系統(tǒng)解釋系統(tǒng)(逐句解釋、執(zhí)行)(逐句解釋、執(zhí)行)原始數(shù)據(jù)原始數(shù)據(jù)結(jié)果結(jié)果程序設(shè)計(jì)思想與方法 - 26v具備了一定的機(jī)器獨(dú)立性,使用戶可以具備了一定的機(jī)器獨(dú)立性,使用戶可以專注于解決問題的方法。但某些方面還專注于解決問題的方法。但某些方面還是受到機(jī)器的限制是受到機(jī)器的限制v為了解決移植性問題,為了解決移植性問題,ANSIANSI制訂了一系制訂了一系列的標(biāo)準(zhǔn)列的標(biāo)準(zhǔn)程序設(shè)計(jì)思想與方法 - 27v本課程采用本課程采用Python語言語言v高級程序設(shè)計(jì)語言有很多種,據(jù)說高級程序設(shè)計(jì)語言有很多種,據(jù)說2008年年網(wǎng)上被引用最多的網(wǎng)上被引用最多的1
14、0個(gè)語言是個(gè)語言是(按字母順序按字母順序): C,C+,C#,Java,JavaScript,Perl, PHP,Python,Ruby,SQL27程序設(shè)計(jì)思想與方法 - 28v計(jì)算機(jī)組成計(jì)算機(jī)組成v程序設(shè)計(jì)語言程序設(shè)計(jì)語言v初識初識Python程序設(shè)計(jì)思想與方法 - 29vPython采用編譯采用編譯/解釋混合方式解釋混合方式:先編譯先編譯成字節(jié)碼,再解釋執(zhí)行成字節(jié)碼,再解釋執(zhí)行vPython 軟件軟件: 用戶碼用戶碼/密碼:密碼:hyweng/publicv啟動(dòng)啟動(dòng)Python29程序設(shè)計(jì)思想與方法 - 30v:提示符,提示你可以輸入命令:提示符,提示你可以輸入命令v語句:一條命令,如語句
15、:一條命令,如print “hello”v串:串:“hello world”v數(shù):數(shù):3、10v表達(dá)式:表達(dá)式:3 + 5v賦值:賦值:x = 530程序設(shè)計(jì)思想與方法 - 31v函數(shù):將完成某一功能的語句組合起來函數(shù):將完成某一功能的語句組合起來v函數(shù)定義函數(shù)定義v函數(shù)調(diào)用:函數(shù)調(diào)用: def area( ): x = 5 y = 6 print x * y area( )30程序設(shè)計(jì)思想與方法 - 32v函數(shù)定義函數(shù)定義 v函數(shù)的調(diào)用函數(shù)的調(diào)用 def area(x, y): print x * y area(3, 4)12area(2, 4)8程序設(shè)計(jì)思想與方法 - 33v如果一段程序需
16、要反復(fù)執(zhí)行,可以把它以如果一段程序需要反復(fù)執(zhí)行,可以把它以文件形式保存在外存儲器中。文件形式保存在外存儲器中。v保存在外存儲器中的程序稱為一個(gè)模塊,保存在外存儲器中的程序稱為一個(gè)模塊,也稱為腳本文件或源文件。也稱為腳本文件或源文件。vPYTHON的源文件的后綴名為的源文件的后綴名為pyv程序模擬物理現(xiàn)象程序模擬物理現(xiàn)象:chaos程序程序程序設(shè)計(jì)思想與方法 - 34# File: chaos.py# A simple program illustrating chaotic behavior.def main(): print This program illustrates a chaoti
17、c function x = input(Enter a number between 0 and 1: ) for i in range(10): x = 3.9 * x * (1 - x) print x input(Enter 0 to quit )main()程序設(shè)計(jì)思想與方法 - 35vmain函數(shù):標(biāo)志程序的開始,也可以省函數(shù):標(biāo)志程序的開始,也可以省略略v注釋注釋v變量與賦值變量與賦值v程序的執(zhí)行:一個(gè)個(gè)語句順序執(zhí)行,但程序的執(zhí)行:一個(gè)個(gè)語句順序執(zhí)行,但也可以重復(fù)執(zhí)行某個(gè)語句也可以重復(fù)執(zhí)行某個(gè)語句程序設(shè)計(jì)思想與方法 - 36v將一段語句重復(fù)執(zhí)行多次將一段語句重復(fù)執(zhí)行多次v語法語法
18、for in : 是一個(gè)值的序列是一個(gè)值的序列,如如1,3,5,7,9或或range(10)(即即0,1,9).可以是任何語句序列可以是任何語句序列,用左縮進(jìn)標(biāo)識用左縮進(jìn)標(biāo)識.36程序設(shè)計(jì)思想與方法 - 37v程序的諸語句通常程序的諸語句通常是順序執(zhí)行的是順序執(zhí)行的,但循但循環(huán)語句改變了控制環(huán)語句改變了控制流流,表示一種控制結(jié)表示一種控制結(jié)構(gòu)構(gòu).v控制流可以用流程控制流可以用流程圖直觀表達(dá)圖直觀表達(dá)37取取的下一個(gè)值的下一個(gè)值無無有有程序設(shè)計(jì)思想與方法 - 38v用任何一個(gè)文本編輯器,保存成純文本用任何一個(gè)文本編輯器,保存成純文本格式格式v在在IDLE中的中的file菜單中選擇菜單中選擇new
19、 window,輸入程序的內(nèi)容。輸入結(jié)束后再在輸入程序的內(nèi)容。輸入結(jié)束后再在file菜菜單中選擇單中選擇save或或save as保存到文件中保存到文件中程序設(shè)計(jì)思想與方法 - 39v在在IDLE中執(zhí)行程序中執(zhí)行程序打開文件:在打開文件:在file菜單下選菜單下選open或直接用右鍵點(diǎn)或直接用右鍵點(diǎn)擊文件,并選擇用擊文件,并選擇用IDLE打開,或先打開打開,或先打開IDLE,再在再在file菜單下選擇菜單下選擇open執(zhí)行:在執(zhí)行:在run菜單下選菜單下選run module或直接按或直接按f5vCmd界面中執(zhí)行程序界面中執(zhí)行程序import文件文件程序設(shè)計(jì)思想與方法 - 40vImport時(shí)
20、,系統(tǒng)必須知道到哪里去找那個(gè)文件時(shí),系統(tǒng)必須知道到哪里去找那個(gè)文件v這是通過這是通過PYTHONPATH指定的指定的v安裝安裝PYTHON時(shí),系統(tǒng)會指定缺省時(shí),系統(tǒng)會指定缺省path。缺省的。缺省的路徑是路徑是:Python26Libsite-packagesv添加搜索路徑添加搜索路徑右鍵單擊我的電腦,然后單擊屬性。右鍵單擊我的電腦,然后單擊屬性。 單擊高級選項(xiàng)卡。單擊高級選項(xiàng)卡。 單擊環(huán)境變量。單擊環(huán)境變量。 單擊新建添加一個(gè)新變量名和值。單擊新建添加一個(gè)新變量名和值。 程序設(shè)計(jì)思想與方法 - 41END程序設(shè)計(jì)思想與方法 - 42軟件開發(fā)過程軟件開發(fā)過程程序?qū)嵗簻囟绒D(zhuǎn)換程序?qū)嵗簻囟绒D(zhuǎn)換
21、程序的構(gòu)件程序的構(gòu)件程序?qū)嵗豪⒂?jì)算程序?qū)嵗豪⒂?jì)算程序設(shè)計(jì)思想與方法 - 43v程序設(shè)計(jì)是用精確的語言告訴計(jì)算機(jī)該做什么程序設(shè)計(jì)是用精確的語言告訴計(jì)算機(jī)該做什么,要精確到最細(xì)節(jié)處要精確到最細(xì)節(jié)處.計(jì)算機(jī)只會做很簡單的事情,只能刻板地執(zhí)行程序計(jì)算機(jī)只會做很簡單的事情,只能刻板地執(zhí)行程序.v一方面要寫大型程序一方面要寫大型程序,一方面要精確到細(xì)枝末節(jié)一方面要精確到細(xì)枝末節(jié),這極具挑戰(zhàn)性這極具挑戰(zhàn)性.細(xì)節(jié)上的微小差錯(cuò)可帶來巨大災(zāi)難細(xì)節(jié)上的微小差錯(cuò)可帶來巨大災(zāi)難.例如例如1996年阿麗亞娜年阿麗亞娜5火箭首次鑒定發(fā)射失敗的原因火箭首次鑒定發(fā)射失敗的原因是將一個(gè)浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù)的代碼有問題是將一個(gè)
22、浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù)的代碼有問題.43程序設(shè)計(jì)思想與方法 - 44v需求分析:問題是什么需求分析:問題是什么?v制定程序規(guī)格:程序要做什么制定程序規(guī)格:程序要做什么?對簡單程序描述輸入輸出即可對簡單程序描述輸入輸出即可.v設(shè)計(jì):程序怎么做設(shè)計(jì):程序怎么做?主要任務(wù)是設(shè)計(jì)出滿足規(guī)格的算法主要任務(wù)是設(shè)計(jì)出滿足規(guī)格的算法一般用偽代碼給出總體結(jié)構(gòu)一般用偽代碼給出總體結(jié)構(gòu),不糾纏細(xì)節(jié)不糾纏細(xì)節(jié).v實(shí)現(xiàn):用某種程序設(shè)計(jì)語言翻譯設(shè)計(jì)實(shí)現(xiàn):用某種程序設(shè)計(jì)語言翻譯設(shè)計(jì).v測試與排錯(cuò):測試程序是否如預(yù)期測試與排錯(cuò):測試程序是否如預(yù)期,排除排除bug.v維護(hù):運(yùn)行中還會不斷有問題維護(hù):運(yùn)行中還會不斷有問題.44程序設(shè)計(jì)
23、思想與方法 - 45軟件開發(fā)過程軟件開發(fā)過程程序?qū)嵗簻囟绒D(zhuǎn)換程序?qū)嵗簻囟绒D(zhuǎn)換程序的構(gòu)件程序的構(gòu)件程序?qū)嵗豪⒂?jì)算程序?qū)嵗豪⒂?jì)算程序設(shè)計(jì)思想與方法 - 46v需求:預(yù)報(bào)攝氏度需求:預(yù)報(bào)攝氏度,想知道對應(yīng)華氏度想知道對應(yīng)華氏度.v規(guī)格:輸入攝氏度規(guī)格:輸入攝氏度,顯示輸出華氏度顯示輸出華氏度.兩兩者對應(yīng)關(guān)系是者對應(yīng)關(guān)系是F = ( 9 / 5 ) C + 32.v設(shè)計(jì)算法:簡單的設(shè)計(jì)算法:簡單的IPOv實(shí)現(xiàn):翻譯成實(shí)現(xiàn):翻譯成Python程序程序v測試:常用邊界數(shù)據(jù)測試:常用邊界數(shù)據(jù).如輸入如輸入0, 10046程序設(shè)計(jì)思想與方法 - 47v將完成任務(wù)的步驟分解成計(jì)算機(jī)能完成將完成任務(wù)的
24、步驟分解成計(jì)算機(jī)能完成的動(dòng)作的動(dòng)作v偽代碼寫的算法偽代碼寫的算法:輸入攝氏度:輸入攝氏度:celsius計(jì)算華氏度:計(jì)算華氏度:fahrenheit = 9 / 5 celsius + 32顯示輸出:顯示輸出:fahrenheit47程序設(shè)計(jì)思想與方法 - 48# convert.py# convert Celsius temps to Fahrenheitdef main():celsius = input(What is the Celsius temperature? )fahrenheit = 9.0 / 5.0 * celsius + 32print The temperature
25、is, fahrenheit, degrees Fahrenheit.”main()程序設(shè)計(jì)思想與方法 - 49軟件開發(fā)過程軟件開發(fā)過程程序?qū)嵗簻囟绒D(zhuǎn)換程序?qū)嵗簻囟绒D(zhuǎn)換程序的構(gòu)件程序的構(gòu)件程序?qū)嵗豪⒂?jì)算程序?qū)嵗豪⒂?jì)算程序設(shè)計(jì)思想與方法 - 50v各種名字:各種名字:main、 celsius等等v輸入:輸入: celsius = input(What is the Celsius temperature? )v表達(dá)式:表達(dá)式: 9.0 / 5.0 * celsius + 32v賦值:賦值: fahrenheit = 9.0 / 5.0 * celsius + 32v輸出:輸出: p
26、rint The temperature is, fahrenheit, degrees Fahrenheit.”程序設(shè)計(jì)思想與方法 - 51v標(biāo)識符標(biāo)識符:值值,變量變量,函數(shù)函數(shù),模塊等的名字模塊等的名字.v標(biāo)識符命名規(guī)則標(biāo)識符命名規(guī)則字母下劃線開頭字母下劃線開頭,后接字母數(shù)字下劃線后接字母數(shù)字下劃線大小寫敏感大小寫敏感標(biāo)識符不能是保留詞標(biāo)識符不能是保留詞v良好編程風(fēng)格良好編程風(fēng)格選擇有意義的名字:變量名一般是名詞短語,函數(shù)選擇有意義的名字:變量名一般是名詞短語,函數(shù)名一般是動(dòng)詞短語名一般是動(dòng)詞短語風(fēng)格統(tǒng)一風(fēng)格統(tǒng)一.51程序設(shè)計(jì)思想與方法 - 52v表達(dá)式:與數(shù)學(xué)中類似。如表達(dá)式:與數(shù)學(xué)中
27、類似。如3.9 * x * (1 x)v參加運(yùn)算的可以是常量、變量參加運(yùn)算的可以是常量、變量v運(yùn)算符:運(yùn)算符:+、-、*、/、*(指數(shù)運(yùn)算)(指數(shù)運(yùn)算)v可以用括號改變優(yōu)先級可以用括號改變優(yōu)先級v良好編程風(fēng)格:用空格、括號增加可讀性良好編程風(fēng)格:用空格、括號增加可讀性.52程序設(shè)計(jì)思想與方法 - 53v輸出語句輸出語句print的語法的語法:printprint print , , , print , , , ,vprint的語義的語義:自左向右計(jì)算表達(dá)式的值并在一自左向右計(jì)算表達(dá)式的值并在一行上顯示行上顯示,值之間以空格隔開值之間以空格隔開.最后輸出換行最后輸出換行,但以逗號結(jié)尾時(shí)不換行但以
28、逗號結(jié)尾時(shí)不換行.53程序設(shè)計(jì)思想與方法 - 54v語法語法 = v語義語義: 計(jì)算表達(dá)式計(jì)算表達(dá)式的值的值,存入變量存入變量.v一個(gè)變量可被多次賦值一個(gè)變量可被多次賦值,但總是持有最后一但總是持有最后一次賦值的結(jié)果次賦值的結(jié)果.54程序設(shè)計(jì)思想與方法 - 55v輸入賦值語句輸入賦值語句 = input()v語義語義計(jì)算計(jì)算的值的值(通常是字符串通常是字符串),顯示該值顯示該值等待用戶輸入一個(gè)表達(dá)式等待用戶輸入一個(gè)表達(dá)式(以回車鍵結(jié)束以回車鍵結(jié)束)計(jì)算用戶輸入的表達(dá)式計(jì)算用戶輸入的表達(dá)式,得到得到input( )的值的值把把input( )的值存入的值存入.v良好風(fēng)格良好風(fēng)格用用提醒用戶輸入提
29、醒用戶輸入以空格結(jié)束以空格結(jié)束. (Why?)55程序設(shè)計(jì)思想與方法 - 56v同時(shí)賦值:同時(shí)賦值: , . , = , . ,v語義語義:計(jì)算右邊各表達(dá)式的值計(jì)算右邊各表達(dá)式的值,分別存入左邊的分別存入左邊的對應(yīng)變量對應(yīng)變量.v應(yīng)用同時(shí)賦值交換兩個(gè)變量應(yīng)用同時(shí)賦值交換兩個(gè)變量傳統(tǒng)語言的做法傳統(tǒng)語言的做法:引入一臨時(shí)變量引入一臨時(shí)變量Python可以可以: x, y = y, xvinput( )也可為多個(gè)變量同時(shí)賦值也可為多個(gè)變量同時(shí)賦值x, y = input(“input x, y”)執(zhí)行到此語句時(shí)用戶可輸入:執(zhí)行到此語句時(shí)用戶可輸入:3,4,則,則x=3, y=456程序設(shè)計(jì)思想與方法
30、 - 57軟件開發(fā)過程軟件開發(fā)過程程序?qū)嵗簻囟绒D(zhuǎn)換程序?qū)嵗簻囟绒D(zhuǎn)換程序的構(gòu)件程序的構(gòu)件程序?qū)嵗豪⒂?jì)算程序?qū)嵗豪⒂?jì)算程序設(shè)計(jì)思想與方法 - 58v需求:給定本金和利率,計(jì)算需求:給定本金和利率,計(jì)算10年后的年后的本利之和本利之和v規(guī)格:明年的本金之和規(guī)格:明年的本金之和 = 今年的本金今年的本金*(1+利率)利率)程序設(shè)計(jì)思想與方法 - 59程序設(shè)計(jì)思想與方法 - 60# interest.py# coding = gbkdef main(): print 這是一個(gè)計(jì)算這是一個(gè)計(jì)算10年后本利之和的程序年后本利之和的程序 balance = input(請輸入本金請輸入本金: )
31、rate = input(請輸入利率請輸入利率: ) for i in range(9): balance = balance * (1 + rate) print balancemain()程序設(shè)計(jì)思想與方法 - 61v修改修改interest.py,使它能輸出每一年的,使它能輸出每一年的本利之和。例如本利之和。例如年份年份 本利之和本利之和= =1 1012 102.2 104.5程序設(shè)計(jì)思想與方法 - 62END程序設(shè)計(jì)思想與方法 - 63數(shù)值數(shù)據(jù)的類型數(shù)值數(shù)據(jù)的類型數(shù)學(xué)庫的使用數(shù)學(xué)庫的使用求階乘求階乘整型數(shù)的限制整型數(shù)的限制處理大整型處理大整型類型轉(zhuǎn)換類型轉(zhuǎn)換程序設(shè)計(jì)思想與方法 - 6
32、4v程序存儲與操作的信息稱為數(shù)據(jù)程序存儲與操作的信息稱為數(shù)據(jù).v數(shù)據(jù)類型數(shù)據(jù)類型不同的數(shù)據(jù)表示方式不同的數(shù)據(jù)表示方式不同的操作不同的操作程序設(shè)計(jì)思想與方法 - 65v整數(shù)類型整數(shù)類型int不帶小數(shù)點(diǎn)不帶小數(shù)點(diǎn)可存儲整數(shù)的精確值可存儲整數(shù)的精確值v浮點(diǎn)數(shù)類型浮點(diǎn)數(shù)類型float帶小數(shù)點(diǎn)帶小數(shù)點(diǎn)計(jì)算機(jī)只能存儲浮點(diǎn)數(shù)的近似值計(jì)算機(jī)只能存儲浮點(diǎn)數(shù)的近似值vtype( )函數(shù)函數(shù)返回值的類型返回值的類型65程序設(shè)計(jì)思想與方法 - 66v整型數(shù)在內(nèi)部用補(bǔ)碼表示整型數(shù)在內(nèi)部用補(bǔ)碼表示v正數(shù)的補(bǔ)碼是它的二進(jìn)制表示,負(fù)數(shù)的補(bǔ)碼是它的正數(shù)的補(bǔ)碼是它的二進(jìn)制表示,負(fù)數(shù)的補(bǔ)碼是它的絕對值的二進(jìn)制的每一位取反后再加絕對
33、值的二進(jìn)制的每一位取反后再加1 1。如用。如用8 8位表位表示一個(gè)整數(shù),那么:示一個(gè)整數(shù),那么: 6262補(bǔ)補(bǔ)=0 0111110=0 0111110 -62 -62補(bǔ)補(bǔ)=1 1000010=1 1000010v在補(bǔ)碼表示中,最高位是符號。在補(bǔ)碼表示中,最高位是符號。0 0為正數(shù),為正數(shù),1 1為負(fù)數(shù)為負(fù)數(shù)vPython中的整數(shù)用中的整數(shù)用32位表示位表示, 則則int范圍為范圍為 231 231 1,即,即-2147483648 2147483647程序設(shè)計(jì)思想與方法 - 67v定點(diǎn)表示:小數(shù)點(diǎn)的位置固定不變定點(diǎn)表示:小數(shù)點(diǎn)的位置固定不變v浮點(diǎn)表示:小數(shù)點(diǎn)位置不固定。一個(gè)浮點(diǎn)數(shù)浮點(diǎn)表示:小數(shù)
34、點(diǎn)位置不固定。一個(gè)浮點(diǎn)數(shù)分成尾數(shù)和階碼兩部分。階碼表示小數(shù)點(diǎn)在分成尾數(shù)和階碼兩部分。階碼表示小數(shù)點(diǎn)在該數(shù)中的位數(shù),尾數(shù)表示數(shù)的有效數(shù)值。如該數(shù)中的位數(shù),尾數(shù)表示數(shù)的有效數(shù)值。如十進(jìn)制數(shù)十進(jìn)制數(shù)N=246.135N=246.135,其浮點(diǎn)表示可為:,其浮點(diǎn)表示可為: N = 246135 * 10-3 = 2461350 * 10-4 = 0.246135 * 103 = 0.0246135 * 104程序設(shè)計(jì)思想與方法 - 68v當(dāng)字長一定時(shí),分配給階碼的位數(shù)越多,當(dāng)字長一定時(shí),分配給階碼的位數(shù)越多,表示數(shù)的范圍越大,但分配給尾數(shù)的位數(shù)表示數(shù)的范圍越大,但分配給尾數(shù)的位數(shù)將減少,從而降低數(shù)的精
35、度。將減少,從而降低數(shù)的精度。符號位 階碼 尾數(shù)程序設(shè)計(jì)思想與方法 - 69運(yùn)算符整數(shù)浮點(diǎn)數(shù)加加減減乘乘除(結(jié)果取整)除乘方乘方余數(shù)(商取整時(shí)的)余數(shù)abs()絕對值絕對值69運(yùn)算數(shù)都是整數(shù)運(yùn)算數(shù)都是整數(shù),結(jié)果為整數(shù)結(jié)果為整數(shù);至少有一個(gè)運(yùn)算數(shù)是浮點(diǎn)數(shù)至少有一個(gè)運(yùn)算數(shù)是浮點(diǎn)數(shù),結(jié)果為浮點(diǎn)數(shù)結(jié)果為浮點(diǎn)數(shù).程序設(shè)計(jì)思想與方法 - 70數(shù)值數(shù)據(jù)的類型數(shù)值數(shù)據(jù)的類型數(shù)學(xué)庫的使用數(shù)學(xué)庫的使用求階乘求階乘整型數(shù)的限制整型數(shù)的限制處理大整型處理大整型類型轉(zhuǎn)換類型轉(zhuǎn)換程序設(shè)計(jì)思想與方法 - 71v其他的數(shù)學(xué)運(yùn)算都包含在一個(gè)庫中其他的數(shù)學(xué)運(yùn)算都包含在一個(gè)庫中v庫是系統(tǒng)或其他用戶已經(jīng)寫好的一些有用庫是系統(tǒng)或其他用
36、戶已經(jīng)寫好的一些有用的程序。一般一個(gè)功能表示為一個(gè)函數(shù)的程序。一般一個(gè)功能表示為一個(gè)函數(shù)v數(shù)學(xué)庫數(shù)學(xué)庫:支持各類數(shù)學(xué)計(jì)算的函數(shù)支持各類數(shù)學(xué)計(jì)算的函數(shù).v數(shù)學(xué)庫的引入數(shù)學(xué)庫的引入:import mathv數(shù)學(xué)庫中函數(shù)的調(diào)用數(shù)學(xué)庫中函數(shù)的調(diào)用:例如求平方根例如求平方根math.sqrt()程序設(shè)計(jì)思想與方法 - 72# equation1.pyimport mathdef main(): a, b, c = input(Enter three coefficients:) discRoot = math.sqrt(b * b - 4 * a * c) r1 = (-b + discRoot) /
37、(2 * a) r2 = (-b - discRoot) / (2 * a) print The solutions are:, r1, r2main()72引用數(shù)學(xué)函數(shù)庫中的引用數(shù)學(xué)函數(shù)庫中的函數(shù)函數(shù)程序設(shè)計(jì)思想與方法 - 73pi : 常數(shù)常數(shù) e : 常數(shù)常數(shù)esqrt(x): 平方根平方根sin(x), cos(x), tan(x), asin(x), acos(x), atan(x): 三角函數(shù)三角函數(shù)log(x), log10(x):自然對數(shù)與常用對數(shù)自然對數(shù)與常用對數(shù)exp(x): e的的x次方次方ceil(x): x的最小整數(shù)的最小整數(shù)floor(x): x的最大整數(shù)的最大整數(shù)
38、程序設(shè)計(jì)思想與方法 - 74數(shù)值數(shù)據(jù)的類型數(shù)值數(shù)據(jù)的類型數(shù)學(xué)庫的使用數(shù)學(xué)庫的使用累積累積整型數(shù)的限制整型數(shù)的限制處理大整型處理大整型類型轉(zhuǎn)換類型轉(zhuǎn)換程序設(shè)計(jì)思想與方法 - 75v最終結(jié)果是由逐個(gè)中間結(jié)果累積起來形成的最終結(jié)果是由逐個(gè)中間結(jié)果累積起來形成的.例如例如6!的計(jì)算的計(jì)算:先算先算6 * 5,再再* 4,再再* 1而得而得.1 + 2 + 3 + 4 + + 100:先計(jì)算:先計(jì)算1+2,再加,再加3,v這種累積程序需要一個(gè)存放累積結(jié)果的變量這種累積程序需要一個(gè)存放累積結(jié)果的變量,累積累積過程是一個(gè)循環(huán)過程是一個(gè)循環(huán):初始化初始化累積變量累積變量循環(huán)循環(huán)直至得到最終結(jié)果直至得到最終結(jié)果
39、 計(jì)算計(jì)算累積變量的當(dāng)前累積值累積變量的當(dāng)前累積值程序設(shè)計(jì)思想與方法 - 76v初始化初始化:給累積變量一個(gè)合適的初值給累積變量一個(gè)合適的初值,以便以便進(jìn)入循環(huán)后能正確計(jì)算進(jìn)入循環(huán)后能正確計(jì)算.忘記初始化是一個(gè)常見編程錯(cuò)誤忘記初始化是一個(gè)常見編程錯(cuò)誤!v循環(huán)過程:將一個(gè)個(gè)值累積到累積變量中循環(huán)過程:將一個(gè)個(gè)值累積到累積變量中程序設(shè)計(jì)思想與方法 - 77v具體數(shù)具體數(shù)(如如6)的階乘的階乘fact = 1for f in 6,5,4,3,2,1:fact = fact * fv一般情形一般情形n = input( Enter a number: )fact = 1for f in range(n
40、,1,-1):fact = fact * fprint The factorial of ,n, is,fact程序設(shè)計(jì)思想與方法 - 78v由于乘法結(jié)合律由于乘法結(jié)合律,累積的次序是不重要的累積的次序是不重要的.如按下面的循環(huán)來累積如按下面的循環(huán)來累積:for f in 2,3,4,5,6:for f in 2,4,6,1,3,5:for f in range(2,n+1)vrange()函數(shù)函數(shù)range(n)range(start,n)range(start,n,step)vfact也可初始化為也可初始化為n程序設(shè)計(jì)思想與方法 - 79sum = 0for i in range(1, 1
41、01): sum = sum + iprint sum程序設(shè)計(jì)思想與方法 - 80數(shù)值數(shù)據(jù)的類型數(shù)值數(shù)據(jù)的類型數(shù)學(xué)庫的使用數(shù)學(xué)庫的使用求階乘求階乘整型數(shù)的限制整型數(shù)的限制處理大整型處理大整型類型轉(zhuǎn)換類型轉(zhuǎn)換程序設(shè)計(jì)思想與方法 - 81vint型在內(nèi)存占用的空間是有限的,因型在內(nèi)存占用的空間是有限的,因此能表示的數(shù)值范圍也是有限的。此能表示的數(shù)值范圍也是有限的。vPython中的整數(shù)用中的整數(shù)用32位表示位表示, 只能表只能表示示-2147483648 2147483647v浮點(diǎn)數(shù)同樣也有這個(gè)問題浮點(diǎn)數(shù)同樣也有這個(gè)問題程序設(shè)計(jì)思想與方法 - 82數(shù)值數(shù)據(jù)的類型數(shù)值數(shù)據(jù)的類型數(shù)學(xué)庫的使用數(shù)學(xué)庫的使
42、用求階乘求階乘整型數(shù)的限制整型數(shù)的限制處理大整型處理大整型類型轉(zhuǎn)換類型轉(zhuǎn)換程序設(shè)計(jì)思想與方法 - 83vlong int: 不定長,可擴(kuò)至任意長度不定長,可擴(kuò)至任意長度(當(dāng)然受當(dāng)然受限于存儲器容量限于存儲器容量).如如5L, 1234567890000L注意注意:5L和和5有完全不同的表示有完全不同的表示有長整數(shù)參加的運(yùn)算有長整數(shù)參加的運(yùn)算,結(jié)果為長整數(shù)結(jié)果為長整數(shù).long int運(yùn)算效率遠(yuǎn)低于運(yùn)算效率遠(yuǎn)低于int,因此能用因此能用int就不用就不用long int.v浮點(diǎn)數(shù)很大時(shí)用科學(xué)表示法浮點(diǎn)數(shù)很大時(shí)用科學(xué)表示法:1.234e+12最大數(shù)最大數(shù):1e+308程序設(shè)計(jì)思想與方法 - 84n
43、 = input( Enter a number: )fact = 1Lfor f in range(n,1,-1):fact = fact * fprint The factorial of ,n,“ is , fact階乘增長很快,結(jié)果很容易超出階乘增長很快,結(jié)果很容易超出int的范圍的范圍現(xiàn)在的Python環(huán)境都能自動(dòng)執(zhí)行int到大整數(shù)的轉(zhuǎn)換。當(dāng)超出int范圍時(shí),自動(dòng)轉(zhuǎn)換為大整型程序設(shè)計(jì)思想與方法 - 85數(shù)值數(shù)據(jù)的類型數(shù)值數(shù)據(jù)的類型數(shù)學(xué)庫的使用數(shù)學(xué)庫的使用求階乘求階乘整型數(shù)的限制整型數(shù)的限制處理大整型處理大整型類型轉(zhuǎn)換類型轉(zhuǎn)換程序設(shè)計(jì)思想與方法 - 86vPython只會做同類型的運(yùn)算
44、,運(yùn)算結(jié)果與運(yùn)算數(shù)類型相同。只會做同類型的運(yùn)算,運(yùn)算結(jié)果與運(yùn)算數(shù)類型相同。v在混合類型表達(dá)式中,在混合類型表達(dá)式中,Python自動(dòng)轉(zhuǎn)換自動(dòng)轉(zhuǎn)換: int long floatv人工轉(zhuǎn)換人工轉(zhuǎn)換:利用利用int(), long(), float()小測驗(yàn)小測驗(yàn):求整數(shù)的平均值時(shí)用哪個(gè)好求整數(shù)的平均值時(shí)用哪個(gè)好?avg = sum / countavg = float(sum) / countavg = float(sum / count)v浮點(diǎn)數(shù)取整時(shí)如何做到四舍五入浮點(diǎn)數(shù)取整時(shí)如何做到四舍五入?int(x + 0.5)round()程序設(shè)計(jì)思想與方法 - 87END程序設(shè)計(jì)思想與方法 - 8
45、8文本數(shù)據(jù)文本數(shù)據(jù)簡單的字符串處理簡單的字符串處理字符串的機(jī)內(nèi)表示字符串的機(jī)內(nèi)表示字符串和密碼字符串和密碼格式化輸出格式化輸出文件處理文件處理程序設(shè)計(jì)思想與方法 - 89v計(jì)算機(jī)應(yīng)用從科學(xué)計(jì)算轉(zhuǎn)向信息管理計(jì)算機(jī)應(yīng)用從科學(xué)計(jì)算轉(zhuǎn)向信息管理.v信息管理中大量的數(shù)據(jù)都是文本數(shù)據(jù)信息管理中大量的數(shù)據(jù)都是文本數(shù)據(jù).如姓名,地址,簡歷等等如姓名,地址,簡歷等等v計(jì)算機(jī)中用字符串來表示文本數(shù)據(jù)計(jì)算機(jī)中用字符串來表示文本數(shù)據(jù).89程序設(shè)計(jì)思想與方法 - 90v字符串字符串:字符序列字符序列v字符串字面值字符串字面值:用一對引號用一對引號(單或雙單或雙)標(biāo)明標(biāo)明.“hello world”!#$%&*“
46、漢字也是字符漢字也是字符”v字符串中包含引號怎么辦字符串中包含引號怎么辦?包含單引號包含單引號:串用雙引號括住串用雙引號括住包含雙引號包含雙引號:串用單引號括住串用單引號括住兩者都有兩者都有:更一般的方法是串中用轉(zhuǎn)義字符更一般的方法是串中用轉(zhuǎn)義字符print “Alice said, “Hello, Bob”程序設(shè)計(jì)思想與方法 - 91文本數(shù)據(jù)文本數(shù)據(jù)簡單的字符串處理簡單的字符串處理字符串的機(jī)內(nèi)表示字符串的機(jī)內(nèi)表示字符串和密碼字符串和密碼格式化輸出格式化輸出文件處理文件處理程序設(shè)計(jì)思想與方法 - 92v普通變量的輸入普通變量的輸入num = input(“Enter a number: “)E
47、nter a number : 5.6變量變量num得到值得到值 5.6v如果用同樣的方法輸入字符串如果用同樣的方法輸入字符串str = input(“Enter a string: “)Enter a string: JohnPython會輸出出錯(cuò)信息會輸出出錯(cuò)信息v原因原因:input()是把輸入當(dāng)成表達(dá)式來是把輸入當(dāng)成表達(dá)式來計(jì)算的計(jì)算的!92程序設(shè)計(jì)思想與方法 - 93v輸入時(shí)加上引號輸入時(shí)加上引號str = input(“Enter a string: “)Enter a string: JohnEnter a string: “John”v使用使用raw_input()str =
48、raw_input(“Enter a string: “)Enter a string: John程序設(shè)計(jì)思想與方法 - 94x = input() x = raw_input()“John” Johnx xJohn Johnx = input() x = raw_input()3*4+2 3*4+2x x14 3*4+294程序設(shè)計(jì)思想與方法 - 95字符串可以直接賦值字符串可以直接賦值Str = abcdeStrabcde程序設(shè)計(jì)思想與方法 - 96v字符串是字符序列字符串是字符序列,可通過位置索引訪問每個(gè)字符可通過位置索引訪問每個(gè)字符.v對長度為對長度為n的字符串的字符串,索引可以索引可
49、以是大于是大于0的數(shù)的數(shù):自左向右為自左向右為0 n 1, 或者或者是負(fù)數(shù)是負(fù)數(shù):自右向左為自右向左為 1, 2, 3, n v例如例如:若若str = “Hello Bob”,則則str0或或str 9是是Hstr5或或str 4是是 str8或或str 1是是bstr9或或str 10越界出錯(cuò)越界出錯(cuò)程序設(shè)計(jì)思想與方法 - 97v切段切段:取一個(gè)索引范圍內(nèi)的字符取一個(gè)索引范圍內(nèi)的字符.:所取子串所取子串:位置索引從位置索引從start end 1start或或/和和end可省略可省略,缺省值為串的首尾缺省值為串的首尾例如例如:若若str = “Hello Bob”,則則str0:3是是He
50、lstr5:9是是 Bobstr:5即即str0:5str5:即即str5,9str:即即str0:9程序設(shè)計(jì)思想與方法 - 98v兩字符串的連接兩字符串的連接 + 例如例如:“Hello” + “Bob”得到得到“HelloBob”v一個(gè)字符串的重復(fù)一個(gè)字符串的重復(fù)例如例如:3*“Hi”和和“Hi”*3都得到都得到“HiHiHi”v串長度函數(shù)串長度函數(shù)len()程序設(shè)計(jì)思想與方法 - 99v在一個(gè)數(shù)據(jù)表里查找目標(biāo)在一個(gè)數(shù)據(jù)表里查找目標(biāo)def main():months=“JanFebMarAprMayJunJulAugSepOctNovDec”n = input(“Enter month n
51、umber (1-12): ”)pos = (n-1)*3monthAbbr = monthspos:pos+3print “The month abbreviation is”,monthAbbr+”.”這是簡單查找:利用位置規(guī)律來定位這是簡單查找:利用位置規(guī)律來定位.若是月份全稱怎么辦若是月份全稱怎么辦?程序設(shè)計(jì)思想與方法 - 100文本數(shù)據(jù)文本數(shù)據(jù)簡單的字符串處理簡單的字符串處理字符串的機(jī)內(nèi)表示字符串的機(jī)內(nèi)表示字符串和密碼字符串和密碼格式化輸出格式化輸出文件處理文件處理程序設(shè)計(jì)思想與方法 - 101v與數(shù)值一樣與數(shù)值一樣,計(jì)算機(jī)內(nèi)用二進(jìn)制數(shù)表示每一個(gè)字符計(jì)算機(jī)內(nèi)用二進(jìn)制數(shù)表示每一個(gè)字符因
52、此操作字符串本質(zhì)上仍然是數(shù)值運(yùn)算因此操作字符串本質(zhì)上仍然是數(shù)值運(yùn)算.表示字符的這個(gè)數(shù)值稱為字符的編碼表示字符的這個(gè)數(shù)值稱為字符的編碼.v每個(gè)字符用什么編碼每個(gè)字符用什么編碼?對這個(gè)問題的不同回答就導(dǎo)致了許多不同的字符編碼系對這個(gè)問題的不同回答就導(dǎo)致了許多不同的字符編碼系統(tǒng)統(tǒng)例如例如:字符集只包含字符集只包含AZ,分別用,分別用126表示表示.l“8 5 12 12 15”是什么意思?程序設(shè)計(jì)思想與方法 - 102v不同計(jì)算機(jī)若用不同編碼體系,則彼此不同計(jì)算機(jī)若用不同編碼體系,則彼此無法溝通。無法溝通。v標(biāo)準(zhǔn)化標(biāo)準(zhǔn)化ASCII:單字節(jié)編碼:單字節(jié)編碼l只用到只用到7 7位位: 0 - 127:
53、0 - 1279696個(gè)可打印字符個(gè)可打印字符,32,32個(gè)控制字符個(gè)控制字符l利用利用8 8位可擴(kuò)充位可擴(kuò)充ASCII: 0 - 255ASCII: 0 - 255GB2312:兩字節(jié):兩字節(jié)(6763個(gè)漢字個(gè)漢字)GB18030:最多四字節(jié):最多四字節(jié)(70244個(gè)漢字個(gè)漢字)Unicode:最多四字節(jié):最多四字節(jié).程序設(shè)計(jì)思想與方法 - 103v求給定字符的編碼求給定字符的編碼: ord()ord(a)可得可得97v求給定編碼的字符求給定編碼的字符:chr()chr(97)可得可得av可見可見Python 2.7支持支持ASCII.v支持中文編碼嗎支持中文編碼嗎?print “你好你好”
54、程序設(shè)計(jì)思想與方法 - 104文本數(shù)據(jù)文本數(shù)據(jù)簡單的字符串處理簡單的字符串處理字符串的機(jī)內(nèi)表示字符串的機(jī)內(nèi)表示字符串和密碼字符串和密碼格式化輸出格式化輸出文件處理文件處理程序設(shè)計(jì)思想與方法 - 105v編碼:輸出一串字符對應(yīng)的內(nèi)碼編碼:輸出一串字符對應(yīng)的內(nèi)碼def main(): message=raw_input(Enter the message to encode:) for ch in message: print ord(ch),main()v執(zhí)行時(shí)執(zhí)行時(shí)Enter the message to encode:abcdef97,98,99,10,11,12程序設(shè)計(jì)思想與方法 - 10
55、6v輸出一串?dāng)?shù)字對應(yīng)的字符串稱為解碼輸出一串?dāng)?shù)字對應(yīng)的字符串稱為解碼import stringdef main(): code = raw_input(Enter the code of message: ) message = for numStr in string.split(code): num = eval(numStr) message = message + chr(num) print the decoded message is:, messagemain()v運(yùn)行時(shí)運(yùn)行時(shí)Enter the code of message:97 98 99 100the decoded me
56、ssage is:abcd程序設(shè)計(jì)思想與方法 - 107v字符串與數(shù)字的相互轉(zhuǎn)換字符串與數(shù)字的相互轉(zhuǎn)換eval(字符串):將字符串轉(zhuǎn)換成數(shù)字。(字符串):將字符串轉(zhuǎn)換成數(shù)字。例如:例如:eval(“500”) 返回返回500str(表達(dá)式表達(dá)式) :將數(shù)值當(dāng)作字符串。例將數(shù)值當(dāng)作字符串。例如如:str(3+4*5)vstring.split:string庫中的函數(shù)庫中的函數(shù)程序設(shè)計(jì)思想與方法 - 108vPython提供的提供的string庫包含了很多有用庫包含了很多有用的字符串處理函數(shù)的字符串處理函數(shù)v例如例如split():將字符串拆分成子串將字符串拆分成子串string.split(“H
57、ello string library!”)返回結(jié)果返回結(jié)果:Hello,string,library!string.split(“32,24,25,57”,”,”):按按,拆分拆分返回結(jié)果返回結(jié)果:32,24,25,57程序設(shè)計(jì)思想與方法 - 109capitalize(s): 使字符串使字符串s的首字母大寫的首字母大寫capwords(s): 使字符串使字符串s中的每個(gè)單詞首字母大寫中的每個(gè)單詞首字母大寫center(s, width), ljust(s, width), rjust(s, width): 使使s變成變成width寬度且居中寬度且居中/左對齊左對齊/右對齊右對齊count(
58、s, sub): sub在在s中出現(xiàn)次數(shù)中出現(xiàn)次數(shù)find(s, sub), rfind(s, sub): 在在s中找中找sub的首次的首次/末次出現(xiàn)末次出現(xiàn)join(seq): 將串序列中的串合并成一個(gè)串將串序列中的串合并成一個(gè)串,分隔符默認(rèn)為分隔符默認(rèn)為空格空格lower(s), upper(s): 將串變成小寫將串變成小寫/大寫大寫lstrip(s), rstrip(s): 刪除打頭刪除打頭/收尾的空格收尾的空格replace(s, oldsub, newsub): 在在s中用新子串替換舊子串中用新子串替換舊子串程序設(shè)計(jì)思想與方法 - 110v字符串在機(jī)內(nèi)使用一個(gè)數(shù)字序列表示。字符串在機(jī)
59、內(nèi)使用一個(gè)數(shù)字序列表示。如果不知道采用什么編碼,只看這個(gè)數(shù)如果不知道采用什么編碼,只看這個(gè)數(shù)字序列是猜不出表示的是什么字符串。字序列是猜不出表示的是什么字符串。這就是一種加密機(jī)制,稱為替換法。這就是一種加密機(jī)制,稱為替換法。v字符編碼都是工業(yè)標(biāo)準(zhǔn),不是為了保密字符編碼都是工業(yè)標(biāo)準(zhǔn),不是為了保密目的目的程序設(shè)計(jì)思想與方法 - 111v密碼密碼:為了保密而對信息進(jìn)行編碼為了保密而對信息進(jìn)行編碼.v加密是計(jì)算機(jī)的一個(gè)重要應(yīng)用加密是計(jì)算機(jī)的一個(gè)重要應(yīng)用明文明文密文密文加密加密解密解密程序設(shè)計(jì)思想與方法 - 112va-D、b-E、 c-F、d-G、e-H s-V 、z-C veg. 明文:明文:acc
60、ess control v可變?yōu)椋嚎勺優(yōu)椋?DFFHVV FRQWURO 程序設(shè)計(jì)思想與方法 - 113文本數(shù)據(jù)文本數(shù)據(jù)簡單的字符串處理簡單的字符串處理字符串的機(jī)內(nèi)表示字符串的機(jī)內(nèi)表示字符串和密碼字符串和密碼格式化輸出格式化輸出文件處理文件處理程序設(shè)計(jì)思想與方法 - 114v格式化運(yùn)算符格式化運(yùn)算符%語法語法 % ()語義語義:模板串中用模板串中用%標(biāo)記標(biāo)記“空位空位”,輸出時(shí)用,輸出時(shí)用實(shí)際值填入實(shí)際值填入.v例如例如print “The price is $%0.2f” % (100)The price is $100.00程序設(shè)計(jì)思想與方法 - 115v%.v三種類型字符三種類型字符:deci
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療軟件合同范例
- 出售固定資產(chǎn)合同范本
- 單方出資合作合同范本
- 農(nóng)村大包建房合同范本
- 合同范例效力
- 印刷合同范本 博客
- 廠房消防設(shè)計(jì)合同范本
- 農(nóng)業(yè)合作社入股合同范本
- 醫(yī)生顧問聘用合同范本
- 導(dǎo)演工作室合作合同范本
- 蘇教版五年級下冊數(shù)學(xué)全冊教案設(shè)計(jì)
- 曲臂車作業(yè)安全技術(shù)交底
- 2025年安徽合肥市公安局經(jīng)開分局輔警招聘58人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 小學(xué)五年級地方課程《話說溫州》教學(xué)計(jì)劃
- 《略陽名勝古跡》課件
- 幼兒教師消防安全培訓(xùn)
- 2024年度企業(yè)環(huán)境、社會及治理(ESG)咨詢合同6篇
- 成人多動(dòng)癥的臨床特征
- 綠化養(yǎng)護(hù)服務(wù)協(xié)議
- 機(jī)械加工企業(yè)安全生產(chǎn)應(yīng)急預(yù)案樣本(2篇)
- 術(shù)中獲得性壓力性損傷預(yù)防專家共識2023
評論
0/150
提交評論