Python語(yǔ)言程序設(shè)計(jì) 課件全套 清華 第1-12章 計(jì)算機(jī)科學(xué)基礎(chǔ) - 其他常用庫(kù)介紹_第1頁(yè)
Python語(yǔ)言程序設(shè)計(jì) 課件全套 清華 第1-12章 計(jì)算機(jī)科學(xué)基礎(chǔ) - 其他常用庫(kù)介紹_第2頁(yè)
Python語(yǔ)言程序設(shè)計(jì) 課件全套 清華 第1-12章 計(jì)算機(jī)科學(xué)基礎(chǔ) - 其他常用庫(kù)介紹_第3頁(yè)
Python語(yǔ)言程序設(shè)計(jì) 課件全套 清華 第1-12章 計(jì)算機(jī)科學(xué)基礎(chǔ) - 其他常用庫(kù)介紹_第4頁(yè)
Python語(yǔ)言程序設(shè)計(jì) 課件全套 清華 第1-12章 計(jì)算機(jī)科學(xué)基礎(chǔ) - 其他常用庫(kù)介紹_第5頁(yè)
已閱讀5頁(yè),還剩477頁(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)介

Python語(yǔ)言程序設(shè)計(jì)PythonLanguageProgramming1計(jì)算機(jī)科學(xué)基礎(chǔ)什么是計(jì)算機(jī)計(jì)算的概念計(jì)算的發(fā)展計(jì)算的分類現(xiàn)代電子計(jì)算機(jī)數(shù)據(jù)表示二進(jìn)制數(shù)據(jù)計(jì)算機(jī)中的數(shù)據(jù)算法什么是算法排序算法程序什么是程序程序設(shè)計(jì)的方法簡(jiǎn)單示例什么是計(jì)算機(jī)計(jì)算的概念計(jì)算的發(fā)展計(jì)算的分類現(xiàn)代電子計(jì)算機(jī)計(jì)算的概念從一般情況看,計(jì)算應(yīng)是依據(jù)一定的法則對(duì)有關(guān)符號(hào)串的變換過(guò)程在計(jì)算機(jī)領(lǐng)域中,計(jì)算是計(jì)算機(jī)對(duì)數(shù)據(jù)進(jìn)行操作(或處理)的過(guò)程計(jì)算的發(fā)展時(shí)間段階段特點(diǎn)1990s~1940s打卡階段(TheTabulatingEra)機(jī)械式1950s~現(xiàn)在編程階段(TheProgrammingEra)自主輸入2011~將來(lái)認(rèn)知計(jì)算階段(TheCognitiveEra)自動(dòng)思考表1計(jì)算的發(fā)展計(jì)算的分類DNA計(jì)算量子計(jì)算社會(huì)計(jì)算計(jì)算法律學(xué)現(xiàn)代電子計(jì)算機(jī)世界上第一臺(tái)計(jì)算機(jī)誕生于1946年2月從總體上,計(jì)算機(jī)可分為模擬計(jì)算機(jī)和數(shù)字計(jì)算機(jī),現(xiàn)代我們使用的是后者現(xiàn)代計(jì)算機(jī)的主要特征來(lái)源于通用圖靈機(jī),主要構(gòu)成來(lái)源于馮諾依曼理論,包含五大部分:存儲(chǔ)器、控制器、運(yùn)算器、輸入和輸出。現(xiàn)代計(jì)算機(jī)由邏輯電路組成,最基本的邏輯電路為門(mén)電路,它通常只有兩個(gè)狀態(tài):開(kāi)和關(guān)。數(shù)據(jù)表示二進(jìn)制數(shù)據(jù)計(jì)算機(jī)中的數(shù)據(jù)二進(jìn)制數(shù)據(jù)

計(jì)算機(jī)中普遍采用二進(jìn)制,一方面由計(jì)算機(jī)的組成特點(diǎn)決定,另一方面是由二進(jìn)制計(jì)算的特點(diǎn)所決定。計(jì)算機(jī)中的數(shù)據(jù)在計(jì)算機(jī)中,數(shù)據(jù)是指所有能輸入到計(jì)算機(jī)并被計(jì)算機(jī)程序處理的符號(hào)的介質(zhì)的總稱,是用于輸入電子計(jì)算機(jī)進(jìn)行處理,具有一定意義的數(shù)字、字母、符號(hào)和模擬量等的通稱。在計(jì)算機(jī)中,數(shù)據(jù)是指所有能輸入到計(jì)算機(jī)并被計(jì)算機(jī)程序處理的符號(hào)的介質(zhì)的總稱,是用于輸入電子計(jì)算機(jī)進(jìn)行處理,具有一定意義的數(shù)字、字母、符號(hào)和模擬量等的通稱。算法什么是算法排序算法什么是算法算法(Algorithm)是指解決一個(gè)問(wèn)題的準(zhǔn)確而完整的描述算法代表著用系統(tǒng)的方法描述解決問(wèn)題的策略和過(guò)程排序算法用Python實(shí)現(xiàn)冒泡排序importrandomunsortedList=[]#generateanunsortedlistdefgenerateUnsortedList(num):foriinrange(0,num):unsortedList.append(random.randint(0,100))print(unsortedList)#冒泡排序defbubbleSort(unsortedList):list_length=len(unsortedList)foriinrange(0,list_length-1):forjinrange(0,list_length-i-1):ifunsortedList[j]>unsortedList[j+1]:unsortedList[j],unsortedList[j+1]=unsortedList[j+1],unsortedList[j]returnunsortedList

generateUnsortedList(20)print(bubbleSort(unsortedList))程序什么是程序程序設(shè)計(jì)的方法簡(jiǎn)單示例什么是程序程序是計(jì)算機(jī)可執(zhí)行的指令集合程序的本質(zhì)是邏輯演繹的形式化表達(dá)區(qū)別于算法,程序的執(zhí)行時(shí)間和指令執(zhí)行次數(shù)是有限的。比如操作系統(tǒng),就是一個(gè)在無(wú)限循環(huán)中執(zhí)行的程序。程序設(shè)計(jì)的方法結(jié)構(gòu)化程序設(shè)計(jì)自頂向下,逐步求精三種基本控制結(jié)構(gòu)(順序、選擇、循環(huán))程序設(shè)計(jì)的方法面向?qū)ο蟪绦蛟O(shè)計(jì)數(shù)據(jù)抽象的概念可以在保持外部接口不變的情況下改變內(nèi)部實(shí)現(xiàn),從而減少甚至避免對(duì)外界的干擾通過(guò)繼承大幅減少冗余的代碼,并可以方便地?cái)U(kuò)展現(xiàn)有代碼,提高編碼效率,也減低了出錯(cuò)概率,降低軟件維護(hù)的難度結(jié)合面向?qū)ο蠓治觥⒚嫦驅(qū)ο笤O(shè)計(jì),允許將問(wèn)題域中的對(duì)象直接映射到程序中,減少軟件開(kāi)發(fā)過(guò)程中中間環(huán)節(jié)的轉(zhuǎn)換過(guò)程通過(guò)對(duì)對(duì)象的辨別、劃分可以將軟件系統(tǒng)分割為若干相對(duì)為獨(dú)立的部分,在一定程度上更便于控制軟件復(fù)雜度簡(jiǎn)單示例輸入三個(gè)變量,按小到大順序輸出x=int(input('pleaseinputx:'))y=int(input('pleaseinputy:'))z=int(input('pleaseinputz:'))ifx>y:x,y=y,xifx>z:x,z=z,xify>z:y,z=z,yprint(x,y,z)小結(jié)計(jì)算機(jī)數(shù)據(jù)表示算法程序Python語(yǔ)言程序設(shè)計(jì)PythonLanguageProgramming2

