《Python程序設計基礎》課件-項目4 組合數據結構_第1頁
《Python程序設計基礎》課件-項目4 組合數據結構_第2頁
《Python程序設計基礎》課件-項目4 組合數據結構_第3頁
《Python程序設計基礎》課件-項目4 組合數據結構_第4頁
《Python程序設計基礎》課件-項目4 組合數據結構_第5頁
已閱讀5頁,還剩61頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

項目4組合數據結構任務5實踐活動任務1列表任務2元組任務3字典任務4集合任務5實踐活動任務1列表任務2元組任務3字典任務4集合列表的創建方式列表是最常用的Python數據類型。列表的數據項可以是相同的數據類型,也可以是不同的數據類型。創建一個列表,只要把逗號分隔的不同的數據項使用方括號括起來即可。代碼如ex0401.py所示:list1=['Sohu','Baidu',2022,2023] #列表中的元素類型不同list2=[2019,2020,2021,2022,2023] #列表中的元素均為整型list3=["abc","efg","xyz","123"] #列表中的元素類型均為字符串類型列表的遍歷和訪問1列表的遍歷遍歷列表可以逐個處理列表中的元素,通常使用for循環和while循環來實現。①使用for循環遍歷列表使用for循環遍歷列表只需將要遍歷的列表作為for循環表達式中的序列即可。代碼如下所示:website_list=['Baidu','Sohu','Sina']forwebsiteinwebsite_list: print(website)上述代碼的執行結果為:BaiduSohuSina②使用while循環遍歷列表使用while語句遍歷列表時,需要先獲取列表的長度,將獲取的列表長度作為while循環的條件。代碼如下所示:website_list=['Baidu','Sohu','Sina']length=len(website_list)i=0whilei<length: print(website_list[i]) i+=1上述代碼的執行結果為:BaiduSohuSina2列表元素的訪問①使用下標索引來訪問列表中的值與字符串的索引一樣,列表索引從

0

開始,第二個索引是

1,依此類推。代碼如下所示:Website_list=['Taobao','Baidu','Sina','163','Sohu','Yahoo']print(Website_list[1])print(Website_list[3])print(Website_list[5])上述代碼的執行結果為:Baidu163Yahoo索引也可以從尾部開始,最后一個元素的索引為

-1,往前一位為

-2,以此類推。代碼如下所示:Website_list=['Taobao','Baidu','Sina','163','Sohu','Yahoo']print(Website_list[-5])print(Website_list[-3])print(Website_list[-1])上述代碼的執行結果為:Baidu163Yahoo②使用方括號

[]

的形式截取字符,代碼如下所示:number=[100,200,300,400,500,600,700,800,900]print(number[1:5])#列表中的元素類型不同從下標1的元素開始(包含)截取到下標為5的元素(不包含)上述代碼的執行結果為:[200,

300,

400,

