《大學(xué)計(jì)算機(jī)基礎(chǔ)與計(jì)算思維》課件 第9章 計(jì)算思維與算法基礎(chǔ)_第1頁(yè)
《大學(xué)計(jì)算機(jī)基礎(chǔ)與計(jì)算思維》課件 第9章 計(jì)算思維與算法基礎(chǔ)_第2頁(yè)
《大學(xué)計(jì)算機(jī)基礎(chǔ)與計(jì)算思維》課件 第9章 計(jì)算思維與算法基礎(chǔ)_第3頁(yè)
《大學(xué)計(jì)算機(jī)基礎(chǔ)與計(jì)算思維》課件 第9章 計(jì)算思維與算法基礎(chǔ)_第4頁(yè)
《大學(xué)計(jì)算機(jī)基礎(chǔ)與計(jì)算思維》課件 第9章 計(jì)算思維與算法基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩73頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《大學(xué)計(jì)算機(jī)基礎(chǔ)與計(jì)算思維》第9章計(jì)算思維與算法基礎(chǔ)目錄CONTENT1計(jì)算思維3程序設(shè)計(jì)語(yǔ)言2算法基礎(chǔ)4Python語(yǔ)言基礎(chǔ)計(jì)算思維9.19.1計(jì)算思維計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念去求解問(wèn)題、設(shè)計(jì)系統(tǒng)和理解人類(lèi)行為的涵蓋了計(jì)算機(jī)科學(xué)之廣度的一系列思維活動(dòng)。

——美國(guó)卡內(nèi)基·梅隆大學(xué),周以真對(duì)計(jì)算思維的理解:計(jì)算思維是一種思維過(guò)程,可以脫離電腦、互聯(lián)網(wǎng),人工智能等技術(shù)獨(dú)立存在。是人的思維,而不是計(jì)算機(jī)的思維,是人用計(jì)算思維來(lái)控制計(jì)算設(shè)備,更高效、快速地完成單純依靠人力無(wú)法完成的任務(wù)。這種思維是未來(lái)世界認(rèn)知、思考的常態(tài)思維方式,它教會(huì)人們理解并駕馭未來(lái)世界。4計(jì)算思維5計(jì)算思維的本質(zhì)是抽象和自動(dòng)化。算法基礎(chǔ)9.29.2.1算法的概念及特征計(jì)算機(jī)算法是利用計(jì)算機(jī)按照一定的方法和步驟解決問(wèn)題的過(guò)程,簡(jiǎn)稱(chēng)為算法。算法具有五個(gè)重要特征:有效性:算法的每一個(gè)步驟都能夠被計(jì)算機(jī)理解和執(zhí)行,而不是抽象和模糊的概念。有窮性:一個(gè)算法必須在執(zhí)行有限步驟后結(jié)束。確定性:算法的每一個(gè)步驟都必須有確切的含義,不能有任何歧義。0個(gè)或多個(gè)輸入至少1個(gè)輸出,也可以有多個(gè)輸出79.2.2算法的表示自然語(yǔ)言:冗長(zhǎng),不夠嚴(yán)謹(jǐn),容易出現(xiàn)歧義,

僅用于描述特別簡(jiǎn)單的問(wèn)題傳統(tǒng)流程圖1966年,Bohra與Jacopini提出N-S流程圖1973年,美國(guó)學(xué)者I.Nassi和B.Shneiderman提出偽代碼89以特定的圖形符號(hào)加上說(shuō)明,表示算法的圖,稱(chēng)為流程圖(也稱(chēng)傳統(tǒng)流程圖)。美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)(ANSI)規(guī)定了一些常用的流程圖符號(hào):傳統(tǒng)流程圖起止框

輸入輸出框

判斷框

處理框

流程線(xiàn)

連接點(diǎn)或【例9-1】畫(huà)出傳統(tǒng)流程圖將百分制成績(jī)轉(zhuǎn)換成二級(jí)制成績(jī),轉(zhuǎn)換規(guī)則為:若成績(jī)大于等于60分,則輸出“合格”,否則輸出“不合格”。10【例9-2】用傳統(tǒng)流程圖

表示求解n!的算法Step1:先求1×2,得到結(jié)果2。Step2:將上一步的結(jié)果2乘以3,得到結(jié)果6。Step3:將上一步的結(jié)果6乘以4,得24。Step4:將上一步的結(jié)果24乘以5,得120。Step5:……1112N-S流程圖:完全去掉了帶箭頭的流程線(xiàn),全部算法寫(xiě)在一個(gè)矩形框內(nèi)。N-S流程圖AB順序結(jié)構(gòu)ABP不成立成立選擇結(jié)構(gòu)A當(dāng)P成立AP成立當(dāng)型循環(huán)直到型循環(huán)循環(huán)結(jié)構(gòu)【例9-3】用N-S流程圖表示求解n!的算法N-S流程圖的優(yōu)點(diǎn):比文字描述更直觀形象,容易理解;比傳統(tǒng)流程圖緊湊易畫(huà),它廢除了流程線(xiàn),整個(gè)算法結(jié)構(gòu)是由各個(gè)基本結(jié)構(gòu)按順序組成的。13輸入nt←1i←1i≤n