Python入門(mén)Python簡(jiǎn)介安裝Python運(yùn)行PythonPython解釋器常用的第三方編輯器PyCharm的下載和安裝介紹Python簡(jiǎn)介Python的起源Python語(yǔ)言的特點(diǎn)Python的應(yīng)用Python的起源圖2-1Python之父Python的起源圖2-2TIOBE發(fā)布的9月份的編程語(yǔ)言排行榜Python語(yǔ)言的特點(diǎn)面向?qū)ο笸耆拿嫦驅(qū)ο筇匦裕耆С掷^承、重載、派生、多重繼承,有益于增強(qiáng)代碼的復(fù)用性易于學(xué)習(xí)關(guān)鍵字較少,簡(jiǎn)潔,有一系列開(kāi)源生態(tài),源代碼和解釋器都遵循GPL協(xié)議穩(wěn)健性異常處理機(jī)制交互模式交互型解釋器Python語(yǔ)言的特點(diǎn)跨平臺(tái)性Windows、UNIX、macOS、Linux可擴(kuò)展性輕松調(diào)用其他語(yǔ)言如C、C++、Java編寫(xiě)的擴(kuò)充模塊豐富的庫(kù)強(qiáng)大的標(biāo)準(zhǔn)庫(kù)和活躍的生態(tài)環(huán)境GUI編程提供了多個(gè)圖形開(kāi)發(fā)界面的庫(kù)Python的應(yīng)用Web程序GUI開(kāi)發(fā)操作系統(tǒng)科學(xué)計(jì)算安裝Python(以Python3.5為例)在Windows7系統(tǒng)中安裝Python在macOSX系統(tǒng)中安裝Python在Ubuntu系統(tǒng)中安裝Python在Windows7系統(tǒng)中安裝PythonPython官網(wǎng)/downloads/windows/下載安裝包執(zhí)行安裝包中的exe文件勾選“AddPython3.5toPATH”,點(diǎn)擊“InstallNow”在Windows控制臺(tái)中輸入python,若出現(xiàn)以下提示,則說(shuō)明已正確安裝。圖2-3在Windows控制臺(tái)中運(yùn)行Python在macOSX系統(tǒng)中安裝PythonPython官網(wǎng)/downloads/mac-osx/下載安裝包執(zhí)行安裝包中的exe文件在終端中輸入python3,即可啟動(dòng)python3的交互模式。注:不要?jiǎng)h除系統(tǒng)原生安裝的Python2.X圖2-4Python3交互模式在Ubuntu系統(tǒng)中安裝Python一般在Linux的Ubuntu系統(tǒng)初始化安裝完成后,自帶Python編譯與解釋器環(huán)境,可在Terminal中輸入python進(jìn)行驗(yàn)證若未安裝,則在Terminal下輸入以下指令完成安裝:sudoapt-getinstallpython3將默認(rèn)Python環(huán)境修改為Python3,即輸入以下指令:sudorm/usr/bin/pythonsudoln-s/usr/bin/python3.5/usr/bin/python圖2-5修改默認(rèn)Python環(huán)境為3.X版本注:不要?jiǎng)h除系統(tǒng)原生安裝的Python2.X運(yùn)行Python進(jìn)行指令交互操作運(yùn)行Python腳本Python解釋器CPythonPyPyJythonIronPythonIPython常用的第三方編輯器IDLESublimeTextPyCharmEclipseVimAnacondaPyCharm的下載和安裝介紹小結(jié)Python簡(jiǎn)介安裝Python運(yùn)行PythonPython解釋器常用的第三方編輯器PyCharm的下載和安裝介紹Python語(yǔ)言程序設(shè)計(jì)PythonLanguageProgramming3編程基礎(chǔ)

通過(guò)蒙特卡羅方法計(jì)算圓周率π的值