500]列表元素的常見操作append()方法用于在列表末尾添加新的元素。append()方法list1=['Sina','Runoob','Sohu']list1.append('Baidu')print("更新后的列表:",list1)['Sina','Runoob','Sohu','Baidu']在列表中添加元素extend()方法可以將一個列表中的元素全部添加到另一個列表的末尾。extend()方法list1=['Sina','Runoob','Sohu']list2=['Baidu','Taobao','163']list1.extend(list2)print(list1)print(list2)['Sina','Runoob','Sohu','Baidu','Taobao','163']['Baidu','Taobao','163']insert()方法用于將元素插入列表的指定位置。insert()方法list1=['Sina','Runoob','Sohu']list1.insert(1,'Baidu')print(list1)['sina','baidu','runoob','sohu']修改列表中的元素就是通過索引獲取元素并對元素進行重新賦值。代碼如下所示:list=['Google','Runoob',1997,2000]print("第三個元素為:",list[2])list[2]=2001print("更新后的第三個元素為:",list[2])上述代碼的執行結果為:第三個元素為:1997更新后的第三個元素為:2001修改列表元素通過Python中的成員運算符in和notin可以檢查某個元素是否存在于列表中。in:若元素存在于列表中,返加Ture,否則返回False。notin與in相反。代碼如下所示:list1=['Sina','Runoob','Sohu']netName=input('請輸入網站名稱:')ifnetNameinlist1: print("有這個網站")else: print("無這個網站")運行程序,屏幕顯示“請輸入網站名稱:”,這時輸入‘Sina’,則打印“有這個網站”,上述代碼的執行結果為:請輸入網站名稱:Sina有這個網站查找列表元素可以使用del語句來刪除列表中指定下標的元素。del語句list=['Google','Runoob',1997,2000]print("原始列表:",list)dellist[2]print("刪除第三個元素:",list)原始列表:['Google','Runoob',1997,2000]刪除第三個元素:['Google','Runoob',2000]刪除列表元素使用pop()方法可以刪除列表的最后一下元素。pop()方法list=['Google','Runoob','baidu','sina']print("原始列表:",list)list.pop()print("操作后元素:",list)原始列表:['Google','Runoob','Baidu','Sina']操作后元素:['Google','Runoob','Baidu']使用remove()方法可以刪除列表的指定元素。remove()方法list=['Google','Runoob','Baidu','Sina']print("原始列表:",list)list.remove('Runoob')print("操作后元素:",list)原始列表:['Google','Runoob','Baidu','Sina']操作后元素:['Google','Baidu','Sina']reverse()方法用于將列表中的元素倒序排列。reverse()方法list=['Google','Runoob','Baidu','Sina']print("原始列表:",list)list.reverse()print("操作后元素:",list)原始列表:['Google','Runoob','Baidu','Sina']操作后元素:['Sina','Baidu','Runoob','Google']列表的排序操作sort()方法的語法:sort(key=None,reverse=False)。其中,參數key表示指定的排序規則,可以是大小,長度等。Reverse的值為True,表示降序排列。Reverse的值為False,表示升序排列。sort()方法list=[1,11,6,9]list.sort()print("原始列表:",list)list.sort(reverse=True)print("操作后元素:",list)原始列表:[1,6,9,11]操作后元素:[11,9,6,1]任務5實踐活動任務1列表任務2元組任務3字典任務4集合元組的創建方式Python的元組與列表類似,不同之處在于元組的元素不能修改。元組使用小括號

(),列表使用方括號

[]。元組創建很簡單,只需要在括號中添加元素,并使用逗號隔開即可。代碼如下所示:Tuple1=('Sohu','Sina','Baidu','163')Tuple2=("a",1,5.6)#元組中元素類型不同Tuple3="1","2","3"#不需要括號也可以print(type(Tuple1))print(type(Tuple2))print(type(Tuple3))上述代碼的執行結果為:<class'tuple'><class'tuple'><class'tuple'>訪問元組元素元組可以使用索引訪問元組中的元素。使用索引訪問單個元素tup1=('Baidu','Sina',2022,2023)print("tup1[0]:",tup1[0])print("tup1[1]:",tup1[1])print("tup1[2]:",tup1[2])print("tup1[3]:",tup1[3])元組與字符串類似,下標索引從0開始,可以進行截取,組合等。tup1[0]:Baidutup1[1]:Sinatup1[2]:2022tup1[3]:2023元組可以使用索引訪問元組中的元素。使用切片訪問元組元素tup2=(1,2,3,4,5,6,7)print("tup2[1:5]:",tup2[1:5])print("tup2[2:5]:",tup2[2:5])print("tup2[1:4]:",tup2[1:4])print("tup2[:4]:",tup2[:4])#獲取列表中索引為0至索引值為4的元素(不包含)tup2[1:5]:(2,3,4,5)tup2[2:5]:(3,4,5)tup2[1:4]:(2,3,4)tup2[:4]:(1,2,3,4)任務5實踐活動任務1列表任務2元組任務3字典任務4集合字典是映射類型,且可存儲任意類型對象字典的每個鍵值對key/value用冒號’:’分割,每個對之間用逗號’,’分割,整個字典包括在花括號