t←t×ii←i+1輸出t9.2.3算法的三種基本結(jié)構(gòu)順序結(jié)構(gòu)選擇結(jié)構(gòu)(也稱(chēng)為分支結(jié)構(gòu))循環(huán)結(jié)構(gòu)141.順序結(jié)構(gòu)程序流程:按語(yǔ)句出現(xiàn)的先后順序依次執(zhí)行用途:解決順序性的計(jì)算或處理問(wèn)題例如:15ABaba:入口b:出口輸入課程1的成績(jī);輸入課程2的成績(jī);求平均分;輸出平均分。2.選擇結(jié)構(gòu)程序流程:先做判斷,根據(jù)判斷做出選擇16PBYNabA兩路分支a:入口b:出口PYNabA一路分支a:入口b:出口在一次執(zhí)行過(guò)程中,無(wú)論條件P是否成立,只能執(zhí)行A或B之一,不可能既執(zhí)行A又執(zhí)行B。用途:當(dāng)需要程序基于選擇或比較的結(jié)果選擇兩條路徑中的一條時(shí),可以使用選擇結(jié)構(gòu)。【例9-4】輸入一個(gè)數(shù),求它的絕對(duì)值并輸出173.循環(huán)結(jié)構(gòu)用途:需要重復(fù)執(zhí)行的過(guò)程用此結(jié)構(gòu),可使算法容易編寫(xiě),且結(jié)構(gòu)清晰。18直到型循環(huán)PNYabA當(dāng)型循環(huán)PAYNab循環(huán)結(jié)構(gòu)——當(dāng)型循環(huán)19從a點(diǎn)(入口)進(jìn)入,首先對(duì)條件P進(jìn)行判斷,如果P成立,則執(zhí)行A操作;執(zhí)行完A后重新對(duì)P進(jìn)行判斷,如果P仍然成立,再次執(zhí)行A操作;如此反復(fù)“判斷→執(zhí)行”,當(dāng)條件P不成立時(shí),循環(huán)結(jié)束,從b點(diǎn)(出口)脫離該結(jié)構(gòu)。當(dāng)型循環(huán)PAYNab當(dāng)P成立時(shí)執(zhí)行A循環(huán)結(jié)構(gòu)——直到型循環(huán)20從a點(diǎn)(入口)進(jìn)入,首先執(zhí)行A,然后判斷條件P,如果P成立,則繼續(xù)執(zhí)行A;執(zhí)行完A后重新對(duì)P進(jìn)行判斷,如果P仍然成立,再次執(zhí)行A操作;如此反復(fù)“執(zhí)行→判斷”,直到P不成立時(shí),循環(huán)結(jié)束,最后從b點(diǎn)(出口)脫離該結(jié)構(gòu)。執(zhí)行A直到P不成立為止直到型循環(huán)PNYabA當(dāng)型循環(huán)與直到型循環(huán)的比較21當(dāng)型循環(huán)直到型循環(huán)先判斷循環(huán)條件,后執(zhí)行循環(huán)體先執(zhí)行循環(huán)體,后判斷循環(huán)條件循環(huán)體有可能一次都不執(zhí)行循環(huán)體至少會(huì)執(zhí)行一次共同點(diǎn):條件成立,循環(huán)繼續(xù);條件不成立,循環(huán)結(jié)束。結(jié)構(gòu)內(nèi)一定不存在死循環(huán)。當(dāng)型循環(huán)和直到型循環(huán)是可以互相轉(zhuǎn)換的,凡用當(dāng)型循環(huán)能解決的問(wèn)題,用直到型循環(huán)亦可解決,反之亦然。區(qū)別:小結(jié):程序的三種基本結(jié)構(gòu)三種基本結(jié)構(gòu)的共同點(diǎn):①只有一個(gè)入口(圖中的a點(diǎn)),只有一個(gè)出口(圖中的b點(diǎn));②結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會(huì)被執(zhí)行。一個(gè)算法無(wú)論多么復(fù)雜,都可以分解為由順序、選擇、循環(huán)三種基本結(jié)構(gòu)組合而成的,在基本結(jié)構(gòu)之間不存在向前或向后的跳轉(zhuǎn),流程的轉(zhuǎn)移只存在于一個(gè)基本結(jié)構(gòu)范圍之內(nèi)。由這三種基本結(jié)構(gòu)組成的程序稱(chēng)為結(jié)構(gòu)化程序。22【例9-5】畫(huà)出N-S流程圖將百分制成績(jī)轉(zhuǎn)換成四級(jí)制成績(jī),