通過(guò)蒙特卡羅方法計(jì)算圓周率π的值【參考代碼】importnumpyasnp#引入第三方庫(kù)numpyimportmatplotlib.pyplotasplt#引入第三方庫(kù)matplotlibfrommatplotlib.patchesimportCircle#投點(diǎn)次數(shù)n=1000#設(shè)置圓的屬性,半徑為1radius=1.0#設(shè)置半徑a,b=(0.,0.)#圓心位置坐標(biāo)#正方形位置屬性設(shè)置,邊長(zhǎng)為2x_left,x_right=a-radius,a+radiusy_down,y_up=b-radius,b+radius#在正方形區(qū)域內(nèi)隨機(jī)投點(diǎn)x=np.random.uniform(x_left,x_right,n)#從一個(gè)均勻分布[x_left,x_right)中隨機(jī)采樣,生成n個(gè)樣本點(diǎn)的橫坐標(biāo)y=np.random.uniform(y_down,y_up,n)#從一個(gè)均勻分布[y_down,y_up)中隨機(jī)采樣,生成n個(gè)樣本點(diǎn)的縱坐標(biāo)#計(jì)算點(diǎn)到圓心的距離dis=np.sqrt((x-a)**2+(y-b)**2)#平方根運(yùn)算,計(jì)算點(diǎn)(x,y)到圓心的距離,返回距離數(shù)組dis#統(tǒng)計(jì)落在圓內(nèi)的點(diǎn)的數(shù)目points_in=sum(np.where(dis<=radius,1,0))#數(shù)組dis中滿足與圓心距離小于等于1的,返回1,否則返回0,累加至res中#計(jì)算pi的近似值(MonteCarlo方法的精髓:用統(tǒng)計(jì)值去近似真實(shí)值,統(tǒng)計(jì)值越大,越逼近真實(shí)值)pi=4*points_in/nprint('pi的值約為:',pi)#可視化fig=plt.figure()ax=fig.add_subplot(111)#構(gòu)建1*1的網(wǎng)格圖,其中有一個(gè)子圖ax.plot(x,y,'ro',color='red',markersize=1)plt.axis('equal')#保持作圖時(shí)正方形的邊長(zhǎng)相等,否則會(huì)變形circle=Circle(xy=(a,b),radius=radius,alpha=0.8)ax.add_patch(circle)plt.show()通過(guò)蒙特卡羅方法計(jì)算圓周率π的值散落點(diǎn)的數(shù)量n的值不同,統(tǒng)計(jì)計(jì)算所得的值也不同:n的取值統(tǒng)計(jì)計(jì)算得出的值約為10003.0921000031379610000003.143612100000003.1413232表3-1不同散落點(diǎn)的數(shù)量,統(tǒng)計(jì)得出不同的值變量和常量變量數(shù)據(jù)常量變量即用即命名,不需要事先指定變量的類型,也可以賦值不同類型的數(shù)據(jù),不會(huì)發(fā)生溢出。圖3-1變量和命名空間變量的命名規(guī)則標(biāo)識(shí)符對(duì)大小寫(xiě)敏感,不能與保留字相同;變量名必須以下劃線或字母開(kāi)頭,而后面接任意數(shù)目的字母、數(shù)字或下劃線。不能使用空格。以下是合法命名的標(biāo)識(shí)符:its_name_,_its_name_is_xx_;名稱中的字母區(qū)分大小寫(xiě),如its_name和Its_name是不同的;變量的名稱要有意義,要能夠代表變量的含義,比如表示半徑的變量名稱可以這樣起:radiusNum或radius_num;禁止使用Python保留字。Python的保留字見(jiàn)表3-2變量的命名規(guī)則andelifimportraiseaselseinreturnassertexceptistrybreakfinallylambdawhileclassfornotwithcontinuefromordefglobalpassdelifprint表3-2Python保留字?jǐn)?shù)據(jù)數(shù)據(jù)是指所有能輸入到計(jì)算機(jī)并被計(jì)算機(jī)程序處理的符號(hào)的介質(zhì)的總稱是用于輸入電子計(jì)算機(jī)進(jìn)行處理,具有一定意義的數(shù)字、字母、符號(hào)和模擬量等的通稱數(shù)據(jù)是信息的表現(xiàn)形式和載體,可以是符號(hào)、文字、數(shù)字、語(yǔ)音、圖像、視頻等信息量化到數(shù)字化,一般稱為“嵌入”(embedding)常量通常把程序中不發(fā)生變化的元素叫做常量,與變量進(jìn)行區(qū)別python沒(méi)有定義常量的保留字python中定義常量需要用自定義類的方法來(lái)創(chuàng)建運(yùn)算和表達(dá)式常用的運(yùn)算表達(dá)式常用的運(yùn)算算術(shù)運(yùn)算算術(shù)運(yùn)算包括數(shù)學(xué)中常見(jiàn)的運(yùn)算,如加、減、乘、除、乘方和開(kāi)方等所有的運(yùn)算都需要預(yù)先對(duì)變量進(jìn)行賦值,否則報(bào)錯(cuò)支持不同的數(shù)字類型相加(數(shù)字類型強(qiáng)制轉(zhuǎn)換),整數(shù)→浮點(diǎn)數(shù),非復(fù)數(shù)→復(fù)數(shù)。規(guī)則:簡(jiǎn)單→復(fù)雜常用的運(yùn)算下表展示Python的算數(shù)運(yùn)算符,變量預(yù)先賦值x=10,y=3算數(shù)運(yùn)算符運(yùn)算描述實(shí)例+加法x+y結(jié)果為13-減法x-y結(jié)果為13*乘法x*y結(jié)果為30/除法x/y結(jié)果為3.3333…..**冪運(yùn)算x**y的結(jié)果是1000//返回商的整數(shù)部分x//y的結(jié)果是3%返回余數(shù)部分x%y的結(jié)果為1(余數(shù))=賦值運(yùn)算x=10,將10賦值給變量x+=加法賦值運(yùn)算x+=10的運(yùn)算結(jié)果是x=20,等效于x=x+10-=減法賦值運(yùn)算x-=10的運(yùn)算結(jié)果是x=0,等效于x=x-10*=乘法賦值運(yùn)算x*=10的運(yùn)算結(jié)果是100,等效于x=x*10/=除法賦值運(yùn)算x/=10的運(yùn)算結(jié)果是1.0,等效于x=x/10表3-3Python中的算數(shù)運(yùn)算常用的運(yùn)算關(guān)系運(yùn)算傳統(tǒng)的關(guān)系運(yùn)算包括集合運(yùn)算(并、差、交等),專門(mén)的關(guān)系運(yùn)算包括選擇、投影、連接、除法、外連接等關(guān)系表達(dá)式的值只有真True和假False常用的運(yùn)算下表展示Python的關(guān)系運(yùn)算符,變量預(yù)先賦值x=10,y=20運(yùn)算符描述示例==如果兩個(gè)操作數(shù)的值相等,則條件為真。(x==y)求值結(jié)果為false!=如果兩個(gè)操作數(shù)的值不相等,則條件為真。(x!=y)求值結(jié)果為true>如果左操作數(shù)的值大于右操作數(shù)的值,則條件成為真。(x>y)求值結(jié)果為false<如果左操作數(shù)的值小于右操作數(shù)的值,則條件成為真。(x<y)求值結(jié)果為true>=如果左操作數(shù)的值大于或等于右操作數(shù)的值,則條件成為真。(x>=y)求值結(jié)果為false<=如果左操作數(shù)的值小于或等于右操作數(shù)的值,則條件成為真。(x<=y)求值結(jié)果為true表3-4Python中的關(guān)系運(yùn)算常用的運(yùn)算邏輯運(yùn)算邏輯運(yùn)算又稱布爾運(yùn)算,用等式表示判斷,把推理看作等式的變換邏輯運(yùn)算中包括與運(yùn)算、或運(yùn)算和非運(yùn)算三種基本的邏輯運(yùn)算邏輯運(yùn)算的結(jié)果也只有真True和假False常用的運(yùn)算下表展示Python的邏輯運(yùn)算符,變量預(yù)先賦值x=10,y=20運(yùn)算符描述示例and如果兩個(gè)操作數(shù)都為真,則結(jié)果為真(xandy)的結(jié)果為Falseor如果兩個(gè)操作數(shù)中的任何一個(gè)為真,則結(jié)果為真(xory)的結(jié)果為T(mén)ruenot用于反轉(zhuǎn)操作數(shù)的邏輯狀態(tài)not(xandy)的結(jié)果為T(mén)rue表3-5Python中的邏輯運(yùn)算常用的運(yùn)算【例3-2】輸入學(xué)生的姓名,再輸入成績(jī),根據(jù)給出的條件判斷成績(jī)的等級(jí),最后打印輸出:某某的成績(jī)是什么等級(jí)。判斷標(biāo)準(zhǔn):小于60分,F(xiàn)ail;60到70分,Pass;70到80分,Good;80到90分,Average;90到100分,Outstanding。常用的運(yùn)算【參考代碼】name=input("Whatisyourname?")score=int(input("Whatisyourscore?"))ifscore<60:print("Hello,%s,yourgradesis'Fail'"%name)elifscore>=60andscore<70:print("Hello,%s,yourgradesis'Pass'"%name)elifscore>=70andscore<80:print("Hello,%s,yourgradesis'Average'"%name)elifscore>=80andscore<90:print("Hello,%s,yourgradesis'Good'"%name)elifscore>=90andscore<=100:print("Hello,%s,yourgradesis'Outstanding'"%name)else:print("Yourinputisincorrect.")常用的運(yùn)算成員運(yùn)算一般用來(lái)判斷某一元素是否在一個(gè)指定的序列對(duì)象中,其返回值為布爾值運(yùn)算符描述示例in若某一元素在一個(gè)指定的序列中,則返回True,否則返回False>>>x=10>>>L=[1,2,3.4]>>>xinLFalsenotin若某一元素不在一個(gè)指定的序列中,則返回True,否則返回False>>>x='10'>>>s='abcdefg'>>>xnotinsTrue表3-6Python中的成員運(yùn)算常用的運(yùn)算【例3-3】有一個(gè)列表L=[1,2,3,4,5,6,7,1,2,3,4,5,6,7],要求去掉其中重復(fù)的元素。【參考代碼】>>>L=[1,2,3,4,5,6,7,1,2,3,4,5,6,7]>>>L1=[]>>>forxinL: ifxnotinL1: L1.append(x)>>>L1【輸出結(jié)果】[1,2,3,4,5,6,7]常用的運(yùn)算身份運(yùn)算用來(lái)判斷兩個(gè)變量是否指向同一對(duì)象,或者某一對(duì)象是否在一個(gè)序列中常用的運(yùn)算下表展示Python的身份運(yùn)算符運(yùn)算符描述示例is判斷兩個(gè)變量是否指向同一個(gè)對(duì)象,返回值為T(mén)rue和False>>>a=1>>>b=1>>>aisbTrue>>>b=2>>>aisbFalse>>>b=a>>>aisbTrue>>>id(a)502515440>>>id(b)502515440isnot判斷兩個(gè)變量是否沒(méi)有指向同一個(gè)變量,返回值為T(mén)rue和False>>>a=1>>>b=2>>>aisnotbTrue表3-7Python中的身份運(yùn)算表達(dá)式表達(dá)式是運(yùn)算符和操作數(shù)所構(gòu)成的序列用算數(shù)運(yùn)算符連接起來(lái)的表達(dá)式叫做算數(shù)表達(dá)式,如a+b用關(guān)系運(yùn)算符連接起來(lái)的表達(dá)式叫做關(guān)系表達(dá)式,如a<b用邏輯運(yùn)算符連接起來(lái)的表達(dá)式叫做邏輯表達(dá)式,如aandb運(yùn)算順序:算數(shù)運(yùn)算表達(dá)式>關(guān)系運(yùn)算表達(dá)式>邏輯運(yùn)算表達(dá)式Python相關(guān)基礎(chǔ)語(yǔ)法空格注釋空格一般是四個(gè)空格或者一個(gè)Tab鍵的距離,且不要混用if、elif、else、while等引導(dǎo)的語(yǔ)句都有縮進(jìn),Pyhon的縮進(jìn)用來(lái)表示分段,類同C語(yǔ)言的{}從可讀性的角度考慮,一般關(guān)鍵詞、逗號(hào)的后面會(huì)加一個(gè)空格,如>>>print('score',90*0.3+81*0.7)score83.69999999999999>>>print('score',

90*0.3+81*0.7)