{}

中,格式如下所示:d={key1:value1,key2:value2,key3:value3}其中,字典的鍵必須是唯一的,但值則不必。值可以取任何數據類型,如字符串,數字。一個簡單的字典實例:tinydict={'Name':'Zhangsan','Gender':'Male','Age':23}使用{}創建字典字典的創建字典的常見操作使用內建函數dict()創建字典Dict=dict(Name='Zhangsan',Gender='Male',Age=23)print(Dict) #打印字典print("Length:",len(Dict)) #查看字典的數量print(type(Dict)) #查看類型{'Name':'Zhangsan','Gender':'Male','Age':23}Length:3<class'dict'>根據鍵訪問值可以通過鍵獲取對應的值tinyDict={'Name':'Ligang','Age':47,'Gender':'Male'}print("tinyDict['Name']:",tinyDict['Name'])print("tinyDict['Age']:",tinyDict['Age'])tinyDict['Name']:LigangtinyDict['Age']:47如果用字典里沒有的鍵訪問數據,會輸出錯誤。代碼如下所示:tinyDict={'Name':'Ligang','Age':47,'Gender':'Male'}print("tinyDict['Address']:",tinyDict['Address'])File"d:/ex0422.py",line2,in<module>print("tinyDict['Address']:",tinyDict['Address'])KeyError:'Address'添加字典元素可以通過下標的形式添加字典元素,代碼如下所示:dict={'Name':'Ligang','Age':47,'Gender':'Male'}dict['Address']='Anhui'print(dict){'Name':'Ligang','Age':47,'Gender':'Male','Address':'Anhui'}修改字典元素向字典添加新內容的方法是增加新的鍵/值對,修改已有鍵/值對。代碼如下所示:dict={'Name':'Ligang','Age':47,'Gender':'Male'}

dict['Age']=48 #修改Agedict['Name']="Zhaoyan"#修改Namedict['Gender']="Female" #修改Gender

print("dict['Age']:",dict['Age'])print("dict['Name']:",dict['Name'])print("dict['Gender']:",dict['Gender'])dict['Age']:48dict['Name']:Zhaoyandict['Gender']:Female字典元素的刪除使用del刪除字典元素deldicts[key]:刪除字典中的某個鍵值對。代碼如下所示:dicts={'Name':'Ligang','Age':47,'Gender':'Male','Address':'Anhui'}deldicst['Age'] #刪除鍵'Name'print(dicts){'Name':'Ligang','Gender':'Male','Address':'Anhui'}使用pop()方法刪除字典中指定元素dict.pop(key,default):當鍵存在則返回相應值,同時刪除鍵值對,否則返回默認值。代碼如下所示:dict={'Name':'Ligang','Age':47,'Gender':'Male','Address':'Anhui'}print(dict.pop('Name'))#使用pop()刪除指定鍵為'Name'的元素,并打印鍵值print(dict)print(dict.pop("tel","沒有鍵值為tel的項"))print(dict)Ligang{'Age':47,'Gender':'Male','Address':'Anhui'}沒有鍵值為tel的項{'Age':47,'Gender':'Male','Address':'Anhui'}使用clear刪除字典元素代碼如下所示:dict={'Name':'Ligang','Age':47,'Gender':'Male'}dict.clear()#清空字典print(dict){}字典元素的查詢查看字典的所有元素

使用items()方法。代碼如下所示:dict={'Name':'Ligang','Age':47,'Gender':'Male','Address':'Anhui'}foriindict.items(): print(i)('Name','Ligang')('Age',47)('Gender','Male')('Address','Anhui')查看字典中的所有鍵