轉(zhuǎn)換規(guī)則為:23百分制成績(jī)四級(jí)制成績(jī)85—100分優(yōu)秀70—84分良好60—69分合格59分及以下不合格輸入成績(jī)scorescore>=85YN輸出“優(yōu)秀”score>=70YN輸出“良好”score>=60YN輸出“合格”輸出“不合格”程序設(shè)計(jì)語(yǔ)言9.39.3.1機(jī)器語(yǔ)言機(jī)器語(yǔ)言是用二進(jìn)制代碼表示的、計(jì)算機(jī)能直接識(shí)別和執(zhí)行的一種機(jī)器指令的集合,被稱(chēng)為第一代程序設(shè)計(jì)語(yǔ)言。機(jī)器語(yǔ)言指令由操作碼和操作數(shù)兩部分組成。251011000000001100將12放入累加器A中0010110000001001將9與累加器A中的值相加,

得到的結(jié)果仍然存入A中11110100結(jié)束優(yōu)點(diǎn):能直接被計(jì)算機(jī)識(shí)別和執(zhí)行,執(zhí)行速度快。缺點(diǎn):①可移植性差。

②程序員需要記住大量二進(jìn)制形式的指令代碼及其含義,

難記、難書(shū)寫(xiě)、難閱讀,容易出錯(cuò)。9.3.2匯編語(yǔ)言用助記符代替機(jī)器指令的操作碼,用地址符號(hào)或標(biāo)號(hào)代替操作數(shù)的地址,由此誕生了匯編語(yǔ)言,被稱(chēng)為第二代程序設(shè)計(jì)語(yǔ)言。26MOVA,12將12放入累加器A中ADDA,9將9與累加器A中的值相加,得到的結(jié)果仍然存入A中HLT結(jié)束用匯編語(yǔ)言編寫(xiě)的程序不能直接被計(jì)算機(jī)識(shí)別和執(zhí)行,必須通過(guò)匯編程序的翻譯,才能生成可以被計(jì)算機(jī)識(shí)別和執(zhí)行的二進(jìn)制代碼。優(yōu)點(diǎn):比機(jī)器語(yǔ)言容易理解、記憶;執(zhí)行速度快。缺點(diǎn):仍然需要記住大量的助記符;程序的可移植性差。9.3.3高級(jí)語(yǔ)言高級(jí)語(yǔ)言是一種獨(dú)立于機(jī)器,比較接近于英語(yǔ)和數(shù)學(xué)公式的編程語(yǔ)言,被稱(chēng)為第三代程序設(shè)計(jì)語(yǔ)言。高級(jí)語(yǔ)言并不是特指某一種具體的語(yǔ)言,而是包括很多種編程語(yǔ)言,如流行的Python、Java、C、C++、C#、Cobol、Fortran、Basic等,這些語(yǔ)言的語(yǔ)法、命令格式都不相同。用高級(jí)語(yǔ)言編寫(xiě)的程序稱(chēng)為源代碼或源程序,它不能直接被計(jì)算機(jī)識(shí)別和運(yùn)行,必須將其翻譯成機(jī)器能識(shí)別的二進(jìn)制代碼才能執(zhí)行。這種“翻譯”通常有兩種方式:編譯方式和解釋方式,分別通過(guò)編譯程序和解釋程序完成。27高級(jí)語(yǔ)言面向過(guò)程的程序設(shè)計(jì)語(yǔ)言