#這樣看起來(lái)更好一些score83.69999999999999注:以上的空格無(wú)語(yǔ)法含義注釋提高程序的可閱讀性和可理解性源程序的有效注釋在20%以上,不宜太多,也不宜過(guò)少。通常,函數(shù)頭部、源文件頭部、標(biāo)志性變量等均需要標(biāo)注明確的注釋,以便于代碼的閱讀單行注釋#多行注釋

三引號(hào)常用的運(yùn)算【例3-4】利用泰勒級(jí)數(shù)計(jì)算e的近似值。whileabs(term)>1e-5:term=term/ne=e+termn=n+1count+=1endtime=time.perf_counter()print("e=%f,運(yùn)行次數(shù):%d次"%(e,count))print("運(yùn)行耗時(shí)"+str(endtime-starttime)+"s")【參考代碼】'''利用泰勒級(jí)數(shù)計(jì)算e的近似值,當(dāng)最后一項(xiàng)的絕對(duì)值小于時(shí)認(rèn)為達(dá)到了精度要求,要求統(tǒng)計(jì)總共累加了多少項(xiàng)并輸出程序的總運(yùn)行時(shí)間。'''importtimestarttime=time.perf_counter()n=1count=1term=1.0e=0random庫(kù)Python中用來(lái)產(chǎn)生隨機(jī)數(shù)的標(biāo)準(zhǔn)庫(kù),使用的時(shí)候需要引用importrandom或fromrandomimport*。類別函數(shù)功能說(shuō)明基本隨機(jī)函數(shù)

seed(a=None)改變隨機(jī)數(shù)生成器的種子,在調(diào)用其他隨機(jī)模塊之前調(diào)用該函數(shù),可固定生成同一個(gè)隨機(jī)數(shù)。random()隨機(jī)生成一個(gè)[0.0,1.0]區(qū)間的小數(shù)擴(kuò)展隨機(jī)函數(shù)

randint(a,b)隨機(jī)生成一個(gè)[a,b]區(qū)間的整數(shù)getrandbits(k)隨機(jī)生成一個(gè)k比特(bit)長(zhǎng)度的整數(shù)randrange(start,stop[,step])隨機(jī)生成一個(gè)[start,stop)區(qū)間,步長(zhǎng)為step的整數(shù)uniform(a,b)隨機(jī)生成一個(gè)[a,b]區(qū)間的小數(shù)choice(seq)隨機(jī)返回序列類型中的一個(gè)元素shuffle(seq)隨機(jī)排列序列中的元素,并返回打亂順序后的原序列,即不會(huì)生成新的序列表3-8random庫(kù)常用函數(shù)random庫(kù)【例3-5】random庫(kù)中常見(jiàn)函數(shù)的使用。>>>randrange(1,20,3)#隨機(jī)生成一個(gè)1-20之間,步長(zhǎng)為3的整數(shù)7>>>uniform(2,3)#隨機(jī)生成一個(gè)2-3之間的小數(shù)2.076089346781348>>>choice([1,2,3,4,5,6,7,8,9])#隨機(jī)選中列表序列中的一個(gè)元素并返回6>>>shuffle([1,2,3,4,5,6,7,8,9])#隨機(jī)將列表中的元素亂序>>>x=shuffle([1,2,3,4,5,6,7,8,9])>>>x>>>print(shuffle([1,2,3,4,5,6,7,8,9]))#由于亂序而不會(huì)生成新的列表,因此沒(méi)有任何返回值None>>>y=[1,2,3,4,5,6,7,8,9]#隨機(jī)亂序原有的列表序列>>>shuffle(y)>>>y[1,7,9,6,2,3,8,5,4]

【參考代碼】>>>fromrandomimport*#引用random庫(kù)>>>random()#生成0-1的隨機(jī)小數(shù)0.005971912566784976>>>seed(10)#設(shè)置隨機(jī)生成器的種子為10,然后再生成隨機(jī)數(shù)>>>random()0.5714025946899135>>>seed(10)#再次設(shè)置隨機(jī)生成器的種子為10,生成和上次一樣的隨機(jī)數(shù)>>>random()0.5714025946899135>>>random()#沒(méi)有設(shè)置隨機(jī)生成器的種子,則生成不同的隨機(jī)數(shù)0.4288890546751146>>>forxinrange(10):#隨機(jī)生成1-100之間的10個(gè)整數(shù) print(randint(1,100),end='')742276063368421567>>>getrandbits(3)#隨機(jī)生成一個(gè)3bit的整數(shù)3random庫(kù)【例3-6】隨機(jī)游走(randomwalk)也稱隨機(jī)漫步,隨機(jī)行走等是指基于過(guò)去的表現(xiàn),無(wú)法預(yù)測(cè)將來(lái)的發(fā)展步驟和方向。核心概念是指任何無(wú)規(guī)則行走者所帶的守恒量都各自對(duì)應(yīng)著一個(gè)擴(kuò)散運(yùn)輸定律,接近于布朗運(yùn)動(dòng),是布朗運(yùn)動(dòng)理想的數(shù)學(xué)狀態(tài),現(xiàn)階段主要應(yīng)用于互聯(lián)網(wǎng)鏈接分析及金融股票市場(chǎng)中[引自“百度百科”中“隨機(jī)漫步”詞條。]。隨機(jī)游走對(duì)于股市而言指股價(jià)的短期變動(dòng)不可預(yù)測(cè),各種投資咨詢服務(wù)、收益預(yù)測(cè)和復(fù)雜的圖形都毫無(wú)用處。現(xiàn)在,隨機(jī)游走理論已發(fā)展成三種形式:強(qiáng)式、半強(qiáng)式、弱式。要求:模擬一維的1000步的隨機(jī)游走,從0開(kāi)始,步長(zhǎng)為1和-1,且以相等的概率出現(xiàn)。random庫(kù)【參考代碼】importrandomimportmatplotlib.pyplotaspltposition=0#設(shè)置初始位置為0walk=[]#新建空列表,用來(lái)存儲(chǔ)隨機(jī)游走的步長(zhǎng)及方向steps=1000#設(shè)置步數(shù)foriinrange(steps):ifrandom.randint(0,1):#randint()隨機(jī)生成[0,1]之間的整數(shù),不是0就是1step=1else:step=-1#每步向前一步或者向后一步position=position+step#在原有位置position的基礎(chǔ)上,計(jì)算下一步是前進(jìn)還是后退walk.append(position)#將position添加至列表walk中#print(walk)fig=plt.figure()#生成繪圖窗口ax=fig.add_subplot(111)#返回一個(gè)ax對(duì)象,參數(shù)111表示生成一個(gè)1行1列的窗口,在第1個(gè)窗口進(jìn)行繪圖ax.plot(walk)#以列表walk中的數(shù)據(jù)繪制圖形plt.show()#顯示圖形【運(yùn)行結(jié)果】【參考代碼】

【運(yùn)行結(jié)果】importrandomimportmatplotlib.pyplotaspltn=1000total=0forxinrange(n):total=total+random.randint(0,1)p=total/nprint(p)random庫(kù)【例3-7】在例3-6中,要求步長(zhǎng)為1或者-1的概率是相同的,在代碼中,產(chǎn)生步長(zhǎng)正負(fù)的條件表達(dá)式為random.randint(0,1),該表達(dá)式會(huì)在[0,1]區(qū)間隨機(jī)生成整數(shù)0或者1。要求:測(cè)試該表達(dá)式隨機(jī)生成1的概率值。小結(jié)