使用keys()方法。代碼如下所示:dict={'Name':'Ligang','Age':47,'Gender':'Male','Address':'Anhui'}foriindict.keys(): print(i)NameAgeGenderAddress任務5實踐活動任務1列表任務2元組任務3字典任務4集合集合的創建及其常見操作創建集合

使用set函數創建集合,代碼如下所示:animal={'Eagle','Elephant','Leopard','Crocodile'}print(animal)a=set('China')b=set([1,2,3,8])print(a)print(b){'Leopard','Eagle','Elephant','Crocodile'}{'n','i','C','h','a'}{8,1,2,3}集合的常見操作

s.add(x):添加x到集合s中。s.remove(x):如果x在集合s中,移除該元素;x不在集合s中時,會產生KeyError異常。s.discard(x):如果x在集合s中,移除該元素;x不在集合s中時,不產生異常。s.pop():隨機刪除集合s中的一個元素。len(s):返回集合s中的元素個數。s.clear():清除集合s中的所有元素。集合元素的添加及刪除操作代碼如下所示:animal={'Eagle','Elephant','Leopard','Crocodile'}print(animal)animal.add('Tiger')print(animal)animal.remove('Crocodile')print(animal){'Crocodile','Eagle','Leopard','Elephant'}{'Tiger','Elephant','Eagle','Crocodile','Leopard'}{'Tiger','Elephant','Eagle','Leopard'}使用remove()刪除非集合中的元素代碼如下所示:a=set('China')a.remove('k')print(a)File"f:/2022first/set04.py",line3,in<module>a.remove('k')KeyError:'k'當使用discard函數時代碼如下所示:a=set('China')a.discard('k')print(a){'a','n','C','h','i'}集合的常見操作代碼如下所示:b=set([1,2,3,8])print(b)print(len(b))b.remove(2)print(b)print(len(b))b.clear()print(b)print(len(b)){8,1,2,3}4{8,1,3}3set()0集合類型的操作符union():返回兩個集合的并集。intersection();返回集合的交集。任務5實踐活動任務1列表任務2元組任務3字典任務4集合實踐一:天龍八部天龍八部,佛教術語,天龍八部都是“非人”,包括八種神道怪物,因為“天眾”及“龍眾”最為重要,所以稱為“天龍八部”。八部包括:一天眾、二龍眾、三夜叉、四乾達婆、五阿修羅、六迦樓羅、七緊那羅、八摩睺羅伽。本實例要求編寫程序,隨機輸入1至8中間的一個數字,輸出這個數字在八部眾中對應的部分。1.實踐分析(1)創建一個代表天龍八部的數組,該數組中共有8個字符串類型的元素;(2)提示并接收用戶輸入的天龍八部的編號(1~8);(3)根據編號對應的索引訪問數組元素并輸出。注意,為保證程序的健壯性,避免因用戶輸入無效編號而導致的越界異常,這里應添加判斷編號是否有效的處理代碼:若用戶輸入有效的編號,則提示相應的兌獎信息,否則提示“輸入的位置不合規”。2.代碼實現本實例的具體實現代碼如下所示:Tianlongbabu=["天","龍","夜叉","乾達婆","阿修羅","迦樓羅","緊那羅","摩呼羅迦"]fortlinTianlongbabu:

#輸出列表內容每次輸出后以空格分割開 print(tl,end='')print('\n====天龍八部:====') #換行輸出內容num=int(input("請輸入代號(1~8):"))if1<=num<=8:

info=Tianlongbabu[num-1] print(f"{info}")else:

print("輸入的位置不合規!")以上代碼首先定義了包含8個字符串的列表Tianlongbabu,然后使用input()函數接收用戶輸入的天龍八部的代號,并將其保存到變量num中,最后使用if-else語句處理了num不同值的情況:若num值大于0小于列表Tianlongbabu的長度,訪問并打印列表Tianlongbabu中索引num-1對應的元素,否則就打印“輸入的位置不合規”。3.代碼測試運行程序,在控制臺輸入“1”之后的運行結果如下所示:請輸入代號(1~8):1天實踐二:歐冠決賽2021-2022賽季歐洲冠軍聯賽是由歐洲足球聯合會主辦的第67屆歐洲足球俱樂部的頂級賽事,也是以歐洲冠軍聯賽名義下的第30屆賽事。2021-2022賽季歐洲冠軍聯賽于2021年6月22日拉開戰幕,決賽于2022年5月28日在圣彼得堡的圣彼得堡體育場舉行。

2022年2月25日,歐足聯宣布歐冠決賽主場從俄羅斯圣彼得堡球場移至法國法蘭西大球場。最終由皇家馬德里隊奪得了歐冠冠軍獎杯。本實例要求編寫程序,打印出半決賽和決賽的場次,用戶可以選擇場次進行回看。1.實踐分析(1)創建一個存放比賽場次的列表;(2)創建一個存放主隊-客隊的列表;(3)創建一個存放比賽時間的列表;(4)創建一個存放比分的列表;(5)創建一個用于判斷用戶輸入觀看場次的函數;(6)根據用戶輸入觀看場次訪返回對應場次的信息,如果該場次不存在則提示用戶再次輸入。2.代碼實現本實例的具體實現代碼如下所示:#檢查是否有該場次方法defcheck_session(string): #檢查輸入的場次是否是包含在場次列表中

ifstringinSession_Competition: #包含在場次系列表中,則退出方法

returnstring

else: #輸出不包含在場次列表中,提示用戶再次輸入

x=input("沒有該場次,請重新輸入要觀看的場次:")#檢查輸入的場次是否存在在場次系列中

returncheck_session(x)type=['場次','主隊-客隊','比賽時間','比分'] #比賽場次Session_Competition=['1','2','3','4','5'] #主隊-客隊列表HomeTeam_AwayTeam=['切爾西-皇家馬德里','皇家馬德里-切爾西','曼城-皇家馬德里','皇家馬德里-曼城','利物浦-皇家馬德里'] #比賽時間列表Competition_time=['2022-04-07:03:00','2022-04-13:03:00','2022-04-27:03:00','2022-05-05:03:00','2022-05-29:03:00'] #比分列表Score=['1:3','2:3','4:3','3:1','0:1'] #輸出火車票信息print('{}

{}

{}

{}'.format(type[0],type[1],type[2],type[3]))print('{}

{}

{}

{}'.format(Session_Competition[0],HomeTeam_AwayTeam[0],Competition_time[0],Score[0]))print('{}

{}

{}

{}'.format(Session_Competition[1],HomeTeam_AwayTeam[1],Competition_time[1],Score[1]))print('{}

{}

{}

{}'.format(Session_Competition[2],HomeTeam_AwayTeam[2],Competition_time[2],Score[2]))print('{}

{}

{}

{}'.format(Session_Competition[3],HomeTeam_AwayTeam[3],Competition_time[3],Score[3]))print('{}

{}

{}

{}'.format(Session_Competition[4],HomeTeam_AwayTeam[4],Competition_time[4],Score[4])) #提示用戶輸入場次session_number=input("請輸入要觀看的場次:")#檢查輸入的場次是否包含在列表中,接收正確的場次session_number=check_session(session_number)i=int(session_number)-1#提示用戶輸入購票人信息audience=input("請輸入購票人:")print('尊敬的'+audience+'你已選擇回看第'+session_number+'場比賽,'+Competition_time[i]+'開始,對陣雙方為

'+HomeTeam_AwayTeam[i]+'比分為'+Score[i]+'祝您觀看愉快。')3.代碼測試運行程序,在控制臺中出現場次,這時我們需要輸入觀看場次,然后輸入購票人信息,點擊回車,最后顯示出結果如下所示:場次

主隊-客隊

比賽時間