例如:C、Fortran、Basic、Pascal等面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言提供了類(lèi)、對(duì)象等成分有抽象性、封裝性、繼承性和多態(tài)性四個(gè)主要特點(diǎn)常見(jiàn)的面向?qū)ο蟮母呒?jí)語(yǔ)言有Python、Java、C++等28Python語(yǔ)言基礎(chǔ)9.49.4.1Python語(yǔ)言簡(jiǎn)介Python是一種解釋型、面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,1989年底發(fā)明。2022年2月公布的TIOBE編程語(yǔ)言排行榜中,Python以15.33%的占有率排名第一。Python目前包含兩個(gè)主要的版本:Python2和Python3,兩個(gè)版本之間互不兼容。本課程以Python3為例。309.4.2Python開(kāi)發(fā)環(huán)境配置下載Python安裝程序/downloads/根據(jù)向?qū)崾?,安裝Python應(yīng)用程序在安裝完P(guān)ython后,會(huì)自動(dòng)安裝IDLE(IntegratedDevelopmentandLearningEnvironment,集成開(kāi)發(fā)和學(xué)習(xí)環(huán)境),它是Python的集成開(kāi)發(fā)環(huán)境,提供語(yǔ)法加亮、段落縮進(jìn)、基本文本編輯、TABLE鍵控制、調(diào)試程序等基本功能319.4.3開(kāi)發(fā)和運(yùn)行Python程序開(kāi)發(fā)和運(yùn)行Python程序一般包含以下兩種方式:(1)交互式,在Python解釋器的命令行窗口中,輸入一行代碼并回車(chē),會(huì)立刻執(zhí)行,立即看到結(jié)果,一般用于調(diào)試少量代碼。(2)文件式,編寫(xiě)Python程序并保存在一個(gè)或多個(gè)源代碼文件中,然后通過(guò)Python解釋器來(lái)執(zhí)行。適用于較復(fù)雜的應(yīng)用程序的開(kāi)發(fā)。329.4.4Python語(yǔ)言基礎(chǔ)1.Python程序的構(gòu)成Python程序由模塊組成。一個(gè)模塊對(duì)應(yīng)一個(gè)Python源文件,其擴(kuò)展名是.py。模塊由語(yǔ)句組成。運(yùn)行Python程序時(shí),按照模塊中語(yǔ)句的順序依次執(zhí)行。語(yǔ)句是Python程序的基本構(gòu)成元素,用于創(chuàng)建對(duì)象、變量賦值、調(diào)用函數(shù)、控制分支、創(chuàng)建循環(huán)等。Python語(yǔ)句分為簡(jiǎn)單語(yǔ)句和復(fù)合語(yǔ)句。簡(jiǎn)單語(yǔ)句包括表達(dá)式語(yǔ)句、賦值語(yǔ)句等。復(fù)合語(yǔ)句詳見(jiàn)9.4.5節(jié)。33Python語(yǔ)句的書(shū)寫(xiě)規(guī)則(1)一般情況下一行寫(xiě)一條語(yǔ)句。如果語(yǔ)句太長(zhǎng),需要寫(xiě)成多行,可以使用續(xù)行符(\)。如果需要在一行寫(xiě)多條語(yǔ)句,用分號(hào)隔開(kāi)。(2)從第一列開(kāi)始書(shū)寫(xiě),前面不能有任何空格,否則會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤。注釋語(yǔ)句可以從任意位置開(kāi)始。(3)復(fù)合語(yǔ)句的構(gòu)造體必須縮進(jìn)??s進(jìn)是Python語(yǔ)言的強(qiáng)制語(yǔ)法規(guī)范,通常用四個(gè)空格表示縮進(jìn)。342.注釋注釋是對(duì)代碼的解釋和說(shuō)明,其目的是讓人們能夠更容易理解代碼。

可分為:序言性注釋和功能性注釋。Python的注釋分為兩種:?jiǎn)涡凶⑨專(zhuān)?開(kāi)頭,到本行末尾結(jié)束。多行注釋?zhuān)匀齻€(gè)單引號(hào)(或三個(gè)雙引號(hào))開(kāi)頭,并以三個(gè)單引號(hào)(或三個(gè)雙引號(hào))結(jié)束,夾在它們之間的多行內(nèi)容為注釋。35運(yùn)行結(jié)果:HelloWorld!Pythonprogram.3.Python對(duì)象計(jì)算機(jī)程序通常用于處理各種類(lèi)型的數(shù)據(jù)(即對(duì)象),不同的數(shù)據(jù)屬于不同的數(shù)據(jù)類(lèi)型,支持不同的運(yùn)算操作。在Python中,一切皆為對(duì)象。為了引用對(duì)象,必須通過(guò)賦值語(yǔ)句,把對(duì)象賦值給變量。語(yǔ)法格式為:36變量名=字面量或表達(dá)式>>>a=2#將字面量2賦值給變量a>>>b=5>>>c=a+b#將表達(dá)式a+b的計(jì)算結(jié)果(即7)賦值給變量c>>>c#顯示變量c的值,也可用print(c)7#沒(méi)有>>>提示符的行表示運(yùn)行結(jié)果4.標(biāo)識(shí)符及命名規(guī)則標(biāo)識(shí)符是變量、函數(shù)、類(lèi)、模塊和其他對(duì)象的名稱(chēng),其命名規(guī)則為:(1)標(biāo)識(shí)符只能由字母、數(shù)字和下劃線(xiàn)組成,且第一個(gè)字符必須是字母或下劃線(xiàn)。(2)區(qū)分大小寫(xiě)。(3)不能使用Python語(yǔ)言的保留關(guān)鍵字。

關(guān)鍵字是預(yù)定義的保留標(biāo)識(shí)符,有特殊的語(yǔ)法含義。37Python3的關(guān)鍵字FalseawaitelseimportpassNonebreakexceptinraiseTrueclassfinallyisreturnandcontinueforlambdatryasdeffromnonlocalwhileassertdelglobalnotwithasyncelififoryield385.表達(dá)式、運(yùn)算符表達(dá)式是用于計(jì)算的式子,由運(yùn)算符(如+、-、*、/等)和操作數(shù)(如常量、變量等)構(gòu)成。如果一個(gè)表達(dá)式中包含多個(gè)運(yùn)算符,則運(yùn)算順序取決于運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。優(yōu)先級(jí)表示不同運(yùn)算符參與運(yùn)算時(shí)的先后順序,先進(jìn)行優(yōu)先級(jí)高的運(yùn)算,再進(jìn)行優(yōu)先級(jí)低的運(yùn)算。結(jié)合性是指當(dāng)一個(gè)表達(dá)式中出現(xiàn)多個(gè)優(yōu)先級(jí)相同的運(yùn)算符時(shí),先執(zhí)行哪個(gè)運(yùn)算符:先執(zhí)行左邊的叫左結(jié)合,先執(zhí)行右邊的叫右結(jié)合。用戶(hù)可以使用圓括號(hào)()強(qiáng)制改變運(yùn)算順序。39(1)算術(shù)運(yùn)算符40運(yùn)算符含義示例及說(shuō)明**冪運(yùn)算符2**5表示2的5次方+-正號(hào)、負(fù)號(hào)