Python語(yǔ)言程序設(shè)計(jì)PythonLanguageProgramming4語(yǔ)句和控制結(jié)構(gòu)引例基本語(yǔ)句及順序結(jié)構(gòu)語(yǔ)句條件語(yǔ)句while循環(huán)for循環(huán)轉(zhuǎn)移語(yǔ)句引例【例4-1】計(jì)算1-n之內(nèi)能被3整除的數(shù)字之和,通過(guò)鍵盤(pán)輸入n的值,最后顯示輸出計(jì)算結(jié)果。【參考代碼】sum=0n=int(input('計(jì)算1-n之內(nèi)能被3整除的數(shù)字之和,請(qǐng)輸入n的值'))foriinrange(n+1):ifi%3==0:sum=sum+iprint('1-%d之內(nèi)能被3整除的數(shù)字之和是%d'%(n,sum))基本語(yǔ)句及順序結(jié)構(gòu)語(yǔ)句輸入輸出語(yǔ)句賦值語(yǔ)句順序結(jié)構(gòu)語(yǔ)句輸入輸出語(yǔ)句input輸入語(yǔ)句<變量>=input(<提示性文字>)通過(guò)input語(yǔ)句輸入的值,默認(rèn)為字符串屬性字符串無(wú)法進(jìn)行運(yùn)算,需要用int()函數(shù)轉(zhuǎn)換為整數(shù)形式print語(yǔ)句多種形式print語(yǔ)句用來(lái)輸出字符信息,也可以以字符形式輸出變量,支持格式化輸出輸入輸出語(yǔ)句符號(hào)描述符號(hào)描述%c字符及其ASCII碼%s字符串%d整數(shù)%u無(wú)符號(hào)整型%o無(wú)符號(hào)八進(jìn)制數(shù)%x無(wú)符號(hào)十六進(jìn)制%f浮點(diǎn)數(shù)%e科學(xué)計(jì)數(shù)法浮點(diǎn)數(shù)表4.1python常用字符串格式化符號(hào)輸入輸出語(yǔ)句【例4-2】從鍵盤(pán)中輸入兩個(gè)數(shù),并輸出這兩個(gè)數(shù)的平均值。【參考代碼】a=float(input('請(qǐng)輸入第一個(gè)數(shù)值'))#float()函數(shù)將輸入的字符串轉(zhuǎn)換為浮點(diǎn)數(shù)b=float(input('請(qǐng)輸入第二個(gè)數(shù)值'))average=(a+b)/2print('輸入的兩個(gè)數(shù)的平均值是%f'%average)賦值語(yǔ)句【例4-3】變量a賦值為4,變量b賦值為5,交換變量a和b的值,最后為b的值加1。【參考代碼】>>>a=4>>>b=5>>>a,b=b,a>>>print(a)5>>>print(b)4>>>b=b+1>>>print(b)5賦值語(yǔ)句同步賦值語(yǔ)句<變量1>,...,<變量N>=<表達(dá)式1>,...,<表達(dá)式N>>>>a,b=3,4#多目標(biāo)賦值>>>a3>>>b4>>>[x,y]=['abc','ECUPL']#列表賦值>>>x'abc'>>>y'ECUPL'>>>x,y=['abc','ECUPL']>>>x'abc'>>>y'ECUPL'順序結(jié)構(gòu)語(yǔ)句順序結(jié)構(gòu)按照書(shū)寫(xiě)順序依次執(zhí)行選擇結(jié)構(gòu)根據(jù)特定的情況,有選擇地執(zhí)行某些語(yǔ)句循環(huán)結(jié)構(gòu)在給定條件下往復(fù)執(zhí)行某些語(yǔ)句條件語(yǔ)句基本的if語(yǔ)句else語(yǔ)句elif語(yǔ)句基本的if語(yǔ)句if語(yǔ)句的語(yǔ)法形式if表達(dá)式:語(yǔ)句體基本的if語(yǔ)句【例4-4】用戶輸入一個(gè)整數(shù),如果這個(gè)數(shù)字大于6,那么就輸出一行字符串;否則,直接退出程序。【參考代碼】integer=input('請(qǐng)輸入一個(gè)整數(shù):')#取得一個(gè)字符串integer=int(integer)#將字符串轉(zhuǎn)換為整數(shù)ifinteger>6:print('%d大于6'%integer)else語(yǔ)句if語(yǔ)句的語(yǔ)法形式if表達(dá)式:語(yǔ)句體1else:語(yǔ)句體2else語(yǔ)句【例4-5】用戶輸入一個(gè)整數(shù),如果這個(gè)數(shù)字大于6,那么就輸出一行信息,指出輸入的數(shù)字大于6;否則,輸出另一行字符串,指出輸入的數(shù)字小于等于6。【參考代碼】integer=input('請(qǐng)輸入一個(gè)整數(shù):')#取得一個(gè)字符串integer=int(integer)#將字符串轉(zhuǎn)換為整數(shù)ifinteger>6:print('%d大于6'%integer)else:print('%d小于或等于6'%integer)elif語(yǔ)句elif語(yǔ)句的語(yǔ)法形式if表達(dá)式1:語(yǔ)句體1elif表達(dá)式2:語(yǔ)句體2……elif表達(dá)式m:語(yǔ)句體melse:語(yǔ)句體nelif語(yǔ)句【例4-6】用戶輸入一個(gè)整數(shù),如果這個(gè)數(shù)字大于6,那么就輸出一行信息,指出輸入的數(shù)字大于6;如果這個(gè)數(shù)字小于6,則輸出另一行字符串,指出輸入的數(shù)字小于6;否則,指出輸入的數(shù)字等于6。【參考代碼】integer=input('請(qǐng)輸入一個(gè)整數(shù):')#取得一個(gè)字符串integer=int(integer)#將字符串轉(zhuǎn)換為整數(shù)ifinteger>6:print('%d大于6'%integer)elifinteger<6:print('%d小于6'%integer)else:print('%d等于6'%integer)elif語(yǔ)句【例4-7】按照我國(guó)法律及相關(guān)解釋,盜竊公私財(cái)物價(jià)值一千元至三千元以上以及盜竊國(guó)有館藏一般文物,處三年以下有期徒刑(本例中僅看有期徒刑刑期);盜竊公私財(cái)物價(jià)值三萬(wàn)元至十萬(wàn)元以上以及盜竊國(guó)有館藏三級(jí)文物,處三年以上十年以下有期徒刑;盜竊公私財(cái)物價(jià)值三十萬(wàn)元至五十萬(wàn)元以上以及盜竊國(guó)有館藏二級(jí)以上文物,處十年以上有期徒刑或者無(wú)期徒刑。elif語(yǔ)句【參考代碼】theft_of_goods=input("請(qǐng)輸入盜竊物:一般文物、三級(jí)文物或者二級(jí)以上文物")theft_amount=int(input("請(qǐng)輸入盜竊金額"))level1=0level2=0level=0iftheft_amount>1000:level1=2eliftheft_amount>30000:level1=3eliftheft_amount>300000:level=4iftheft_of_goods=="一般文物":level2=2eliftheft_of_goods=="三級(jí)文物":level2=3eliftheft_of_goods=="二級(jí)以上文物":level2=4iflevel1>level2:level=level1else:level=level2iflevel==2:print("三年以下有期徒刑")eliflevel==3:print("三年以上十年以下有期徒刑")eliflevel==4:print("十年以上有期徒刑或者無(wú)期徒刑")else:print("予以治安處罰,拘留或罰款")elif語(yǔ)句【例4-8】模擬判斷用戶登錄信息。要求:當(dāng)?shù)卿浀挠脩裘兔艽a全部正確時(shí),顯示”歡迎登錄!”,否則顯示“用戶名或密碼信息不正確,請(qǐng)重新登錄!”。用戶名為admin,密碼值為password。【參考代碼】username=input("請(qǐng)輸入用戶名:")psword=input("請(qǐng)輸入密碼:")ifusername=="admin"

andpsword=="password":print("歡迎登錄!")else:

