版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Python程序設(shè)計(jì)基礎(chǔ)及應(yīng)用第1章Python概述學(xué)習(xí)目標(biāo)1.了解Python語(yǔ)言的重要性和概念2.理解Python語(yǔ)言的學(xué)習(xí)意義3.學(xué)會(huì)安裝和部署Python平臺(tái)4.了解Python編程規(guī)范5.了解Python常用函數(shù)和第三方庫(kù)參考教材:Python學(xué)習(xí)手冊(cè)Python基礎(chǔ)教程Python入門到實(shí)踐父與子的編程之旅成績(jī)比例:平時(shí)(50%):軟件開(kāi)發(fā)20+表現(xiàn)20+作業(yè)10期末(50%):開(kāi)卷考試上課要求:攜帶物品:筆記本、筆、電腦、手機(jī)(靜音、無(wú)振動(dòng))上課要求1.1為什么選擇Python1.1為什么選擇PythonPython是一種面向?qū)ο蟮慕忉屝缘挠?jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,也是一種功能強(qiáng)大而完善的通用型語(yǔ)言,由GuidovanRossum于1989年發(fā)明。Python語(yǔ)法簡(jiǎn)潔,具有腳本語(yǔ)言中最豐富和強(qiáng)大的類庫(kù),足以支持絕大多數(shù)日常應(yīng)用。1.1.1Python簡(jiǎn)介1.1.2學(xué)習(xí)意義Python排名TIOBE編程語(yǔ)言社區(qū)排行榜是編程語(yǔ)言流行趨勢(shì)的一個(gè)指標(biāo),每月更新。這份排行榜排名基于互聯(lián)網(wǎng)上有經(jīng)驗(yàn)的程序員、課程和第三方廠商的數(shù)量。排名使用著名的搜索引擎(諸如Google、MSN、Yahoo!、Wikipedia、YouTube以及Baidu等)進(jìn)行計(jì)算。請(qǐng)注意這個(gè)排行榜只是反映某個(gè)編程語(yǔ)言的熱門程度,并不能說(shuō)明一門編程語(yǔ)言好不好,或者一門語(yǔ)言所編寫的代碼數(shù)量多少。1.1.2學(xué)習(xí)意義Python排名1.1.2學(xué)習(xí)意義1.1.2學(xué)習(xí)意義就業(yè)薪酬1.1.2學(xué)習(xí)意義就業(yè)薪酬1.1.2學(xué)習(xí)意義1.1.3應(yīng)用領(lǐng)域1.1.3應(yīng)用領(lǐng)域Python在公司中應(yīng)用1.1.3應(yīng)用領(lǐng)域?qū)W習(xí)Python階段第一個(gè)階段:初級(jí),掌握Python的語(yǔ)法和一些常用庫(kù)的使用:參考廖雪峰的博客和書籍;《Python參考手冊(cè)》,當(dāng)字典用;如果寫一些小程序的話,這一階段足夠了。學(xué)習(xí)Python階段第二個(gè)階段:中級(jí),掌握自己特定領(lǐng)域的庫(kù),掌握Python寫法,非常熟悉Python的特性:《編寫高質(zhì)量代碼--改善Python程序的91個(gè)建議》;自己研究領(lǐng)域的相關(guān)書籍,比如數(shù)據(jù)處理方面、人工智能方面、做網(wǎng)站方面等;Github項(xiàng)目多看多寫;學(xué)習(xí)Python階段第三個(gè)階段:高級(jí),從整個(gè)工程項(xiàng)目著眼,考慮document,distribution,性能優(yōu)化等:《thehackerguidetoPython》,這本書對(duì)項(xiàng)目的布局,文檔,性能,發(fā)布等做了很多詳細(xì)的介紹;做一個(gè)大型的有意義的項(xiàng)目,每個(gè)類,每個(gè)函數(shù),每行代碼反復(fù)推敲;1.2Python安裝環(huán)境配置1.2.1Python下載和安裝1.2.1Python下載和安裝操作界面IDLEhelloworld!Help默認(rèn)編程環(huán)境:IDLE其他常用開(kāi)發(fā)環(huán)境:Eclipse+PyDevpyCharm社區(qū)版visualstudiocodeEricPythonWinAnaconda1.2.2pycharm下載和安裝1.2.2pycharm下載和安裝1.2.2vscode下載和安裝1.3Python編程規(guī)范1.3.1命名規(guī)則在Python中,合法的標(biāo)識(shí)符所使用的字符集包括英文26個(gè)大小寫字母、0-9十個(gè)阿拉伯?dāng)?shù)字和下劃線。好的標(biāo)識(shí)符命名應(yīng)該能讓人見(jiàn)名知義,簡(jiǎn)潔明了。變量名、函數(shù)名稱、類名、模塊名和文件名等的標(biāo)識(shí)符其第一個(gè)字符必須是26個(gè)大小寫英文字母或者下劃線,不允許含有空格或者任何的標(biāo)點(diǎn)符號(hào),而且大小寫敏感。1.3.1命名規(guī)則1.3.1命名規(guī)則stuname='吳迪'#學(xué)生姓名,字符串類型變量computergrade=88#專業(yè)課成績(jī),整數(shù)類型變量print("學(xué)生姓名:",stuname,type(stuname))print("專業(yè)課成績(jī):",computergrade,type(computergrade))computergrade='88'#專業(yè)課成績(jī),字符串類型變量print("專業(yè)課成績(jī):",computergrade,type(computergrade))數(shù)據(jù)類型數(shù)據(jù)類型1.3.2注釋規(guī)則文件注釋是指在代碼文件最上面進(jìn)行多行字符串注釋來(lái)描述文件版權(quán)信息、作者信息、編碼時(shí)間、功能描述、歷史版本等。#-*-coding:utf-8-*-#版權(quán)所有:教材編寫小組#作者:吳迪#編寫日期:2023.07.01#文件描述:變量的命名和輸出1.3.3導(dǎo)入規(guī)則在Python中,有多種不同的模塊導(dǎo)入方式,使用最多的就是使用import方式進(jìn)行導(dǎo)入。導(dǎo)入的包一般放在代碼文件的最前面。語(yǔ)法格式為:import
模塊名。上面的import模塊名是導(dǎo)入該模塊內(nèi)所有的函數(shù),但如果讀者只想使用該模塊中特定的函數(shù),可以使用from...import...語(yǔ)句來(lái)導(dǎo)入模塊中的特定函數(shù)或變量。語(yǔ)法格式為:from模塊名import特定函數(shù)。1.4Python常用內(nèi)置函數(shù)和庫(kù)1.4.1常用內(nèi)置函數(shù)函數(shù)描述abs(number)絕對(duì)值cmath.sqrt(number)平方根,可用于負(fù)數(shù)float(object)字符串和數(shù)字轉(zhuǎn)換為浮點(diǎn)數(shù)help()提供交互式幫助input(prompt)獲取用戶輸入int(object)字符串和數(shù)字轉(zhuǎn)換為整數(shù)long(object)字符串和數(shù)字轉(zhuǎn)換為長(zhǎng)整型數(shù)math.ceil(number)返回上整數(shù),浮點(diǎn)型math.floor(number)返回下整數(shù),浮點(diǎn)型math.sqrt(number)平方根,只能正數(shù)pow(x,y[,z])X的y次冪(所得結(jié)果對(duì)Z取模)raw_input(prompt)獲取用戶輸入,結(jié)果為字符串repr(object)對(duì)象的字符串表示round(number[,ndigits])根據(jù)精度進(jìn)行四舍五入str(object)值轉(zhuǎn)換為字符串函數(shù)功能簡(jiǎn)要說(shuō)明delattr(obj,name)刪除屬性,等價(jià)于deldir(obj)返回指定對(duì)象或模塊obj的成員列表,如果不帶參數(shù)則返回當(dāng)前作用域內(nèi)所有標(biāo)識(shí)符divmod(x,y)返回包含整商和余數(shù)的元組((x-x%y)/y,x%y)enumerate(iterable[,start])返回包含元素形式為(0,iterable[0]),(1,iterable[1]),(2,iterable[2]),...的迭代器對(duì)象eval(s[,globals[,locals]])計(jì)算并返回字符串s中表達(dá)式的值exec(x)執(zhí)行代碼或代碼對(duì)象xexit()退出當(dāng)前解釋器環(huán)境filter(func,seq)返回filter對(duì)象,其中包含序列seq中使得單參數(shù)函數(shù)func返回值為True的那些元素,如果函數(shù)func為None則返回包含seq中等價(jià)于True的元素的filter對(duì)象float(x)把整數(shù)或字符串x轉(zhuǎn)換為浮點(diǎn)數(shù)并返回frozenset([x]))創(chuàng)建不可變的字典對(duì)象getattr(obj,name[,default])獲取對(duì)象中指定屬性的值,等價(jià)于,如果不存在指定屬性則返回default的值,如果要訪問(wèn)的屬性不存在并且沒(méi)有指定default則拋出異常續(xù)表11.4.1常用內(nèi)置函數(shù)函數(shù)功能簡(jiǎn)要說(shuō)明globals()返回包含當(dāng)前作用域內(nèi)全局變量及其值的字典hasattr(obj,name)測(cè)試對(duì)象obj是否具有名為name的成員hash(x)返回對(duì)象x的哈希值,如果x不可哈希則拋出異常help(obj)返回對(duì)象obj的幫助信息hex(x)把整數(shù)x轉(zhuǎn)換為十六進(jìn)制串id(obj)返回對(duì)象obj的標(biāo)識(shí)(內(nèi)存地址)input([提示])顯示提示,接收鍵盤輸入的內(nèi)容,返回字符串int(x[,d])返回實(shí)數(shù)(float)、分?jǐn)?shù)(Fraction)或高精度實(shí)數(shù)(Decimal)x的整數(shù)部分,或把d進(jìn)制的字符串x轉(zhuǎn)換為十進(jìn)制并返回,d默認(rèn)為十進(jìn)制isinstance(obj,class-or-type-or-tuple)測(cè)試對(duì)象obj是否屬于指定類型(如果有多個(gè)類型的話需要放到元組中)的實(shí)例iter(...)返回指定對(duì)象的可迭代對(duì)象len(obj)返回對(duì)象obj包含的元素個(gè)數(shù),適用于列表、元組、集合、字典、字符串以及range對(duì)象和其他可迭代對(duì)象續(xù)表21.4.1常用內(nèi)置函數(shù)函數(shù)功能簡(jiǎn)要說(shuō)明list([x])、set([x])、tuple([x])、dict([x])把對(duì)象x轉(zhuǎn)換為列表、集合、元組或字典并返回,或生成空列表、空集合、空元組、空字典locals()返回包含當(dāng)前作用域內(nèi)局部變量及其值的字典map(func,*iterables)返回包含若干函數(shù)值的map對(duì)象,函數(shù)func的參數(shù)分別來(lái)自于iterables指定的每個(gè)迭代對(duì)象,max(x)、min(x)返回可迭代對(duì)象x中的最大值、最小值,要求x中的所有元素之間可比較大小,允許指定排序規(guī)則和x為空時(shí)返回的默認(rèn)值next(iterator[,default])返回可迭代對(duì)象x中的下一個(gè)元素,允許指定迭代結(jié)束之后繼續(xù)迭代時(shí)返回的默認(rèn)值oct(x)把整數(shù)x轉(zhuǎn)換為八進(jìn)制串open(name[,mode])以指定模式mode打開(kāi)文件name并返回文件對(duì)象ord(x)返回1個(gè)字符x的Unicode編碼pow(x,y,z=None)返回x的y次方,等價(jià)于x**y或(x**y)%z續(xù)表31.4.1常用內(nèi)置函數(shù)函數(shù)功能簡(jiǎn)要說(shuō)明print(value,...,sep='',end='\n',file=sys.stdout,flush=False)基本輸出函數(shù)quit()退出當(dāng)前解釋器環(huán)境range([start,]end[,step])返回range對(duì)象,其中包含左閉右開(kāi)區(qū)間[start,end)內(nèi)以step為步長(zhǎng)的整數(shù)reduce(func,sequence[,initial])將雙參數(shù)的函數(shù)func以迭代的方式從左到右依次應(yīng)用至序列seq中每個(gè)元素,最終返回單個(gè)值作為結(jié)果。在Python2.x中該函數(shù)為內(nèi)置函數(shù),在Python3.x中需要從functools中導(dǎo)入reduce函數(shù)再使用repr(obj)返回對(duì)象obj的規(guī)范化字符串表示形式,對(duì)于大多數(shù)對(duì)象有eval(repr(obj))==objreversed(seq)返回seq(可以是列表、元組、字符串、range以及其他可迭代對(duì)象)中所有元素逆序后的迭代器對(duì)象續(xù)表41.4.1常用內(nèi)置函數(shù)函數(shù)功能簡(jiǎn)要說(shuō)明round(x[,小數(shù)位數(shù)])對(duì)x進(jìn)行四舍五入,若不指定小數(shù)位數(shù),則返回整數(shù)sorted(iterable,key=None,reverse=False)返回排序后的列表,其中iterable表示要排序的序列或迭代對(duì)象,key用來(lái)指定排序規(guī)則或依據(jù),reverse用來(lái)指定升序或降序。該函數(shù)不改變iterable內(nèi)任何元素的順序str(obj)把對(duì)象obj直接轉(zhuǎn)換為字符串sum(x,start=0)返回序列x中所有元素之和,要求序列x中所有元素必須為數(shù)字,允許指定起始值start,返回start+sum(x)type(obj)返回對(duì)象obj的類型zip(seq1[,seq2[...]])返回zip對(duì)象,其中元素為(seq1[i],seq2[i],...)形式的元組,最終結(jié)果中包含的元素個(gè)數(shù)取決于所有參數(shù)序列或可迭代對(duì)象中最短的那個(gè)續(xù)表51.4.1常用內(nèi)置函數(shù)用Python進(jìn)行程序設(shè)計(jì),輸入是通過(guò)input()函數(shù)來(lái)實(shí)現(xiàn)的,imput()的一般格式為:x=input('提示:')該函數(shù)返回輸入的對(duì)象??奢斎霐?shù)字、字符串和其它任意類型對(duì)象。1.4.1常用內(nèi)置函數(shù)>>>x=input("Pleaseinput:")Pleaseinput:3#沒(méi)有界定符,整數(shù)>>>print(type(int(x)))<type'int'>>>>x=input("Pleaseinput:")Pleaseinput:'3'#單引號(hào),字符串>>>printtype(x)<type'str'>>>>x=input("Pleaseinput:")Pleaseinput:[1,2,3]#方括號(hào),列表>>>printtype(x)<type'list'>1.4.1常用內(nèi)置函數(shù)print()1.4.1常用內(nèi)置函數(shù)自然語(yǔ)言文本處理模塊:jieba,snownlp界面設(shè)計(jì)開(kāi)發(fā)模塊:easygui,tkinter數(shù)學(xué)計(jì)算模塊:math,隨機(jī)數(shù)模塊:random,簡(jiǎn)單繪圖模塊:turtle,工程繪圖模塊:matplotlib,Web開(kāi)發(fā)模塊:Django,F(xiàn)lask爬蟲開(kāi)發(fā)模塊:Beautifulsoup,Request機(jī)器學(xué)習(xí)模塊:scilearning游戲開(kāi)發(fā)模塊:pygame1.4.2常用第三方庫(kù)練習(xí)1最愛(ài)。把你的運(yùn)動(dòng)愛(ài)好列舉出來(lái),給這個(gè)列表起個(gè)變量名字games。把你喜歡的食物列舉出來(lái),起個(gè)名字foods。然后這兩個(gè)列表連在一起,并把結(jié)果命名為favorites,最后打印出來(lái)。hobbies=['pokemon','legomindstrorms','mountainbiking']foods=['pancakes','chocolate','apples']favorites=hobbies+foodsprint(favorites)練習(xí)2創(chuàng)建兩個(gè)變量:一個(gè)指向你的姓,一個(gè)指向你的名。創(chuàng)建一個(gè)字符串,用占位符使用這兩個(gè)變量打印帶有你名字的信息.first_name='brando'last_name='ickett'print('Hithere,%s%s!'%(first_name,last_name))練習(xí)3例1:用戶輸入一個(gè)三位自然數(shù),計(jì)算并輸出其佰位、十位和個(gè)位上的數(shù)字。x=input('請(qǐng)輸入一個(gè)三位數(shù):')x=int(x)a=x//100b=x//10%10c=x%10print(a,b,c)練習(xí)3還可以這樣寫x=input('請(qǐng)輸入一個(gè)三位數(shù):')x=int(x)a,b=divmod(x,100)b,c=divmod(b,10)print(a,b,c)練習(xí)4任意輸入三個(gè)英文單詞,按字典順序輸出。s=input('x,y,z=')x,y,z=s.split(',')ifx>y:
x,y=y,xifx>z:x,z=z,xify>z:y,z=z,yprint(x,y,z)或直接寫為:s=input('x,y,z=')x,y,z=s.split(',')x,y,z=sorted([x,y,z])print(x,y,z)練習(xí)4作業(yè)#-*-coding:utf-8-*-'''編寫人:吳迪編寫時(shí)間:20230728功能:該程序隨機(jī)選擇一個(gè)列表元素輸出結(jié)果'''importrandomrandpername=['劉備','關(guān)羽','張飛']randtime=['今天','后天','5點(diǎn)']randplace=['在公園','在地球上','在圖書館']randdo=["跑步","跳繩","打游戲"]print(random.choice(randpername),end='')print(random.choice(randtime),end='')print(random.choice(randplace),end='')print(random.choice(randdo))作業(yè)#!/usr/bin/Python#-*-coding:utf-8-*-'''編寫人:吳迪編寫時(shí)間:20230728功能:實(shí)現(xiàn)雞兔同籠問(wèn)題'''print("雞兔同籠問(wèn)題求解:")head=input("請(qǐng)輸入頭的個(gè)數(shù):")feet=input("請(qǐng)輸入腳的個(gè)數(shù):")print("雞和兔子的頭個(gè)數(shù)一共為:%s")%headprint("雞和兔子的腳個(gè)數(shù)一共為:%s")%feetprint("兔子的個(gè)數(shù)為:%d")%int((feet-2*head)/2)rabbit=int((feet-2*head)/2)print("雞個(gè)數(shù)為:%d")%(head-rabbit)使用菜單“Run”==>“CheckModule”來(lái)檢查程序中是否存在語(yǔ)法錯(cuò)誤,或者使用菜單“Run”==>“RunModule”運(yùn)行程序,程序運(yùn)行結(jié)果將直接顯示在IDLE交互界面上。第2章Python序列本章學(xué)習(xí)目標(biāo)1.理解序列的基本思想2.掌握列表的常用函數(shù)和使用方法3.掌握元組的常用函數(shù)和使用方法4.掌握字典的常用函數(shù)和使用方法5.掌握字符串的常用函數(shù)和使用方法Python序列概述Python序列類似于其他語(yǔ)言中的數(shù)組,但功能要強(qiáng)大很多。Python中常用的序列結(jié)構(gòu)有列表、元組、字符串,字典、集合以及range等對(duì)象也支持很多類似的操作。列表、元組、字符串支持雙向索引,第一個(gè)元素下標(biāo)為0,第二個(gè)元素下標(biāo)為1,以此類推;最后一個(gè)元素下標(biāo)為-1,倒數(shù)第二個(gè)元素下標(biāo)為-2,以此類推。2.1.1列表概述列表是Python中內(nèi)置有序可變序列,列表的所有元素放在一對(duì)中括號(hào)“[]”中,并使用逗號(hào)分隔開(kāi);當(dāng)列表元素增加或刪除時(shí),列表對(duì)象自動(dòng)進(jìn)行擴(kuò)展或收縮內(nèi)存,保證元素之間沒(méi)有縫隙;在Python中,一個(gè)列表中的數(shù)據(jù)類型可以各不相同,可以同時(shí)分別為整數(shù)、實(shí)數(shù)、字符串等基本類型,甚至是列表、元組、字典、集合以及其他自定義類型的對(duì)象。2.1列表2.1.1列表概述使用“=”直接將一個(gè)列表賦值給變量即可創(chuàng)建列表對(duì)象>>>grade=[85,60,78,90,93]#創(chuàng)建成績(jī)列表>>>a_list=[]#創(chuàng)建空列表>>>coursename=['軟件工程','軟件過(guò)程和項(xiàng)目管理','Java程序設(shè)計(jì)','python程序設(shè)計(jì)基礎(chǔ)','Oracle數(shù)據(jù)庫(kù)']#創(chuàng)建課程列表>>>infolist=[‘李小明’,20,1.88,‘男’,[‘漢堡’,‘可口可樂(lè)’,‘松花蛋’,‘驢肉火燒’,‘紫菜蛋花湯’]]#創(chuàng)建個(gè)人信息列表2.1列表2.1.1列表概述也可以使用list()函數(shù)將元組、range對(duì)象、字符串或其他類型的可迭代對(duì)象類型的數(shù)據(jù)轉(zhuǎn)換為列表。>>>a_list=list((3,5,7,9,11))>>>a_list[3,5,7,9,11]>>>list(range(1,10,2))[1,3,5,7,9]>>>list('helloworld')['h','e','l','l','o','','w','o','r','l','d‘]2.1列表2.1.1列表概述切片是Python序列的重要操作之一,適用于列表、元組、字符串、range對(duì)象等類型。切片使用2個(gè)冒號(hào)分隔的3個(gè)數(shù)字來(lái)完成,第一個(gè)數(shù)字表示切片開(kāi)始位置(默認(rèn)為0),第二個(gè)數(shù)字表示切片截止(但不包含)位置(默認(rèn)為列表長(zhǎng)度),第三個(gè)數(shù)字表示切片的步長(zhǎng)(默認(rèn)為1),當(dāng)步長(zhǎng)省略時(shí)可以順便省略最后一個(gè)冒號(hào)??梢允褂们衅瑏?lái)截取列表中的任何部分,得到一個(gè)新列表,也可以通過(guò)切片來(lái)修改和刪除列表中部分元素,甚至可以通過(guò)切片操作為列表對(duì)象增加元素。2.1列表2.1.1列表概述>>>print(grade[0:3])#輸出grade列表中前3個(gè)元素[85,60,78]>>>print(coursename[-4:-1])#輸出中間3個(gè)元素['軟件過(guò)程和項(xiàng)目管理','Java程序設(shè)計(jì)','python程序設(shè)計(jì)基礎(chǔ)']>>>print(infolist[::2])#偶數(shù)位置,隔一個(gè)取一個(gè)['李小明',1.88,['漢堡','可口可樂(lè)','松花蛋','驢肉火燒','紫菜蛋花湯']]2.1列表2.1.1列表概述>>>aList=[3,4,5,6,7,9,11,13,15,17]>>>aList[::]#返回包含元素的新列表[3,4,5,6,7,9,11,13,15,17]>>>aList[::-1]#逆序的所有元素[17,15,13,11,9,7,6,5,4,3]>>>aList[1::2]#奇數(shù)位置,隔一個(gè)取一個(gè)[4,6,9,13,17]2.1列表2.1.1列表概述>>>aList[3::]#從下標(biāo)3開(kāi)始的所有元素[6,7,9,11,13,15,17]>>>aList[3:6]#下標(biāo)在[3,6)之間的所有元素[6,7,9]>>>aList[0:100:1]#前100個(gè)元素,自動(dòng)截?cái)郲3,4,5,6,7,9,11,13,15,17]>>>a[100:]#下標(biāo)100之后的所有元素,自動(dòng)截?cái)郲]>>>x[100]#直接使用下標(biāo)訪問(wèn)會(huì)發(fā)生越界IndexError:listindexoutofrange2.1列表2.1.1列表概述可以使用切片來(lái)原地修改列表內(nèi)容>>>aList=[3,5,7]>>>aList[len(aList):]=[9]#在尾部追加元素>>>aList[3,5,7,9]>>>aList[:3]=[1,2,3]#替換前3個(gè)元素>>>aList[1,2,3,9]>>>aList[:3]=[]#刪除前3個(gè)元素>>>aList[9]2.1列表2.1.2列表常用方法2.1列表編號(hào)分類方法功能1列表創(chuàng)建list()函數(shù)將元組、range對(duì)象、字符串或其他類型的可迭代對(duì)象類型的數(shù)據(jù)轉(zhuǎn)換為列表。2列表增加append()原地修改列表,在列表尾部添加元素,速度較快。所謂“原地”,是指不改變列表在內(nèi)存中的首地址。insert()將元素添加至列表的指定位置。extend(L)將列表L中所有元素添加至列表尾部3列表刪除del該命令刪除列表中的指定位置上的元素。clear()刪除列表lst中所有元素,但保留列表對(duì)象pop()刪除并返回指定(默認(rèn)為最后一個(gè))位置上的元素,如果給定的索引超出了列表的范圍則拋出異常。remove()刪除首次出現(xiàn)的指定元素,如果列表中不存在要?jiǎng)h除的元素,則拋出異常。4列表查找index()獲取指定元素首次出現(xiàn)的下標(biāo),若列表對(duì)象中不存在指定元素,則拋出異常。5列表統(tǒng)計(jì)count()統(tǒng)計(jì)指定元素在列表對(duì)象中出現(xiàn)的次數(shù)6列表排序sort()進(jìn)行原地排序,支持多種不同的排序方法。reverse()列表元素原地逆序。7其他函數(shù)len(列表)返回列表中的元素個(gè)數(shù),同樣適用于元組、字典、集合、字符串等。max(列表)返回列表中的最大元素,同樣適用于元組、字典、集合、range對(duì)象等。min(列表)返回列表中的最小元素,同樣適用于元組、字典、集合、range對(duì)象等。sum(列表)對(duì)列表的元素進(jìn)行求和運(yùn)算,對(duì)非數(shù)值型列表運(yùn)算需要指定start參數(shù),同樣適用于元組、range。2.1.2列表常用方法可以使用“+”運(yùn)算符將元素添加到列表中。>>>aList=[3,4,5]>>>aList=aList+[7]>>>aList[3,4,5,7]嚴(yán)格意義上來(lái)講,這并不是真的為列表添加元素,而是創(chuàng)建一個(gè)新列表,并將原列表中的元素和新元素依次復(fù)制到新列表的內(nèi)存空間。由于涉及大量元素的復(fù)制,該操作速度較慢,在涉及大量元素添加時(shí)不建議使用該方法。2.1列表2.1.2列表常用方法使用列表對(duì)象的append()方法,原地修改列表,是真正意義上的在列表尾部添加元素,速度較快。>>>aList.append(9)>>>aList[3,4,5,7,9]所謂“原地”,是指不改變列表在內(nèi)存中的首地址。2.1列表2.1.2列表常用方法使用列表對(duì)象的insert()方法將元素添加至列表的指定位置。#在下標(biāo)為3的位置插入元素6>>>aList.insert(3,6)>>>aList[3,4,5,6,7,9]2.1列表2.1.2列表常用方法應(yīng)盡量從列表尾部進(jìn)行元素的增加與刪除操作。列表的insert()可以在列表的任意位置插入元素,但由于列表的自動(dòng)內(nèi)存管理功能,insert()方法會(huì)涉及到插入位置之后所有元素的移動(dòng),這會(huì)影響處理速度。類似的還有后面介紹的remove()方法以及使用pop()函數(shù)彈出列表非尾部元素和使用del命令刪除列表非尾部元素的情況。2.1列表2.1.2列表常用方法使用列表的pop()方法刪除并返回指定(默認(rèn)為最后一個(gè))位置上的元素,如果給定的索引超出了列表的范圍則拋出異常。>>>a_list=list(3,5,7,9,11)>>>a_list.pop()>>>a_list[3,5,7,9]>>>a_list.pop(1)5>>>a_list[3,7,9]2.1列表2.1.2列表常用方法使用列表對(duì)象的remove()方法刪除首次出現(xiàn)的指定元素,如果列表中不存在要?jiǎng)h除的元素,則拋出異常。>>>a_list=[3,5,7,9,7,11]>>>a_list.remove(7)>>>a_list[3,5,9,7,11]2.1列表2.1.2列表常用方法使用列表對(duì)象的count()方法統(tǒng)計(jì)指定元素在列表對(duì)象中出現(xiàn)的次數(shù)>>>aList[3,4,5,5.5,7,9,11,13,15,17]>>>aList.count(7)1>>>aList.count(0)02.1列表2.1.2列表常用方法使用列表對(duì)象的sort方法進(jìn)行原地排序,支持多種不同的排序方法。>>>aList=[3,4,15,11,9,17,13,6,7,5]>>>aList.sort()#默認(rèn)是升序排序>>>aList[3,4,5,6,7,9,11,13,15,17]>>>aList.sort(reverse=True)#降序排序>>>aList[17,15,13,11,9,7,6,5,4,3]2.1列表2.1.2列表常用方法使用列表對(duì)象的reverse方法將元素原地逆序>>>aList=[3,4,5,6,7,9,11,13,15,17]>>>aList.reverse()>>>aList[17,15,13,11,9,7,6,5,4,3]2.1列表2.1.3列表應(yīng)用實(shí)踐案例2-1(a)列表元素的增加,案例背景李小明同學(xué)這學(xué)期上8門課程,專業(yè)課是“軟件工程”,“軟件過(guò)程和項(xiàng)目管理”,“Java程序設(shè)計(jì)”,“python程序設(shè)計(jì)基礎(chǔ)”,“Oracle數(shù)據(jù)庫(kù)”,非專業(yè)課是“大學(xué)英語(yǔ)”,“線性代數(shù)”和“毛澤東思想和中國(guó)特色社會(huì)主義理論體系概論”。他建立4個(gè)列表,分別錄入這些課程的成績(jī),并增加一門新課程“操作系統(tǒng)”和對(duì)應(yīng)的成績(jī)。2.1列表2.1.3列表應(yīng)用實(shí)踐案例2-1(a)列表元素的增加coursename1=['軟件工程','軟件過(guò)程和項(xiàng)目管理','Java程序設(shè)計(jì)','python程序設(shè)計(jì)基礎(chǔ)','Oracle數(shù)據(jù)庫(kù)']#專業(yè)課grade1=[88,60,78,90,93]#專業(yè)課成績(jī)coursename2=['大學(xué)英語(yǔ)','線性代數(shù)','毛澤東思想和中國(guó)特色社會(huì)主義理論體系概論']#公共課grade2=["中等","優(yōu)秀","良好"]#公共課成績(jī)coursename1.append("操作系統(tǒng)")#用append函數(shù)在列表末尾增加一個(gè)元素grade1.append(60)print("專業(yè)課成績(jī):"grade1)2.1列表2.1.3列表應(yīng)用實(shí)踐案例2-1(a)列表元素的刪除,案例背景李小明同學(xué)又覺(jué)得應(yīng)該警醒自己,不能再掛科了。所以,他刪除了位于列表末尾的操作系統(tǒng),把它加入到列表的開(kāi)頭位置,以便一運(yùn)行程序就能看到。2.1列表2.1.3列表應(yīng)用實(shí)踐案例2-1(b)列表元素的刪除coursename1.pop()#彈出末尾元素grade1.pop()coursename1.insert(0,"操作系統(tǒng)")#在索引0的位置插入元素grade1.insert(0,60)print("專業(yè)課名字:"coursename1)print("專業(yè)課成績(jī):"grade1)2.1列表2.1.3列表應(yīng)用實(shí)踐案例2-1(c)列表元素的統(tǒng)計(jì),案例背景李小明同學(xué)接著打算統(tǒng)計(jì)自己這學(xué)期的專業(yè)課水平,比如平均分是多少,最高多少分,是哪門課考的最好,哪門課考的最差,以便更有針對(duì)性的彌補(bǔ)和努力。2.1列表2.1.3列表應(yīng)用實(shí)踐案例2-1(c)列表元素的統(tǒng)計(jì)print("專業(yè)課總成績(jī):",sum(grade1))print("專業(yè)課平均成績(jī):",sum(grade1)/len(grade1))print("專業(yè)課最高成績(jī):",max(grade1))print("專業(yè)課最高成績(jī)的科目是:",coursename1[grade1.index(max(grade1))])print("專業(yè)課最低成績(jī):",min(grade1))print("專業(yè)課最低成績(jī)的科目是:",coursename1[grade1.index(min(grade1))])2.1列表2.2.1元組概述元組和列表類似,但屬于不可變序列,元組一旦創(chuàng)建,用任何方法都不可以修改其元素。元組的定義方式和列表相同,但定義時(shí)所有元素是放在一對(duì)圓括號(hào)“()”中,而不是方括號(hào)中。2.2元組2.2.1元組概述使用“=”將一個(gè)元組賦值給變量>>>a_tuple=('a','b','mpilgrim','z','example')>>>a_tuple('a','b','mpilgrim','z','example')>>>sportitem=('高山滑雪','冬季兩項(xiàng)','花樣滑冰','速度滑冰','雪橇')>>>sportitem('高山滑雪','冬季兩項(xiàng)','花樣滑冰','速度滑冰','雪橇')2.2元組2.2.1元組概述>>>a=(3,)
#包含一個(gè)元素的元組,最后必須多寫個(gè)逗號(hào)>>>a(3,)>>>a=3,#也可以這樣創(chuàng)建元組>>>a(3,)>>>x=()#空元組2.2元組2.2.1元組概述使用tuple函數(shù)將其他序列轉(zhuǎn)換為元組>>>tuple('abcdefg')#把字符串轉(zhuǎn)換為元組('a','b','c','d','e','f','g')>>>aList=[-1,-4,6,7.5,-2.3,9,-11]>>>tuple(aList)#把列表轉(zhuǎn)換為元組(-1,-4,6,7.5,-2.3,9,-11)>>>s=tuple()#空元組>>>s()2.2元組2.2.1元組概述元組中的數(shù)據(jù)一旦定義就不允許更改。元組沒(méi)有append()、extend()和insert()等方法,無(wú)法向元組中添加元素。元組沒(méi)有remove()或pop()方法,也無(wú)法對(duì)元組元素進(jìn)行del操作,不能從元組中刪除元素。從效果上看,tuple()凍結(jié)列表,而list()融化元組。2.2元組2.2.1元組概述元組的速度比列表更快。如果定義了一系列常量值,而所需做的僅是對(duì)它進(jìn)行遍歷,那么一般使用元組而不用列表。元組對(duì)不需要改變的數(shù)據(jù)進(jìn)行“寫保護(hù)”將使得代碼更加安全。元組可用作字典鍵(特別是包含字符串、數(shù)值和其它元組這樣的不可變數(shù)據(jù)的元組)。列表永遠(yuǎn)不能當(dāng)做字典鍵使用,因?yàn)榱斜聿皇遣豢勺兊摹?.2元組2.2.2元組常用方法編號(hào)方法功能1tuple()函數(shù)將列表、range對(duì)象、字符串或其他類型的可迭代對(duì)象類型的數(shù)據(jù)轉(zhuǎn)換為元組。2len(元組)計(jì)算元組內(nèi)元素個(gè)數(shù)。3max(元組)返回元組中的最大元素。4min(元組)返回元組中的最小元素。5cmp(tuple1,tuple2)比較兩個(gè)元組元素。6count(元素)統(tǒng)計(jì)元組中某元素的個(gè)數(shù)并返回。7index(元素)計(jì)算元組中某元素的最小索引值。8sorted(元組)對(duì)元組排序,返回一個(gè)列表。2.2元組
sportitem=(‘高山滑雪’,‘冬季兩項(xiàng)’,‘花樣滑冰’,‘速度滑冰’,‘雪橇’)
#元組創(chuàng)建和訪問(wèn)dongaochina=[9,4,2]#冬奧會(huì)中國(guó)金銀銅獎(jiǎng)牌數(shù)目dachinanum=tuple(dongaochina)dachinapai=(“金牌”,“銀牌”,“銅牌”)print(dachinanum)print(“金牌數(shù)目:”,dachinanum[:1])#輸出金牌數(shù)目print(dachinapai+dachinanum)#修改元組元組連接forpai,numinzip(dachinapai,dachinanum):print(pai,num)2.2.3
元組應(yīng)用實(shí)踐2.2元組2.2.3
元組應(yīng)用實(shí)踐>>>aList=[1,2,3]>>>bList=[4,5,6]>>>cList=[7,8,9]>>>dList=zip(aList,bList,cList)>>>forindex,valueinenumerate(dList): print(index,':',value)0:(1,4,7)1:(2,5,8)2:(3,6,9)2.2元組2.3.1字典概述字典是無(wú)序可變序列。定義字典時(shí),每個(gè)元素的鍵和值用冒號(hào)分隔,元素之間用逗號(hào)分隔,所有的元素放在一對(duì)大括號(hào)“{}”中。字典中的鍵可以為任意不可變數(shù)據(jù),比如整數(shù)、實(shí)數(shù)、復(fù)數(shù)、字符串、元組等等。2.3字典2.3.1字典概述使用=將一個(gè)字典賦值給一個(gè)變量>>>a_dict={'server':'','database':'mysql'}>>>a_dict{'database':'mysql','server':''}>>>studict={'姓名‘:’李小明','年齡':19,'身高':175,'成績(jī)':'2金1銀','興趣愛(ài)好':['跑步','籃球','滑雪','鋼琴'])。>>>studict{‘姓名‘:’李小明','年齡':19,'身高':175,'成績(jī)':'2金1銀','興趣愛(ài)好':['跑步','籃球','滑雪','鋼琴']}>>>x={}#空字典>>>x{}2.3字典2.3.1字典概述使用dict利用已有數(shù)據(jù)創(chuàng)建字典:>>>keys=['a','b','c','d']>>>values=[1,2,3,4]>>>dictionary=dict(zip(keys,values))>>>dictionary{'a':1,'c':3,'b':2,'d':4}>>>x=dict()#空字典>>>x{}2.3字典2.3.1字典概述使用dict利用已有數(shù)據(jù)創(chuàng)建字典:>>>jiangpainame=['金牌','銀牌','銅牌']>>>jiangpaivalue=[2,1,0]>>>linum=dict(zip(jiangpainame,jiangpaivalue))>>>linum>>>{'金牌':2,'銀牌':1,'銅牌':0}2.3字典2.3.2字典常用方法編號(hào)方法功能1dict()無(wú)參數(shù)時(shí)生成空字典,有參數(shù)有兩種形式:一種是序列型數(shù)據(jù)list或tuple,它每個(gè)元素必須又含有兩個(gè)子元素;另外一種是name=value形式的參數(shù)。2clear()用于清空字典中所有的key-value對(duì),該字典就會(huì)變成一個(gè)空字典。3get()根據(jù)key來(lái)獲取value,如果訪問(wèn)不存在的key,該方法會(huì)簡(jiǎn)單地返回None,不會(huì)導(dǎo)致錯(cuò)誤。4update()可使用字典所包含的key-value對(duì)來(lái)更新己有的字典。如果被更新的字典中己包含對(duì)應(yīng)的key-value對(duì),那么原value會(huì)被覆蓋,否則該key-value對(duì)被添加進(jìn)去。5items()用于獲取字典中的所有key-value對(duì),返回dict_items對(duì)象。6keys()用于獲取字典中所有key返回dict_keys對(duì)象。7values()用于獲取字典中的所有value,返回dict_values對(duì)象。8pop()用于獲取指定key對(duì)應(yīng)的value,并刪除這個(gè)key-value對(duì)。9del刪除字典中指定鍵的元素。2.3字典2.3.2字典常用方法使用字典對(duì)象的get方法獲取指定鍵對(duì)應(yīng)的值,并且可以在鍵不存在的時(shí)候返回指定值。>>>print(gualnum.get('金牌'))2>>>print(gualnum.get('獎(jiǎng)牌',3))32.3字典2.3.2字典常用方法>>>aDict={'name':'Dong','sex':'male','age':37}>>>foriteminaDict.items():#輸出字典中所有元素 print(item)('age',37)('name','Dong')('sex','male')>>>forkeyinaDict:#不加特殊說(shuō)明,默認(rèn)輸出鍵 print(key)agenamesex2.3字典2.3.2字典常用方法>>>forkey,valueinaDict.items():#序列解包用法 print(key,value)age37nameDongsexmale>>>aDict.keys()#返回所有鍵dict_keys(['name','sex','age'])>>>aDict.values()#返回所有值dict_values(['Dong','male',37])2.3字典2.3.2字典常用方法當(dāng)以指定鍵為下標(biāo)為字典賦值時(shí),若鍵存在,則可以修改該鍵的值;若不存在,則表示添加一個(gè)鍵、值對(duì)。>>>aDict['age']=38#修改元素值>>>aDict{'age':38,'name':'Dong','sex':'male'}>>>aDict['address']='SDIBT'#增加新元素>>>aDict{'age':38,'address':'SDIBT','name':'Dong','sex':'male'}2.3字典2.3.2字典常用方法使用字典對(duì)象的update方法將另一個(gè)字典的鍵、值對(duì)添加到當(dāng)前字典對(duì)象>>>aDict{'age':37,'score':[98,97],'name':'Dong','sex':'male'}>>>aDict.items()dict_items([('age',37),('score',[98,97]),('name','Dong'),('sex','male')])>>>aDict.update({'a':'a','b':'b'})>>>aDict{'a':'a','score':[98,97],'name':'Dong','age':37,'b':'b','sex':'male'}2.3字典2.3.3字典應(yīng)用實(shí)踐lidict={'姓名‘:’李曉明','年齡':19,'身高':175,'成績(jī)':'2金1銀','興趣愛(ài)好':['跑步','籃球','滑雪','鋼琴']}#個(gè)人介紹字典jiangpainame=['金牌','銀牌','銅牌']jiangpaivalue=[2,1,0]linum=dict(zip(jiangpainame,jiangpaivalue))#獲獎(jiǎng)數(shù)目字典print(linum)print("通過(guò)下標(biāo)訪問(wèn):",lidict["姓名"])#字典訪問(wèn)和讀取,以鍵作為下標(biāo)可以讀取字典元素,若鍵不存在則拋出異常print("通過(guò)get函數(shù)訪問(wèn):",lidict.get('年齡'))#通過(guò)get訪問(wèn),不存在輸出NONE2.3字典2.3.3字典應(yīng)用實(shí)踐print("通過(guò)get函數(shù)訪問(wèn):",lidict.get('地址'))print("字典所有的鍵:",lidict.keys())print("字典所有的值:",lidict.values())forkey,valueinlidict.items():#序列解包用法print(key,value)2.3字典2.3.3字典應(yīng)用實(shí)踐首先生成包含1000個(gè)隨機(jī)字符的字符串,然后統(tǒng)計(jì)每個(gè)字符的出現(xiàn)次數(shù)。>>>importstring>>>importrandom>>>x=string.ascii_letters+string.digits+string.punctuation>>>y=[random.choice(x)foriinrange(1000)]>>>z=''.join(y)>>>d=dict()#使用字典保存每個(gè)字符出現(xiàn)次數(shù)>>>forchinz: d[ch]=d.get(ch,0)+12.3字典2.3.4字典應(yīng)用實(shí)踐使用collections模塊的Counter類可以快速實(shí)現(xiàn)這個(gè)功能,并且提供更多功能,例如查找出現(xiàn)次數(shù)最多的元素。>>>fromcollectionsimportCounter>>>frequences=Counter(z)>>>frequences.items()>>>frequences.most_common(1)#出現(xiàn)次數(shù)最多的一個(gè)字符[('A',22)]>>>frequences.most_common(3)[('A',22),(';',18),('`',17)]2.3字典2.4.1字符串概述字符串是python中最常用的數(shù)據(jù)類型。我們可以使用單引號(hào)或雙引號(hào)('或",它們等價(jià)沒(méi)有區(qū)別,但要成對(duì)出現(xiàn))來(lái)創(chuàng)建字符串或者string()函數(shù),內(nèi)容可以是英文符號(hào),或者中文符號(hào)。創(chuàng)建字符串很簡(jiǎn)單,只要為變量分配一個(gè)值即可。2.4字符串2.4.1字符串概述name='李曉明'enname='Eileen'字符串內(nèi)字符訪問(wèn)方法與前幾節(jié)列表,元組等類似,均可以通過(guò)索引訪問(wèn)。如name[0]的輸出結(jié)果是“李”,enname[1:3]的輸出結(jié)果是“il”。2.4字符串2.4.2字符串常用方法2.4字符串編號(hào)方法功能1count(str,beg=0,end=len(string))返回str在string里面出現(xiàn)的次數(shù),如果beg或者end指定則返回指定范圍內(nèi)str出現(xiàn)的次數(shù)。2find(str,beg=0,end=len(string))檢測(cè)str是否包含在字符串中,如果指定范圍beg和end,則檢查是否包含在指定范圍內(nèi),如果包含返回開(kāi)始的索引值,否則返回-1。3index(str,beg=0,end=len(string))跟find()方法一樣,只不過(guò)如果str不在字符串中會(huì)報(bào)一個(gè)異常。4isalnum()如果字符串至少有一個(gè)字符并且所有字符都是字母或數(shù)字則返回True,否則返回False。5isalpha()如果字符串至少有一個(gè)字符并且所有字符都是字母或中文字則返回True,否則返回False。6len(string)返回字符串長(zhǎng)度。7split(str="",num=string.count(str))以str為分隔符截取字符串,如果num有指定值,則僅截取num+1個(gè)子字符串。8strip([chars])刪除字符串中的空格。9join(seq)以指定字符串作為分隔符,將seq中所有的元素(的字符串表示)合并為一個(gè)新的字符串。2.4.3字符串應(yīng)用實(shí)踐review1=“喜歡李曉明的很多,不喜歡她的也不少。你變得再好,也總有人不歡迎你"review2="李曉明的媽媽平時(shí)都是計(jì)算好時(shí)間來(lái)安排李曉明的生活和學(xué)習(xí),但是有一件事是必須做到的,那就是睡夠10小時(shí)。李曉明也認(rèn)為這是自己成功的秘訣"review3="一個(gè)美國(guó)出生的天才運(yùn)動(dòng)員,代表中國(guó)出戰(zhàn)奧運(yùn)會(huì),拿到奧運(yùn)冠軍??梢?jiàn)這20年,中國(guó)的巨變,世界的巨變,有多么深遠(yuǎn)。這,就是趨勢(shì)"review4="李曉明十幾歲就學(xué)會(huì)了滑雪、騎馬、射箭、跑步、越野、游泳、沖浪、攀巖,記憶力驚人……上一個(gè)達(dá)到如此成就的中國(guó)人是郭靖"2.4字符串2.4.3字符串應(yīng)用實(shí)踐review=review1+review2+review3+review4#字符串鏈接print(review)nPos=review1.find("李曉明")print("李曉明出現(xiàn)的位置:",review)2.4字符串2.4.3字符串應(yīng)用實(shí)踐reviewlist=list(review.strip().lstrip('。'))d=dict()#使用字典保存每個(gè)字符出現(xiàn)次數(shù)Inforchinreviewlist:d[ch]=d.get(ch,0)+1print("字符串長(zhǎng)度:",len(d))d_order=sorted(d.items(),key=lambdax:x[1],reverse=True)print(d_order)2.4字符串2.5集合集合是無(wú)序可變序列,使用一對(duì)大括號(hào)界定,元素不可重復(fù),同一個(gè)集合中每個(gè)元素都是唯一的。集合中只能包含數(shù)字、字符串、元組等不可變類型的數(shù)據(jù),而不能包含列表、字典、集合等可變類型的數(shù)據(jù)。2.5集合2.5.1
集合概述直接將集合賦值給變量>>>a={3,5}>>>a.add(7)#向集合中添加元素>>>a{3,5,7}2.5集合使用set將其他類型數(shù)據(jù)轉(zhuǎn)換為集合>>>a_set=set(range(8,14))>>>a_set{8,9,10,11,12,13}>>>b_set=set([0,1,2,3,0,1,2,3,7,8])#自動(dòng)去除重復(fù)>>>b_set{0,1,2,3,7,8}>>>c_set=set()#空集合>>>c_setset()使用del刪除整個(gè)集合2.4.1
集合概述2.5集合2.5.1
集合概述當(dāng)不再使用某個(gè)集合時(shí),可以使用del命令刪除整個(gè)集合。集合對(duì)象的pop()方法彈出并刪除其中一個(gè)元素,remove()方法直接刪除指定元素,clear()方法清空集合。>>>a={1,4,2,3}>>>a.pop()1>>>a.pop()2>>>a{3,4}2.5集合2.5.2集合常用操作>>>a.add(2)>>>a{2,3,4}>>>a.remove(3)>>>a{2,4}2.5集合2.5.2集合常用操作Python集合支持交集、并集、差集等運(yùn)算>>>a_set=set([8,9,10,11,12,13])>>>b_set={0,1,2,3,7,8}>>>a_set|b_set#并集{0,1,2,3,7,8,9,10,11,12,13}>>>a_set.union(b_set)#并集{0,1,2,3,7,8,9,10,11,12,13}2.5集合2.5.2集合常用操作>>>a_set&b_set#交集{8}>>>a_ersection(b_set)#交集{8}>>>a_set.difference(b_set)#差集{9,10,11,12,13}>>>a_set-b_set{9,10,11,12,13}2.5集合>>>a_set.symmetric_difference(b_set)#對(duì)稱差集{0,1,2,3,7,9,10,11,12,13}>>>a_set^b_set{0,1,2,3,7,9,10,11,12,13}>>>x={1,2,3}>>>y={1,2,5}>>>z={1,2,3,4}>>>x.issubset(y)#測(cè)試是否為子集False>>>x.issubset(z)True>>>{3}&{4}set()2.5.2集合常用操作2.5集合集合包含關(guān)系測(cè)試>>>x={1,2,3}>>>y={1,2,5}>>>z={1,2,3,4}>>>x<y#比較集合大小/包含關(guān)系False>>>x<z#真子集True>>>y<zFalse>>>{1,2,3}<={1,2,3}#子集True2.5.2集合常用操作2.5集合第3章控制結(jié)構(gòu)本章目標(biāo)1.理解結(jié)構(gòu)化程序設(shè)計(jì)的基本思想2.理解順序結(jié)構(gòu)的原理3.掌握選擇結(jié)構(gòu)的使用方法4.掌握循環(huán)結(jié)構(gòu)的使用方法5.理解和掌握黨史知識(shí)問(wèn)答游戲的設(shè)計(jì)思路和實(shí)現(xiàn)過(guò)程3.1結(jié)構(gòu)化程序設(shè)計(jì)簡(jiǎn)介結(jié)構(gòu)化程序設(shè)計(jì),采用自頂向下、逐步求精的設(shè)計(jì)方法,從結(jié)構(gòu)上將軟件系統(tǒng)劃分為若干功能模塊,各模塊盡可能簡(jiǎn)單設(shè)計(jì)功能獨(dú)立,模塊內(nèi)部通過(guò)順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)等控制結(jié)構(gòu)組成,再連接各模塊組合構(gòu)成相應(yīng)的軟件系統(tǒng)。結(jié)構(gòu)化程序設(shè)計(jì)將算法(函數(shù))和數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)和數(shù)據(jù)類型)分開(kāi)設(shè)計(jì),但隨著軟件復(fù)雜性的增大,為了提高工作效率,軟件工程師越來(lái)越注重于系統(tǒng)整體關(guān)系的表述,于是把數(shù)據(jù)結(jié)構(gòu)與算法看做一個(gè)獨(dú)立功能模塊,這便是第7章面向?qū)ο蟪绦蛟O(shè)計(jì)的思想。3.2順序結(jié)構(gòu)順序結(jié)構(gòu)是最基本的控制結(jié)構(gòu)之一,在程序中的順序結(jié)構(gòu)表示按照各語(yǔ)句或模塊出現(xiàn)的先后順序執(zhí)行的,其流程如圖所示,A模塊和B模塊按照箭頭的先后順序執(zhí)行。3.2順序結(jié)構(gòu)順序結(jié)構(gòu)案例:importrandomrandpername=[‘宋江‘,’盧俊義',‘吳用']randtime=['春晚','大年三十','晚8點(diǎn)']randplace=['在北京','在舞臺(tái)上','在央視']randdo=["唱《山水霓裳》","快樂(lè)跳舞","開(kāi)心表演"]print(random.choice(randpername),end='')print(random.choice(randtime),end='')print(random.choice(randplace),end='')print(random.choice(randdo))3.3選擇結(jié)構(gòu)—3.3.1單分支選擇結(jié)構(gòu)if表達(dá)式:
語(yǔ)句塊單分支結(jié)構(gòu)案例:x=input('Inputtwonumber:')a,b=map(int,x.split())ifa>b:a,b=b,a#序列解包,交換兩個(gè)變量的值print(a,b)3.3選擇結(jié)構(gòu)—3.3.2雙分支選擇結(jié)構(gòu)if表達(dá)式:
語(yǔ)句塊1else:
語(yǔ)句塊2雙分支選擇結(jié)構(gòu)案例:city=input("請(qǐng)輸入2022年冬奧會(huì)在哪個(gè)城市舉行?")ifcity=="北京":print("回答正確,送你冰墩墩一枚")else:print("回答錯(cuò)誤,2022年冬奧會(huì)在北京舉行,北京歡迎你")3.3選擇結(jié)構(gòu)—3.3.2雙分支選擇結(jié)構(gòu)Python還支持如下形式的表達(dá)式:value1ifconditionelsevalue2當(dāng)條件表達(dá)式condition的值與True等價(jià)時(shí),表達(dá)式的值為value1,否則表達(dá)式的值為value2。另外,在value1和value2中還可以使用復(fù)雜表達(dá)式,包括函數(shù)調(diào)用和基本輸出語(yǔ)句。這個(gè)結(jié)構(gòu)的表達(dá)式也具有惰性求值的特點(diǎn)。>>>a=5>>>print(6)ifa>3elseprint(5)6>>>print(6ifa>3else5)6>>>b=6ifa>13else9>>>b93.3選擇結(jié)構(gòu)—3.3.3多分支選擇結(jié)構(gòu)if表達(dá)式1:
語(yǔ)句塊1elif表達(dá)式2:
語(yǔ)句塊2elif表達(dá)式3:
語(yǔ)句塊3else:
語(yǔ)句塊4其中,關(guān)鍵字elif是elseif的縮寫。3.3選擇結(jié)構(gòu)—3.3.3多分支選擇結(jié)構(gòu)中國(guó)春節(jié)的準(zhǔn)確翻譯,防止國(guó)外惡意掠奪t=int(input("請(qǐng)選擇中國(guó)新年的最準(zhǔn)確的翻譯:1ChineseNewYear2LunarNewYear3theSpringFestival\n"))ift==1:print("回答正確!春節(jié)源于中國(guó),屬于中國(guó)傳統(tǒng)文化,后來(lái)傳播到全世界")elift==2ort==3:print("翻譯正確,但某些國(guó)家搶奪春節(jié)文化,西方刻意淡化中國(guó)二字,所以該翻譯不準(zhǔn)確")else:print("只可以輸入1-3的整數(shù)啊!")3.3選擇結(jié)構(gòu)—3.3.3多分支選擇結(jié)構(gòu)利用多分支選擇結(jié)構(gòu)將成績(jī)從百分制變換到等級(jí)制 ifscore>100: print('wrongscore.must<=100.‘) elifscore>=90: print('A')elifscore>=80: print('B')elifscore>=70: print('C')elifscore>=60: print('D')elifscore>=0: print('E')else: print('wrongscore.must>0')3.3選擇結(jié)構(gòu)—3.3.3多分支選擇結(jié)構(gòu)面試資格確認(rèn)。age=24subject="計(jì)算機(jī)"college="非重點(diǎn)"if(age>25andsubject=="電子信息工程")or(college=="重點(diǎn)"andsubject=="電子信息工程")or(age<=28andsubject=="計(jì)算機(jī)"):print("恭喜,你已獲得我公司的面試機(jī)會(huì)!")else:print("抱歉,你未達(dá)到面試要求")3.3選擇結(jié)構(gòu)—3.3.3多分支選擇結(jié)構(gòu)用戶輸入若干個(gè)分?jǐn)?shù),求所有分?jǐn)?shù)的平均分。每輸入一個(gè)分?jǐn)?shù)后詢問(wèn)是否繼續(xù)輸入下一個(gè)分?jǐn)?shù),回答“yes”就繼續(xù)輸入下一個(gè)分?jǐn)?shù),回答“no”就停止輸入分?jǐn)?shù)。3.3選擇結(jié)構(gòu)—3.3.3多分支選擇結(jié)構(gòu)編寫程序,判斷今天是今年的第幾天。importtimedate=time.localtime()#獲取當(dāng)前日期時(shí)間year,month,day=date[:3]day_month=[31,28,31,30,31,30,31,31,30,31,30,31]ifyear%400==0or(year%4==0andyear%100!=0):#判斷是否為閏年day_month[1]=29ifmonth==1:print(day)else:print(sum(day_month[:month-1])+day)自動(dòng)販賣機(jī),選1出可樂(lè),選2出橙汁,選3出農(nóng)夫果園。例子:age=12ifage==10:print("Whatdoyoucallanunhappyapple?")print("Ablueapple!")elifage==11:print("Whatdidthegreengrapesaytothebluegrape?")print("Breathe!Breathe!")elifage==12:print("Whatdid0sayto8?")print("Higuys!")else:print("Huh?")3.3選擇結(jié)構(gòu)—3.3.3多分支選擇結(jié)構(gòu)判斷年齡階段。子曰:吾十有五而志于學(xué),三十而立,四十而不惑,五十而知天命,六十而耳順,七十而從心所欲,不逾矩?!?/p>
3.3選擇結(jié)構(gòu)—3.3.3多分支選擇結(jié)構(gòu)#-*-coding:utf-8-*-'''編寫人:wudi編寫時(shí)間:2021.05.24程序功能:輸入年齡判斷階段'''age=raw_input(u"請(qǐng)輸入不同的年齡:")ifint(age)<30:print(u"志于學(xué)")elifint(age)>31andint(age)<40:print(u"30而立,立身立業(yè)立家")elifint(age)>=41andint(age)<50:print(u"40不惑,明白社會(huì),明白自己,明白責(zé)任")elifint(age)>50andint(age)<60:print(u"50知天命,知道了自己命運(yùn)規(guī)則,不怨天尤人")elifint(age)>61andint(age)<70:print(u"60耳順,看透人生,聽(tīng)逆耳之言也不生氣")else:print(u"70順其自然,隨遇而安")3.3選擇結(jié)構(gòu)—3.3.3多分支選擇結(jié)構(gòu)university211=[“哈工程”,“東北大學(xué)"]university985=[“哈工大”,“清華大學(xué)”,“北京大學(xué)"]
s=“齊齊哈爾大學(xué)"#thestringyouget
ifsinuniversity211:print("university211")elifsinuniversity985:print("university985")else:print("Notinunivers
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二硫化碳生產(chǎn)工測(cè)試驗(yàn)證評(píng)優(yōu)考核試卷含答案
- 電力通信運(yùn)維員崗前規(guī)章制度考核試卷含答案
- 片基流延工誠(chéng)信道德能力考核試卷含答案
- 電子玻璃制品鍍膜工安全宣教測(cè)試考核試卷含答案
- 安全員考試請(qǐng)假條
- 2025年超細(xì)銀粉末、銀鈀粉、鈀粉、鉑粉項(xiàng)目合作計(jì)劃書
- 2026年智能心率帶項(xiàng)目營(yíng)銷方案
- 2025年江蘇省南通市中考物理真題卷含答案解析
- 2025年山東省日照市中考英語(yǔ)真題卷含答案解析
- 2025康復(fù)醫(yī)學(xué)與技術(shù)專業(yè)知識(shí)題庫(kù)及答案
- 招標(biāo)代理機(jī)構(gòu)入圍 投標(biāo)方案(技術(shù)方案)
- 運(yùn)輸車隊(duì)年終總結(jié)報(bào)告
- 房屋損壞糾紛鑒定報(bào)告
- 精益生產(chǎn)方式-LEAN-PRODUCTION
- 中學(xué)體育與健康課程與教學(xué)論P(yáng)PT高職完整全套教學(xué)課件
- 頸動(dòng)脈外膜剝脫術(shù)
- 養(yǎng)老設(shè)施建筑設(shè)計(jì)規(guī)范
- Starter-軟件簡(jiǎn)易使用手冊(cè)
- RFJ01-2008 人民防空工程防護(hù)設(shè)備選用圖集
- GB/T 27818-2011化學(xué)品皮膚吸收體外試驗(yàn)方法
- FZ/T 80004-2014服裝成品出廠檢驗(yàn)規(guī)則
評(píng)論
0/150
提交評(píng)論