*/乘法、除法11/4的結(jié)果為2.75//整數(shù)除法11//4的結(jié)果為2(結(jié)果為向下取整的整數(shù))%整數(shù)取余(也稱(chēng)為模運(yùn)算)11%4的結(jié)果為3(即:11÷4的余數(shù))+-加法、減法

(2)賦值運(yùn)算符簡(jiǎn)單賦值運(yùn)算符=

例如c=a+b表示將a+b的運(yùn)算結(jié)果賦值給c。復(fù)合賦值運(yùn)算符,包括+=、-=、*=、/=、%=、**=、//=例如:a+=b等效于a=a+b,即:將a+b的運(yùn)算結(jié)果賦值給變量a。a**=b等效于a=a**b,即:將a的b次方的計(jì)算結(jié)果賦值給變量a。41賦值運(yùn)算符使用示例42>>>a=2#將2賦值給變量a>>>b=3>>>c=a+b>>>c#顯示變量c的值,也可用print(c)5>>>a+=b#將a+b的結(jié)果賦值給a>>>a5>>>a//=b#將a//b的結(jié)果(即5除以3的結(jié)果向下取整)賦值給a>>>a1(3)比較運(yùn)算符(關(guān)系運(yùn)算符)43運(yùn)算符含義示例及說(shuō)明><>=<=大于小于大于等于小于等于x>=y若x大于等于y,則返回True,否則返回False==!=等于不等于x==y若x等于y,則返回True,否則返回False>>>a=2>>>b=3>>>a<bTrue>>>a+4<bFalse>>>a+1<=bTrue(4)邏輯運(yùn)算符Python提供三個(gè)邏輯運(yùn)算符:not:邏輯非and:邏輯與or:邏輯或44abnotaaandba

orbFalseFalseTrueFalseFalseFalseTrueTrueFalseTrueTrueFalseFalseFalseTrueTrueTrueFalseTrueTrue>>>a=True>>>b=False>>>print(aorb)True>>>print(not(aandb))True>>>print(2<5and3<4)True6.數(shù)據(jù)類(lèi)型在Python中,所有對(duì)象都有一個(gè)數(shù)據(jù)類(lèi)型。只有給數(shù)據(jù)賦予明確的數(shù)據(jù)類(lèi)型,計(jì)算機(jī)才能對(duì)數(shù)據(jù)進(jìn)行處理運(yùn)算。Python的數(shù)據(jù)類(lèi)型包括:內(nèi)置數(shù)據(jù)類(lèi)型,包括:數(shù)字類(lèi)型(又分為整型、浮點(diǎn)型、復(fù)數(shù)型、布爾型)、字符串、列表、元組、字典自定義數(shù)據(jù)類(lèi)型45(1)數(shù)字類(lèi)型①int(整型)表示整數(shù)的數(shù)據(jù)類(lèi)型。整型數(shù)據(jù)可以為任意長(zhǎng)度的位數(shù),只受限于計(jì)算機(jī)內(nèi)存。例如:125、-64、0都是十進(jìn)制整數(shù)。二進(jìn)制、八進(jìn)制、十六進(jìn)制的整數(shù),分別需要在數(shù)值前加0B、0O、0X作為前綴,例如:0X1f2是十六進(jìn)制整數(shù)。②float(浮點(diǎn)型)表示實(shí)數(shù)的數(shù)據(jù)類(lèi)型,其精度和機(jī)器有關(guān)。例如:1.23、-34.56、0.26、5.0、3.567e-12(表示3.567×10-12)、8.73e6(表示8.73×106)。小數(shù)點(diǎn)前后的0可以省略,例如5.0、0.26可以分別寫(xiě)成5.、.26。46數(shù)字類(lèi)型③complex(復(fù)數(shù)類(lèi)型)復(fù)數(shù)由實(shí)數(shù)部分和虛數(shù)部分構(gòu)成,可以用a+bj,或者complex(a,b)表示,復(fù)數(shù)的實(shí)部a和虛部b都是浮點(diǎn)型。④bool(布爾類(lèi)型)布爾類(lèi)型是特殊的整型,它的值只有兩個(gè):True和False。布爾型用于邏輯運(yùn)算,如果將布爾值進(jìn)行數(shù)值運(yùn)算,True會(huì)被當(dāng)作整型1,F(xiàn)alse會(huì)被當(dāng)作整型0。47使用type()函數(shù)查看某個(gè)對(duì)象的類(lèi)型>>>a=765>>>type(a)<class'int'>#此運(yùn)行結(jié)果表明變量a是整型>>>b=7.6e-8>>>type(b)