print("用戶名或密碼信息不正確,請(qǐng)重新登錄!")while循環(huán)while循環(huán)語(yǔ)句的一般語(yǔ)法計(jì)算循環(huán)無(wú)限循環(huán)引例【例4-9】修改例4-8,修改要求:在原有功能基礎(chǔ)上,增加驗(yàn)證次數(shù)的功能。當(dāng)用戶名或者密碼輸入錯(cuò)誤時(shí),無(wú)限次重新輸入而無(wú)需重新運(yùn)行程序。【參考代碼】whileTrue:#條件表達(dá)式判斷一直為真username=input("請(qǐng)輸入用戶名:")psword=input("請(qǐng)輸入密碼:")ifusername=="admin"andpsword=="password":print("歡迎登陸!")else:print("用戶名或密碼輸入錯(cuò)誤,請(qǐng)重試!")while循環(huán)語(yǔ)句的一般語(yǔ)法while語(yǔ)句的語(yǔ)法形式while表達(dá)式:循環(huán)體注縮進(jìn)避免無(wú)限循環(huán)循環(huán)體不能為空while小寫(xiě)while循環(huán)語(yǔ)句的一般語(yǔ)法【例4-10】打印輸出1到100之間的奇數(shù),并計(jì)算它們的和。【參考代碼】integer=1sum=0whileinteger<=100:ifinteger%2==1:print(integer,end='')sum=sum+integerinteger=integer+1print('')print("1到100之間所有奇數(shù)的和為:%d"%sum)計(jì)算循環(huán)【例4-11】修改例4-8,要求:若用戶輸入用戶名和密碼錯(cuò)誤的次數(shù)超過(guò)3次,則顯示“該賬戶已鎖定,請(qǐng)聯(lián)系客服人員!”【參考代碼】count=0#計(jì)數(shù)器初始化whilecount<3:#計(jì)數(shù)器,設(shè)置循環(huán)執(zhí)行的最大次數(shù)username=input("請(qǐng)輸入用戶名:")psword=input("請(qǐng)輸入密碼:")ifusername=="admin"andpsword=="password":print("歡迎登陸!")break#當(dāng)用戶名和密碼輸入正確時(shí),退出循環(huán)else:print("用戶名或密碼輸入錯(cuò)誤,請(qǐng)重試!")count=count+1print('該賬戶已鎖定,請(qǐng)聯(lián)系客服人員')計(jì)算循環(huán)【例4-12】要求從鍵盤(pán)輸入10個(gè)整數(shù),輸入完畢后,打印輸出十個(gè)數(shù)的平均值。【參考代碼】total=0#定義并初始化變量counter=1#初始化計(jì)數(shù)器whilecounter<=10:#讓用戶輸入10個(gè)整數(shù),并將其累加total=total+int(input('請(qǐng)輸入一個(gè)整數(shù):'))#該語(yǔ)句執(zhí)行了三個(gè)動(dòng)作counter=counter+1#計(jì)算并輸出平均數(shù)print("您輸入的十個(gè)整數(shù)的平均值是:",float(total)/10)無(wú)限循環(huán)如果條件判斷語(yǔ)句永遠(yuǎn)為T(mén)rue,循環(huán)將會(huì)無(wú)限的執(zhí)行下去。無(wú)限循環(huán)也稱為死循環(huán)。如:i=1whilei<10:print(i)可通過(guò)Ctrl+C組合鍵中斷循環(huán)或強(qiáng)制退出程序。一般要避免程序出現(xiàn)無(wú)限循環(huán)的情況。for循環(huán)一般語(yǔ)法range()函數(shù)一般語(yǔ)法for語(yǔ)句的語(yǔ)法形式for<控制變量>in<序列對(duì)象>: 循環(huán)體注for循環(huán)可以用來(lái)遍歷任何序列對(duì)象,如字符串、列表、字典、元組和集合等一般語(yǔ)法【例4-13】計(jì)算1-100中100個(gè)自然數(shù)的和,并打印輸出。【參考代碼】sum=0#初始化變量forxinrange(101):#range生產(chǎn)一個(gè)序列對(duì)象,默認(rèn)從0開(kāi)始print(x,end='')#end=''保證了數(shù)字不換行輸出sum=sum+x#每次循環(huán),將數(shù)字累加到sum中print('')print('1-100個(gè)自然數(shù)的和是:%d'%sum)一般語(yǔ)法【例4-14】計(jì)算1-1000中所有偶數(shù)的和與平均值,并打印輸出。【參考代碼】sum1=0#初始化counter=1average=0forxinrange(1,1001):#生成1至1000的序列ifx%2==0:#判斷x是否為偶數(shù)sum1=sum1+x#條件成立時(shí),將x累加至sum中print(x,end='')#不換行輸出x,查看符合條件的數(shù)字xcounter=counter+1#x符合偶數(shù)條件時(shí),計(jì)數(shù)器加1,統(tǒng)計(jì)偶數(shù)的個(gè)數(shù)print('1-1000中所有偶數(shù)的和是:%d'%sum1)average=sum1/counterprint('1-1000中所有偶數(shù)的平均值是:%f'%average)一般語(yǔ)法【例4-15】有學(xué)生計(jì)算機(jī)成績(jī)數(shù)據(jù)存放在列表score中,統(tǒng)計(jì)其平均值average。【參考代碼】>>>#方法一>>>score=[90,100,30,48,69,78,87,80,85,92,75]#列表中的元素為成績(jī)值>>>average=sum(score)/len(score)>>>average75.81818181818181>>>#方法二>>>sum1=0>>>forxinscore: sum1=sum1+x >>>average=sum1/len(score)>>>average75.81818181818181一般語(yǔ)法【例4-16】雞兔同籠問(wèn)題。大約在1500年前,《孫子算經(jīng)》中就記載了這個(gè)有趣的問(wèn)題。書(shū)中是這樣敘述的:今有雉兔同籠,上有三十五頭,下有九十四足,問(wèn)雉兔各幾何?這四句話的意思是:有若干只雞兔同在一個(gè)籠子里,從上面數(shù)有35個(gè)頭,從下面數(shù)有94只腳。求籠中各有幾只雞和幾只兔?【參考代碼】a=35b=94forxinrange(1,a):if2*x+4*(35-x)==b:print('雞有'+str(x)+'只','兔有'+str(35-x)+'只')一般語(yǔ)法【例4-17】“要、做、好、事”每一個(gè)文字都代表一個(gè)數(shù)字,試編寫(xiě)代碼計(jì)算出符合如圖所示數(shù)學(xué)式子的“要、做、好、事”的值分別是多少。【參考代碼】list1=[0,1,2,3,4,5,6,7,8,9]list2=[1,2,3,4,5,6,7,8,9]forhinlist2:forsinlist1:forzinlist1:foryinlist2:if(h*100+s*10+h)+(y*100+z*10+h)==(y*1000+z*100+h*10+s):print(h,s,y,z)range()函數(shù)range()函數(shù)的語(yǔ)法形式range(start,stop[,step])其中,start指的是計(jì)數(shù)起始值,默認(rèn)是0;stop指的是計(jì)數(shù)結(jié)束值,但不包括stop;step是步長(zhǎng),默認(rèn)為1,不可以為0。range()函數(shù)生成一段左閉右開(kāi)的整數(shù)范圍。range()函數(shù)range()函數(shù)的四點(diǎn)注意表示左閉右開(kāi)的區(qū)間接收的參數(shù)必須是整數(shù),可以是負(fù)數(shù),但不能是浮點(diǎn)數(shù)等其它類型是不可變的序列類型,可以進(jìn)行判斷元素、查找元素、切片等操作,但不能修改元素是可迭代對(duì)象,卻不是迭代器range()函數(shù)常見(jiàn)使用方法表示范圍是左閉右開(kāi)區(qū)間,區(qū)間內(nèi)可以定義范圍內(nèi)數(shù)的間隔,當(dāng)括號(hào)內(nèi)只有一個(gè)數(shù)時(shí)表示從0開(kāi)始>>>list(range(1,8,2))#步長(zhǎng)為2,從1開(kāi)始,等差為2的數(shù)列[1,3,5,7]>>>list(range(2,8))#默認(rèn)步長(zhǎng)為1[2,3,4,5,6,7]>>>list(range(8))#默認(rèn)起始數(shù)字為0[0,1,2,3,4,5,6,7]range()函數(shù)常見(jiàn)使用方法表示負(fù)數(shù)步長(zhǎng)可以為負(fù),可以從小往大排>>>list(range(-8,-1))#可以表示負(fù)數(shù),從小往大排列[-8,-7,-6,-5,-4,-3,-2]>>>list(range(-1,-8))#默認(rèn)步長(zhǎng)為1,此時(shí)起始值要小于結(jié)束值[]>>>list(range(-8,-1,2))#設(shè)置步長(zhǎng)值[-8,-6,-4,-2]>>>list(range(-1,-8,-2))#步長(zhǎng)可以為負(fù),負(fù)數(shù)從大到小排列[-1,-3,-5,-7]>>>list(range(8,1,-2))#步長(zhǎng)可以為負(fù),正數(shù)從大到小排列[8,6,4,2]>>>list(range(8,1,2))#設(shè)置步長(zhǎng)為2,起始值要小于結(jié)束值[]range()函數(shù)常見(jiàn)使用方法循環(huán)出字符串或數(shù)組的每個(gè)單元>>>x='IloveECUPL'>>>foriinrange(len(x)):#輸出字符串中的每一個(gè)字符 print(x[i],end='/')