比分1切爾西-皇家馬德里2022-04-07:03:001:32皇家馬德里-切爾西2022-04-13:03:002:33曼城-皇家馬德里2022-04-27:03:004:34皇家馬德里-曼城2022-05-05:03:003:15利物浦-皇家馬德里2022-05-29:03:000:1請輸入要觀看的場次:5 請輸入購票人:MissLin尊敬的MissLin你已選擇回看第5場比賽,2022-05-29:03:00開始,對陣雙方為

利物浦-皇家馬德里比分為0:1祝您觀看愉快。實踐三:單詞識別十二月份的英文:一月:January,二月:February,三月:March,四月:April,五月:May,六月:June,七月:July,八月:August,九月:September,十月:October,十一月:November,十二月:December。這些單詞的首字母有些相同,如四月:April和八月:August,有些不相同,如九月:September和十二月:December。本例要求編寫程序,根據第一或第二,最多第三個字母,能夠判斷并輸出十二個月份的完整單詞。1.實踐目標(1)熟練地創建字典。(2)熟練地通過鍵訪問字典中的值。2.實踐分析本實例的完整單詞包含12個,它們分別是January、February、March、April、May、June、July、August、September、October、November、December。其中,February、September、October、November、December能根據首字母判斷,April、August需根據用戶連續輸入兩次字母才能進一步判斷,March、May需要輸入第三個字母才能判斷,January、June、July,當輸入第二個字母時,可判斷是January還是June、July中的某一個,如果是June或July,需要再輸入第三個字母才能判定。具體規則如下:(1)若用戶第一次輸入的字母為“f”、“F”、“s”、“S”、“O”、“o”、“n”、“N”、“D”、“d”,則直接返回、“February”“September”、“October”、“November”、“December”;(2)若用戶第一次輸入“m”,需要再輸入第2個字母進行判斷,輸入“a”則繼續執行,否則顯示錯誤,接下來再輸入第三個字母,輸入“y”返回“May”,輸入“r”返回“March”;若用戶第一次輸入“j”,需要再輸入第2個字母進行判斷,輸入“a”返回“January”,輸入“u”則需要輸入第三個字母,輸入“l”返回“July”,輸入“n”返回“June”;若用戶第一次輸入其它字母,則提示用戶“請輸入正確的字母”。從以上分析可知,第一個或第二個字母,最多第三個字母可以作為獲取完整單詞的鍵,因此創建一個包含8個鍵值對的字典,其中,鍵“f”、“s”和“o”、“n”、“d”對應的值為“February”、“September”和“October”、“November”、“December”;鍵“m”和“a”對應的值是字典{'y':'May','r':'March'}和{'p':'April','u':'August'};鍵“j”對應的值是字典{'a':'January','u':june_or_july};鍵“u”對應的值是字典{'n':'June','l':'July'}。3.代碼實現june_or_july={'n':'June','l':'July'}janu_or_ju={'a':'January','u':june_or_july}may_or_march={'y':'May','r':'March'}apr_or_aug={'p':'April','u':'August'}month={'j':janu_or_ju,'m':may_or_march,

'f':'February','a':apr_or_aug,

's':'September','o':'October','n':'November','d':'December'}first_char=input('請輸入第一位字母:').lower().strip()iffirst_charin['a','j','s','m','o','f','n','d']:

if

month[first_char]==apr_or_aug:

second_char=input('請輸入第二位字母:').lower().strip()ifsecond_charin['u','p']:

print(month[first_char][second_char])

else:

print('請輸入正確字母')

elif

month[first_char]==may_or_march:

second_char=input('請輸入第二位字母:').lower().strip()

ifsecond_char=='a':

third_char=input('請輸入第三位字母:').lower().strip()

ifthird_charin['r','y']:

print(month[first_char][third_char])

else:

print('請輸入正確字母')

else:

print('請輸入正確字母')elifmonth[first_char]==janu_or_ju:

second_char=input('請輸入第二位字母:').lower().strip()

ifsecond_char=='a':

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論