<class'float'>#此運(yùn)行結(jié)果表明變量b是浮點(diǎn)型>>>c=2+3j>>>type(c)

<class'complex'>#此運(yùn)行結(jié)果表明變量c是復(fù)數(shù)類(lèi)型>>>e=True>>>type(e)<class'bool'>#此運(yùn)行結(jié)果表明變量e是布爾型48(2)字符串類(lèi)型字符串(str)是一個(gè)有序的字符集合。Python的字符串字面量可以使用以下四種方式定義:①一對(duì)單引號(hào):包含在單引號(hào)之間的若干個(gè)字符即為字符串,該字符串可以包含雙引號(hào)。②一對(duì)雙引號(hào):包含在雙引號(hào)之間的若干個(gè)字符即為字符串,該字符串可以包含單引號(hào)。③以三單引號(hào)(三個(gè)連續(xù)的單引號(hào),即:''')開(kāi)頭、并以三單引號(hào)結(jié)尾,包含在其中的字符串可以跨行。④以三雙引號(hào)(""")開(kāi)頭、并以三雙引號(hào)結(jié)尾,包含在其中的字符串可以跨行。49字符串舉例>>>x='''Thisisthefirstline....Thisisthesecondline.'''#三個(gè)點(diǎn)是系統(tǒng)提示符,提示用戶(hù)繼續(xù)

輸入字符串的內(nèi)容>>>print(x)Thisisthefirstline.Thisisthesecondline.>>>y='ab"c'#該字符串中包含了一個(gè)雙引號(hào)>>>print(y)ab"c509.4.5Python程序流程控制1.程序編寫(xiě)的IPO模式無(wú)論程序的規(guī)模如何,每個(gè)程序都可以分解為:Input(輸入)、Process(處理)、Output(輸出)三個(gè)部分,簡(jiǎn)稱(chēng)IPO。51輸入(Input)數(shù)據(jù)計(jì)算和處理(Process)輸出(Output)IPO形式程序結(jié)構(gòu)如何從鍵盤(pán)獲取程序的輸入input()函數(shù):從控制臺(tái)獲取用戶(hù)的鍵盤(pán)輸入,其返回值為字符串類(lèi)型int()函數(shù):將輸入數(shù)據(jù)轉(zhuǎn)換為整型float()函數(shù):將輸入數(shù)據(jù)轉(zhuǎn)換為浮點(diǎn)型52>>>a=input("請(qǐng)輸入一個(gè)數(shù):")#雙引號(hào)中的內(nèi)容是程序運(yùn)行時(shí)的輸入提示信息請(qǐng)輸入一個(gè)數(shù):7#本行是運(yùn)行結(jié)果,7是從鍵盤(pán)輸入的數(shù)據(jù)>>>print(a/2)#執(zhí)行本行代碼會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤,因?yàn)樽址荒茏龀ㄟ\(yùn)算>>>type(a)<class'str'>#運(yùn)行結(jié)果表明變量a是字符串型>>>a=int(a)#將變量a轉(zhuǎn)換為整型>>>print(a/2)#整型數(shù)據(jù)可做除法計(jì)算,得到3.53.5>>>type(a)<class'int'>#運(yùn)行結(jié)果表明變量a已被轉(zhuǎn)換為整型2.順序結(jié)構(gòu)順序結(jié)構(gòu)的程序,其執(zhí)行的順序是:按各語(yǔ)句的書(shū)寫(xiě)順序依次執(zhí)行。【例9-6】用Python編程實(shí)現(xiàn):計(jì)算一位同學(xué)的兩門(mén)課的平均分。53score1=input("請(qǐng)輸入第一門(mén)課的成績(jī):")score1=float(score1)#將輸入的數(shù)據(jù)轉(zhuǎn)換為浮點(diǎn)型score2=input("請(qǐng)輸入第二門(mén)課的成績(jī):")score2=float(score2)avg=(score1+score2)/2print("平均分為:",avg)3.選擇結(jié)構(gòu)選擇結(jié)構(gòu)可以根據(jù)條件來(lái)控制程序執(zhí)行哪個(gè)分支,也稱(chēng)為分支結(jié)構(gòu)。Python的選擇結(jié)構(gòu)包括單分支、雙分支、多分支等形式。(1)單分支語(yǔ)法格式:54if

判斷條件:

語(yǔ)句/語(yǔ)句塊此處必須縮進(jìn)(按Tab鍵或空格鍵,但不能混用),且多條語(yǔ)句的縮進(jìn)對(duì)齊必須一致。功能:當(dāng)“判斷條件”的值為T(mén)rue時(shí),執(zhí)行if后的“語(yǔ)句/語(yǔ)句塊”,否則不做任何操作,程序流程直接轉(zhuǎn)到if語(yǔ)句的結(jié)束點(diǎn)?!纠?-7】從鍵盤(pán)輸入一個(gè)數(shù),求它的絕對(duì)值并輸出55data=float(input("請(qǐng)輸入一個(gè)數(shù):"))ifdata<0:data=-dataprint("該數(shù)的絕對(duì)值是:",data)(2)雙分支語(yǔ)法格式:功能:當(dāng)“判斷條件”的值為真(True)時(shí),執(zhí)行if后的“語(yǔ)句/語(yǔ)句塊1”,否則執(zhí)行else后的“語(yǔ)句/語(yǔ)句塊2”。56if