I//l/o/v/e//E/C/U/P/L/#運(yùn)行結(jié)果>>>x=['I','love','ECUPL']#輸出列表中的每一個(gè)元素>>>foriinrange(len(x)): print(x[i],end='/')

I/love/ECUPL/#運(yùn)行結(jié)果>>>foriinx:#輸出列表中的每一個(gè)元素 print(i,end='/')I/love/ECUPL/#運(yùn)行結(jié)果一般語(yǔ)法【例4-18】國(guó)際國(guó)際乒聯(lián)將每局21分改成11分,是否會(huì)影響輸贏結(jié)果【參考代碼】importrandomcount=0probA=0.52forxinrange(1000):pointA=pointB=0whilepointA!=21andpointB!=21:ifrandom.random()<probA:pointA=pointA+1else:pointB=pointB+1ifpointA>pointB:count=count+1print(count/1000)?該程序只是測(cè)試了一局的勝率,要是五局三勝,或者三局兩勝,又該如何修改程序呢?轉(zhuǎn)移語(yǔ)句break語(yǔ)句continue語(yǔ)句pass語(yǔ)句break語(yǔ)句跳出整個(gè)循環(huán)結(jié)構(gòu),轉(zhuǎn)而執(zhí)行該循環(huán)結(jié)構(gòu)后面的語(yǔ)句>>>L=[1,2,3,4,5,6,7,8,9]>>>forxinL: ifx==4: break#當(dāng)列表中的值等于4時(shí),退出整個(gè)循環(huán) else: print(x,end='') 123#運(yùn)行結(jié)果break語(yǔ)句【例4-19】打印輸出兩位數(shù),要求個(gè)位上的數(shù)字小于等于十位上的數(shù)字,十位上數(shù)字相同的兩位數(shù)在同一行輸出,結(jié)果如圖所示.【參考代碼】forxinrange(1,10):foryinrange(10):ifx<y:print('')breakelse:print(10*x+y,end='')continue語(yǔ)句跳過(guò)循環(huán)體中在continue語(yǔ)句之后的所有語(yǔ)句,繼續(xù)下一輪循環(huán),不會(huì)立即結(jié)束本次循環(huán)>>>L=[1,2,3,4,5,6,7,8,9]>>>forxinL: ifx%2==0: continue#當(dāng)列表中的元素是偶數(shù)時(shí),跳出當(dāng)次循環(huán),進(jìn)行下一次 else: print(x,end='')pass語(yǔ)句pass語(yǔ)句什么也不做,即它是一個(gè)空操作應(yīng)用于只是想讓程序循環(huán)一定次數(shù),但是在循環(huán)過(guò)程什么也不做forxinrange(10):pass也應(yīng)用在函數(shù)定義或異常處理方面等小結(jié)引例基本語(yǔ)句及順序結(jié)構(gòu)語(yǔ)句條件語(yǔ)句while循環(huán)for循環(huán)轉(zhuǎn)移語(yǔ)句Python語(yǔ)言程序設(shè)計(jì)PythonLanguageProgramming5字符串、列表和元組單詞本wordbook的創(chuàng)建序列字符串列表元組單詞本wordbook的創(chuàng)建【例5-1】在英語(yǔ)的學(xué)習(xí)過(guò)程中,遇到不認(rèn)識(shí)的單詞,可以將其添加到單詞本中,用于后續(xù)復(fù)習(xí)使用。要求:打開(kāi)一個(gè)英文文本,過(guò)濾掉介詞、代詞等停用詞(去掉長(zhǎng)度小于5的單詞)后,用該文本中的剩余詞匯構(gòu)建初始單詞本wordbook.txt。對(duì)于給定文本,遍歷其中的詞匯,對(duì)于長(zhǎng)度大于5的單詞,若其不在當(dāng)前的單詞本中,則把它添加到單詞本中。單詞本wordbook的創(chuàng)建【參考代碼】file=open('DeclarationofIndependent.txt','r').read()#將文本讀出字符串file.replace(',','')file.replace('.','')filelist=file.split()#字符串單詞為元素轉(zhuǎn)換為列表filelist1=[]#構(gòu)建空列表forwordinfilelist:#遍歷列表中的元素iflen(word)>5:#如果單詞的長(zhǎng)度大于5cleanword=word.lower().strip('.,')#將大寫(xiě)全部轉(zhuǎn)換為小寫(xiě)并去除標(biāo)點(diǎn)符號(hào)filelist1.append(cleanword)#將清洗過(guò)的單詞添加到列表中#單詞本初始化wordbook=open('wordbook.txt','w')#以讀的方式打開(kāi)文本文件forxinfilelist1:#對(duì)已經(jīng)清洗過(guò)單詞元素的列表做遍歷wordbook.write(x)#把單詞元素寫(xiě)入單詞本wordbook.write('\n')#每寫(xiě)一個(gè)單詞的同時(shí),寫(xiě)入一個(gè)換行wordbook.close()#關(guān)閉單詞本單詞本wordbook的創(chuàng)建#更新單詞本s='Nowweareengagedinagreatcivilwar,testingwhetherthatnation,oranynationsoconceivedandsodedicated,canlongendure.Wearemetonagreatbattle-fieldofthatwar.Wehavecometodedicateaportionofthatfield,asafinalrestingplaceforthosewhoheregavetheirlivesthatthatnationmightlive.Itisaltogetherfittingandproperthatweshoulddothis.'s.replace(',','')s.replace('.','')list_s=s.split()#將給定的文本字符串轉(zhuǎn)換為列表clean_s=[]forwordinlist_s:#對(duì)列表做遍歷,清洗單詞iflen(word)>5:cleanword=word.lower().strip('.,')clean_s.append(cleanword)bookfile=open('wordbook.txt','r').read()#打開(kāi)原有單詞本文件,放入列表中wordbookfile=bookfile.split()print(len(wordbookfile))#輸出原有單詞本的單詞數(shù)量forwordinclean_s:ifwordnotinwordbookfile:#更新原有單詞本wordbookfile.append(word)bookfile=open('wordbook.txt','w')forwinwordbookfile:bookfile.write(w)bookfile.close()print(len(wordbookfile))#輸出新的單詞本的單詞數(shù)量序列什么是序列標(biāo)準(zhǔn)類型的操作符序列類型的操作符內(nèi)建函數(shù)什么是序列一組元素按照一定的順序組合在一起則稱為序列序列中每一個(gè)元素都用一個(gè)數(shù)字來(lái)表示它的位置,這個(gè)數(shù)字稱為索引,以0,1,2...為順序遞推字符串、列表、元組、buffer對(duì)象和xrange對(duì)象是Python五種內(nèi)建的序列什么是序列【例5-2】簡(jiǎn)單的序列操作【參考代碼】>>>astring='helloworld'#字符串序列>>>alist=list(astring)#將字符串轉(zhuǎn)換為列表序列>>>alist['h','e','l','l','o','','w','o','r','l','d']#每個(gè)字母就構(gòu)成列表的元素>>>atuple=tuple(alist)#將列表轉(zhuǎn)換為元組>>>atuple('h','e','l','l','o','','w','o','r','l','d')#元組以小括號(hào)為標(biāo)志>>>alist.clear()#清除元素>>>alist[]>>>alist=[1,5,6,8]+[4,5,7,9]#加號(hào)‘+’連結(jié)序列,而非加法操作>>>alist[1,5,6,8,4,5,7,9]>>>alist[4:7]#列表的切片操作[4,5,7]>>>astring[0]#輸出字符串序列的第0號(hào)元素'h'>>>alist.index(7)#輸出列表中元素7的索引6>>>alist[7]#輸出列表序列中索引為7的元素9>>>sorted(alist)#對(duì)列表序列進(jìn)行排序[1,4,5,5,6,7,8,9]>>>sorted(astring)['','d','e','h','l','l','l','o','o','r','w']#對(duì)字符串元素進(jìn)行排序標(biāo)準(zhǔn)類型的操作符標(biāo)準(zhǔn)類型的操作符共分為三種:值比較、對(duì)象身份比較、布爾運(yùn)算(邏輯運(yùn)算)值比較按序比較,只有在元素值相同,順序也相同的情況下,兩個(gè)序列才相等常見(jiàn)的值比較運(yùn)算:>(大于),<(小于),>=(大于等于),<=(小于等于),==(等于),!=(不等于)>>>'father'>'children'True>>>[1,2,3,4]==[13,1,3,4,4]False>>>(1,2,3)==(1,2,3)True>>>[1,2,3,4]>=[1,3,5,6]False標(biāo)準(zhǔn)類型的操作符標(biāo)準(zhǔn)類型的操作符共分為三種:值比較、對(duì)象身份比較、布爾運(yùn)算(邏輯運(yùn)算)對(duì)象身份比較比較兩個(gè)序列是否為同一個(gè)對(duì)象對(duì)象身份比較運(yùn)算的運(yùn)算符有:is(是),isnot(不是)>>>a=[1,2,3]>>>b=[1,2,3]>>>a==bTrue>>>aisbFalse>>>c=[1,2,3]>>>d=c>>>cisdTrue標(biāo)準(zhǔn)類型的操作符標(biāo)準(zhǔn)類型的操作符共分為三種:值比較、對(duì)象身份比較、布爾運(yùn)算(邏輯運(yùn)算)布爾運(yùn)算返回值為真或假連結(jié)序列對(duì)象的常見(jiàn)的布爾運(yùn)算有:not(非),and(與),or(或)>>>('father'>'children')and([1,2,3,4]==[13,1,3,4,4])False>>>('father'>'children')or([1,2,3,4]==[13,1,3,4,4])True>>>not'father'>'children'False序列類型的操作符序列類型的操作符是指序列所特有的操作符和在序列上產(chǎn)生和其他數(shù)據(jù)結(jié)構(gòu)不同效果的操作符根據(jù)操作符的優(yōu)先級(jí)從高到低,分別為:索引、切片、重復(fù)、連接、成員檢查索引([])seq[index]