判斷條件:

語(yǔ)句/語(yǔ)句塊1else:語(yǔ)句/語(yǔ)句塊2【例9-8】百分制成績(jī)轉(zhuǎn)換為二級(jí)制成績(jī)從鍵盤(pán)輸入一個(gè)百分制成績(jī),將其轉(zhuǎn)換為二級(jí)制成績(jī)(合格或不合格)并輸出。57score=float(input("請(qǐng)輸入百分制成績(jī):"))ifscore>=60:level="合格"else:level="不合格"print("成績(jī)?yōu)椋?,level)(3)多分支58語(yǔ)法格式:if

判斷條件1:

語(yǔ)句/語(yǔ)句塊1elif判斷條件2:語(yǔ)句/語(yǔ)句塊2……elif

判斷條件n:語(yǔ)句/語(yǔ)句塊n[else:語(yǔ)句/語(yǔ)句塊n+1]功能:若“判斷條件1”為T(mén)rue,則執(zhí)行“語(yǔ)句/語(yǔ)句塊1”,然后整個(gè)if結(jié)構(gòu)結(jié)束;否則,檢查“判斷條件2”,若為T(mén)rue,則執(zhí)行“語(yǔ)句/語(yǔ)句塊2”,然后整個(gè)if結(jié)構(gòu)結(jié)束;……若所有判斷條件都為False,則執(zhí)行else分支下的“語(yǔ)句/語(yǔ)句塊n”。其中,[]表示else分支是可選部分。【例9-9】百分制成績(jī)轉(zhuǎn)換為四級(jí)制成績(jī)并輸出59score=float(input("請(qǐng)輸入百分制成績(jī):"))ifscore>=85:level="優(yōu)秀"elifscore>=70:level="良好"elifscore>=60:level="合格"else:level="不合格"print("成績(jī)?yōu)椋?,level)百分制成績(jī)四級(jí)制成績(jī)85—100分優(yōu)秀70—84分良好60—69分合格59分及以下不合格(4)if語(yǔ)句的嵌套在if語(yǔ)句中又包含一個(gè)或多個(gè)if語(yǔ)句,稱(chēng)為if語(yǔ)句的嵌套。60if判斷條件1:if判斷條件11:

語(yǔ)句/語(yǔ)句塊11[else:

語(yǔ)句/語(yǔ)句塊12][else:if判斷條件21:

語(yǔ)句/語(yǔ)句塊21[else:

語(yǔ)句/語(yǔ)句塊22]]【例9-10】對(duì)【例9-9】的程序進(jìn)行完善增加對(duì)用戶(hù)輸入的非法數(shù)據(jù)(負(fù)數(shù)或者大于100的數(shù))的判斷,并輸出相應(yīng)的提示信息。61score=float(input("請(qǐng)輸入百分制成績(jī):"))ifscore>100orscore<0:print("輸入的不是百分制成績(jī)。")else:ifscore>=85:level="優(yōu)秀"elifscore>=70:level="良好"elifscore>=60:level="合格"else:level="不合格"print("成績(jī)?yōu)椋?,level)4.循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)用來(lái)重復(fù)執(zhí)行一條或多條語(yǔ)句。for語(yǔ)句:常用于循環(huán)次數(shù)事先已知的情況while語(yǔ)句:常用于循環(huán)次數(shù)事先未知的情況62(1)for語(yǔ)句語(yǔ)法格式:for語(yǔ)句用于遍歷對(duì)象集合中的元素,并對(duì)集合中的每個(gè)元素執(zhí)行一次循環(huán)體語(yǔ)句。

當(dāng)對(duì)象集合中的所有元素完成迭代后,程序流程傳給for之后的下一個(gè)語(yǔ)句。在進(jìn)行計(jì)數(shù)循環(huán)時(shí),for語(yǔ)句通常會(huì)和range()函數(shù)搭配使用。63for

變量

in對(duì)象集合:循環(huán)體語(yǔ)句/語(yǔ)句塊#必須縮進(jìn)range()函數(shù)是Python的一個(gè)內(nèi)置函數(shù),功能是:創(chuàng)建一個(gè)整數(shù)列表。格式為:range(start,stop,step),三個(gè)參數(shù)的含義為:①start:起點(diǎn),可以省略。若省略,表示從0開(kāi)始。②stop:終點(diǎn),通常和start搭配使用,表示生成從start開(kāi)始(包括start)到stop結(jié)束(不包括stop)范圍內(nèi)的整數(shù)。

例如:range(1,10),會(huì)生成序列[1,2,3,4,5,6,7,8,9]。

stop也可單獨(dú)使用,例如range(5),會(huì)生成[0,1,2,3,4]。③

step:步長(zhǎng),即:后一個(gè)數(shù)和前一個(gè)數(shù)的差。若省略步長(zhǎng),則默認(rèn)為1。例如range(1,10,2)生成[1,3,5,7,9];range(1,10,3)生成[1,4,7]。64【例9-11】編程求5!65print("計(jì)算5!")result=1#保存階乘結(jié)果的變量foriinrange(1,6):

result=result*iprint("結(jié)果為",result)n=input("請(qǐng)輸入一個(gè)整數(shù):")n=int(n)result=1foriinrange(1,n+1):result=result*iprint("結(jié)果為",result)【例9-12】編程求n!【例9-13】求2到n之間的偶數(shù)之和求和范圍包括2,若n為偶數(shù),也包括n。66n=input("請(qǐng)輸入一個(gè)整數(shù):")n=int(n)result=0foriinrange(2,n+1,2):result=result+iprint("偶數(shù)之和為",result)(2)while語(yǔ)句語(yǔ)法格式:功能:先判斷循環(huán)條件,若為T(mén)rue,則執(zhí)行循環(huán)體,然后再次判斷循環(huán)條件,若仍為T(mén)rue,則再次執(zhí)行循環(huán)體,若為False,則循環(huán)結(jié)束。特別注意:在循環(huán)體中,應(yīng)包含改變循環(huán)條件的語(yǔ)句,以使循環(huán)趨于結(jié)束,避免死循環(huán)(無(wú)限循環(huán))。67while循環(huán)條件:

循環(huán)體語(yǔ)句/語(yǔ)句塊#必須縮進(jìn)【例9-14】利用while循環(huán)求n!這是一個(gè)已知循環(huán)次數(shù)(n次循環(huán))的累乘問(wèn)題,使用for語(yǔ)句編程更好,但也可使用while語(yǔ)句編程。68n=input("請(qǐng)輸入一個(gè)整數(shù):")n=int(n)result=1i=1#為循環(huán)控制變量i賦初值whilei<=n:#當(dāng)條件i<=n成立時(shí),執(zhí)行循環(huán)體

result=result*i

i=i+1#改變循環(huán)控制變量i的值,以使循環(huán)趨于結(jié)束print("結(jié)果為",result)【例9-15】根據(jù)公式求自然常數(shù)e的值69當(dāng)最后一項(xiàng)的值小于10-5時(shí)停止計(jì)算為求和結(jié)果變量e賦值1為項(xiàng)數(shù)變量n賦值1為通項(xiàng)變量term賦值1term>=10-5

累加當(dāng)前項(xiàng)e=e+term將項(xiàng)數(shù)n增加1計(jì)算下一項(xiàng)term=term/n輸出計(jì)算結(jié)果(變量e)e=1#用于保存求和的結(jié)果n=1term=1#用于保存參與求和的每一項(xiàng)whileterm>=1.0e-5:e=e+termn=n+1term=term/nprint("e=",e)print("e=",'%.5f'%e)#保留5位小數(shù)print("e=",round(e,5))#保留5位小數(shù)5.空語(yǔ)句pass如果在需要子語(yǔ)句塊的地方不寫(xiě)任何語(yǔ)句,解釋器會(huì)提示語(yǔ)法錯(cuò)誤。因此,Python提供了pass語(yǔ)句,它不做任何事情,只是一個(gè)無(wú)運(yùn)算的空的占位語(yǔ)句。當(dāng)語(yǔ)法需要語(yǔ)句并且還沒(méi)有任何實(shí)用的語(yǔ)句可寫(xiě)時(shí),就可以使用pass。例如,在選擇結(jié)構(gòu)中,若其中一個(gè)分支的代碼暫時(shí)還未寫(xiě)出來(lái),可以在該分支下寫(xiě)pass語(yǔ)句,這樣可以保證程序的語(yǔ)法是正確的,而且不會(huì)干擾到其他代碼的運(yùn)行。709.4.6函數(shù)和模塊將一個(gè)復(fù)雜的程序劃分為若干個(gè)功能相對(duì)獨(dú)立的模塊,并以功能模塊為單位進(jìn)行程序代碼的編寫(xiě)。每個(gè)功能模塊就是一個(gè)功能相對(duì)獨(dú)立的函數(shù)。Python中的函數(shù)可以分為四類(lèi):內(nèi)置函數(shù)。例如print()、type()、int()、float()等標(biāo)準(zhǔn)庫(kù)函數(shù)。例如math、random等,通過(guò)import語(yǔ)句可以導(dǎo)入標(biāo)準(zhǔn)庫(kù)后,用戶(hù)即可使用其中定義的函數(shù)。第三方庫(kù)函數(shù)用戶(hù)自定義函數(shù)711.通過(guò)import語(yǔ)句導(dǎo)入模塊【例9-16】從鍵盤(pán)輸入x和y,調(diào)用標(biāo)準(zhǔn)庫(kù)函數(shù),求x的y次方。72importmath#導(dǎo)入math模塊x=input("請(qǐng)輸入x:

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論