獲取序列seq中下標(biāo)為index的元素>>>a=[1,2,3]>>>a[1]2序列類型的操作符根據(jù)操作符的優(yōu)先級(jí)從高到低,分別為:索引、切片、重復(fù)、連接、成員檢查切片([index1:index2],[index1:index2:length])seq[index1:index2]

獲取下標(biāo)從index1開(kāi)始到index2(不包括)為止的元素集合seq[index1:index2:length]

獲取下標(biāo)從index1開(kāi)始到index2(不包括)為止步長(zhǎng)為length的元素集合例>>>a=[1,2,3,4,5,6]>>>a[0:2][1,2]>>>a[0:6:2][1,3,5]序列類型的操作符根據(jù)操作符的優(yōu)先級(jí)從高到低,分別為:索引、切片、重復(fù)、連接、成員檢查重復(fù)(*)seq*Integer

獲得seq序列的Integer(整型數(shù))次重復(fù)>>>[1,2,3]*3[1,2,3,1,2,3,1,2,3]序列類型的操作符根據(jù)操作符的優(yōu)先級(jí)從高到低,分別為:索引、切片、重復(fù)、連接、成員檢查連接(+)seq1+seq2

連接序列1和序列2,以獲得一個(gè)按順序包含兩個(gè)序列全部元素的新序列。但是兩個(gè)序列是要同一個(gè)類型的>>>[1,2,3]+[4,5,6][1,2,3,4,5,6]>>>[1,2,3]+'abc'#連接兩個(gè)不同序列對(duì)象時(shí),會(huì)報(bào)錯(cuò)Traceback(mostrecentcalllast):File"<pyshell#0>",line1,in<module>[1,2,3]+'abc'TypeError:canonlyconcatenatelist(not"str")tolist序列類型的操作符根據(jù)操作符的優(yōu)先級(jí)從高到低,分別為:索引、切片、重復(fù)、連接、成員檢查成員檢查(in和notin)objectinSeq

判斷元素object是否在序列Seq中,若在則返回True反之返回FalseobjectnotinSeq

判斷元素object是否不在序列Seq中,若在則返回False反之返回True>>>1in[1,2,3]True>>>4in[1,2,3]False>>>1notin[1,2,3]False>>>4notin[1,2,3]True內(nèi)建函數(shù)類型轉(zhuǎn)換函數(shù)list(),str()和tuple()三個(gè)類型轉(zhuǎn)換函數(shù)被用做在各種序列類型之間轉(zhuǎn)換>>>a='abcdef'>>>b=[1,2,3]>>>c=(1,2,3)>>>type(a)<class'str'>>>>type(b)<class'list'>>>>type(c)<class'tuple'>>>>type(list(a))<class'list'>>>>list(a)['a','b','c','d','e','f']>>>str(b)'[1,2,3]'>>>type(str(c))<class'str'>內(nèi)建函數(shù)len()函數(shù)len()函數(shù)接受一個(gè)序列作為參數(shù),返回這個(gè)序列的長(zhǎng)度(元素的個(gè)數(shù))>>>len('abcdefghijk')11>>>len([1,2,3,4,5])5內(nèi)建函數(shù)max()、min()和sum()函數(shù)接受一個(gè)序列作為參數(shù),返回該序列中最大值、最小值和元素的和,前提是該序列中各個(gè)元素之間是可比較的或可計(jì)算的>>>max([1,32,12,14])32>>>min([3,55,2,13])2>>>min('jihbgyr')'b'>>>sum([1,2,3])6>>>sum('asd')Traceback(mostrecentcalllast):File"<pyshell#3>",line1,in<module>sum('asd')TypeError:unsupportedoperandtype(s)for+:'int'and'str'內(nèi)建函數(shù)reversed()函數(shù)reversed()函數(shù)接受一個(gè)序列作為參數(shù),返回一個(gè)以逆序訪問(wèn)的迭代器,需要for循環(huán),將迭代器中的元素逐個(gè)輸出>>>foriteminreversed([1,2,3,4,5]):print(item)54321>>>reversed('sdfgh')<reversedobjectat0x0000021A79DA4D90>內(nèi)建函數(shù)sorted()函數(shù)sorted()函數(shù)接受一個(gè)序列,返回一個(gè)有序的列表。其中序列中各個(gè)元素必須是兩兩可比的sorted(seq,key=None,reverse=False)

seq為用于被排序的序列,key為指定的排序元素,reverse指定排序規(guī)則,reverse=True時(shí)降序,reverse=False時(shí)升序(默認(rèn))內(nèi)建函數(shù)sorted(seq,key=None,reverse=False)

seq為用于被排序的序列,key為指定的排序元素,reverse指定排序規(guī)則,reverse=True時(shí)降序,reverse=False時(shí)升序(默認(rèn))>>>sorted([4,1,66,43])[1,4,43,66]>>>sorted([4,1,66,43],reverse=True)[66,43,4,1]>>>sorted(['a','k','e','q'])['a','e','k','q']>>>example_list=[5,0,6,1,2,7,3,4]>>>result_list=sorted(example_list,key=lambdax:x*2)>>>result_list[0,1,2,3,4,5,6,7]>>>students=[('john','A',15),('jane','B',12),('dave','B',10),]>>>sorted(students,key=lambdastudent:student[2])#按照學(xué)生年齡排序[('dave','B',10),('jane','B',12),('john','A',15)]>>>sorted(students,key=lambdastudent:student[2],revers

溫馨提示

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