Python實驗報告——第4章 序列的應用
- 2022 年 9 月 23 日
- 筆記
- Python實驗報告
實驗報告
【實驗目的】
1.掌握python中序列及序列的常用操作。
2.根據實際需要選擇使用合適的序列類型。
【實驗條件】
1.PC機或者遠程編程環境。
【實驗內容】
1.完成第四章 序列的應用 實例01-14,實戰一到實戰四。
實例01:輸出每日一帖
在IDLE中創建一個名稱為tips.py 的文件,然後在該文件中導入日期時間類,然後定義一個列表(保存7條勵志文字作為每日一帖的內容),再獲取當前的星期,最後將當前的星期作為列表的索引,輸出元素內容。
程式碼如下:
1 import datetime #導入日期時間類
2 mot = ["今天星期一:\n堅持下去不是因為我很堅強,而是因為我別無選擇。",
3 "今天星期二:\n含淚播種的人一定能笑著收穫。",
4 "今天星期三:\n做對的事情比把事情做對重要。",
5 "今天星期四:\n命運給予我們的不是失望之酒,而是機會之杯。",
6 "今天星期五:\n不要等到明天,明天太遙遠,今天就行動。",
7 "今天星期六:\n求知若飢,虛心若愚。",
8 "今天星期日:\n成功將屬於那些從不說」不可能「的人。"]
9 day = datetime.datetime.now().weekday() #獲取當前星期
10 print(mot[day])
運行結果如下:
實例02:分兩列顯示2017~2018賽季NBA西部聯盟前八名的球隊
在IDLE中創建一個名稱為printteam.py 的文件,並且在該文件中先輸出標題,然後定義一個列表(保存球隊名稱),再應用for循環和 enumerate()函數遍歷列表,在循環體中通過if…else語句判斷是否為偶數,如果為偶數則不換行輸出,否則換行輸出。
程式碼如下:
1 print("2017~2018賽季NBA西部聯盟前八名\n")
2 team = ["火箭", "勇士", "開拓者", "雷霆", "爵士", "鵜鶘", "馬刺", "森林狼"]
3 for index,item in enumerate(team):
4 if index % 2 == 0: #索引為偶數則不換行輸出
5 print(item + "\t\t", end='')
6 else:
7 print(item + "\n")
運行結果如下:
實例03:向NBA名人堂列表中追加2018年新加入的球星
在IDLE中創建一個名稱為nba.py 的文件,然後在該文件中定義一個保存NBA名人堂原有球星名字的列表,然後創建一個保存2018年新進進球星名字的列表,再調用列表對象的 extend()方法追加元素,最後輸出追加元素後的列表。
程式碼如下:
1 #原有球員
2 oldlist = ["邁克爾·喬丹","卡里姆·阿布杜爾·賈巴爾","哈基姆·奧拉朱旺","查爾斯·巴克利","姚明"]
3 #新增球員
4 newlist =["賈森·基德" ,"史蒂夫·納什", "格蘭特·希爾"]
5 oldlist.extend(newlist)
6 print(oldlist)
運行結果如下:
實例04:使用二維列表輸出不同版式的古詩
在 IDLE中創建一個名稱為printverse.py的文件,然後在該文件中首先定義4個字元串,內容為柳宗元的《江雪》中的詩句,並定義一個二維列表,然後應用嵌套的for循環將古詩以橫版方式輸出,再將二維列表進行逆序排列,最後應用嵌套的for循環將古詩以豎版方式輸出,程式碼如下:
程式碼如下:
1 str1 = "千山鳥飛絕"
2 str2 = "萬徑人蹤滅"
3 str3 = "孤舟蓑笠翁"
4 str4 = "獨釣寒江雪"
5 #定義一個二維列表
6 verse = [list(str1), list(str2), list(str3), list(str4)]
7 print("\n-------橫板-------\n")
8 for i in range(4):
9 for j in range(5):
10 if j == 4:
11 print(verse[i][j]) #換行
12 else:
13 print(verse[i][j],end = '') #不換行
14 verse.reverse()
15 print("\n-------豎板-------\n")
16 for i in range(5):
17 for j in range(4):
18 if j == 3:
19 print(verse[j][i]) #換行
20 else:
21 print(verse[j][i], end = '') #不換行
運行結果如下:
實例05:使用元組保存咖啡館裡提供的咖啡名稱
在IDLE中創建一個名稱為cafe_coffecname.py 的文件,然後在該文件中定義一個包含6個元素的元組,內容為伊米咖啡館裡的咖啡名稱,並且輸出該元組。
程式碼如下:
1 coffeename = ('藍山','卡布奇諾','曼特寧','摩卡','麝香貓','哥倫比亞')
2 print(coffeename)
運行結果如下:
實例06:使用for循環列出咖啡館裡的咖啡名稱
在IDLE中創建一個名稱為cafe_coffeename.py 的文件,然後在該文件中,定義一個包含6個元素的元組,內容為伊米咖啡館裡的咖啡名稱,然後應用for循環語句輸出每個元組元素的值,即咖啡名稱,並且在後面加上「咖啡」二字。
程式碼如下:
1 coffeename = ('藍山','卡布奇諾','曼特寧','摩卡','麝香貓','哥倫比亞') #定義元組
2 print("您好,歡迎光臨~伊米咖啡館~\n我店有:")
3 for name in coffeename:
4 print(name + "咖啡", end=' ')
運行結果如下:
實例07:分兩列顯示2017-2018賽季NBA西部聯盟前八名球隊
本實例將在實例02的基礎上進行修改,將列表修改為元組,其他內容不變。
程式碼如下:
1 print("2017~2018賽季NBA西部聯盟前八名\n")
2 team = ("火箭", "勇士", "開拓者", "雷霆", "爵士", "鵜鶘", "馬刺", "森林狼")
3 for index,item in enumerate(team):
4 if index % 2 == 0: #索引為偶數則不換行輸出
5 print(item + "\t\t", end='')
6 else:
7 print(item + "\n")
運行結果如下:
實例08:將麝香貓咖啡替換為拿鐵咖啡
在 IDLE中創建一個名稱為cafe_replace.py 的文件,然後在該文件中,定義一個包含6個元素的元組,內容為伊米咖啡館裡的咖啡名稱,然後修改其中的第5個元素的內容為「拿鐵」。
程式碼如下:
1 coffeename = ('藍山','卡布奇諾','曼特寧','摩卡','麝香貓','哥倫比亞') #定義元組
2 coffeename = ('藍山','卡布奇諾','曼特寧','摩卡','拿鐵','哥倫比亞')
3 print(coffeename)
運行結果如下:
實例09:創建一個保存女神星座的字典
在IDLE中創建一個名稱為sign_create.py 的文件,然後在該文件中,定義兩個包括4個元素的列表,再應用dict()函數和zip()函數將前兩個列錶轉換為對應的字典,並且輸出該字典。
程式碼如下:
1 name =['綺夢','冷伊一','香凝','黛蘭'] #作為健的列表
2 sign =['水瓶座','射手座','雙魚座','雙子座'] #作為值的列表
3 dictionary = dict(zip(name, sign))
4 print(dictionary)
運行結果如下:
實例10:根據星座測試性格特點
在IDLE中創建一個名稱為sign _get.py 的文件,然後在該文件中創建兩個字典,一個保存名字和星座,另一個保存星座和性格特點,最後從這兩個字典中取出相應的資訊組合出想要的結果,並輸出。
程式碼如下:
1 name =['綺夢','冷伊一','香凝','黛蘭'] #作為鍵的列表
2 sign_person =['水瓶座','射手座','雙魚座','雙子座'] #作為值的列表
3 person_dict = dict(zip(name, sign_person)) #轉換位個人字典
4 sign_all =['白羊座','金牛座','雙子座','巨蟹座','獅子座',
5 '處女座','天秤座','天蠍座','射手座','摩羯座','水瓶座','雙魚座']
6 nature = ['有一種讓人看見就覺得開心的感覺,陽光、樂觀、堅強,性格直來直去,就是有點小脾氣。',
7 '很保守,喜歡穩定,一旦有什麼變動就會覺得心裡不踏實,性格比較慢熱,是個理財高手。',
8 '喜歡追求新鮮感,有點小聰明,耐心不夠,因你的可愛性格會讓很多人喜歡和你做朋友。',
9 '情緒容易敏感,缺乏安全感,做事情有堅持到底的毅力,為人重情重義,對朋友和家人特別忠實。',
10 '有著遠大的理想,總想靠自己的努力成為人上人,總是期待被仰慕被崇拜的感覺。',
11 '堅持追求自己的完美主義者。',
12 '追求平等、和諧,交際能力強,因此朋友較多。最大的缺點就是面對選擇總是猶豫不決。',
13 '精力旺盛,佔有慾強,對於生活很有目標,不達目的誓不罷休,復仇心重。',
14 '崇尚自由,勇敢、果斷、獨立,身上有一股勇往直前的勁兒,只要想做,就能做。',
15 '是最有耐心的,做事最小心。做事腳踏實地,比較固執,不達目的不罷休,而且非常勤奮。',
16 '人很聰明,最大的特點是創新,追求獨一無二的生活,個人主義色彩很濃重的星座。',
17 '集所有星座的優缺點於一身。最大的優點是有一顆善良的心,願意幫助別人。']
18 sign_dict = dict(zip(sign_all, nature)) #轉換為星座字典
19 print("【香凝】的星座是" ,person_dict.get("香凝")) #get獲取"香凝"的健值
20 print("\n她的性格特點是:\n",sign_dict.get(person_dict.get("香凝")))
運行結果如下:
實例11:應用字典推導式實現根據名字和星座創建一個字典
在IDLE中創建一個名稱為sign_create.py的文件,然後在該文件中,定義兩個包括4個元素的列表,再應用字典推導式將前兩個列錶轉換為對應的字典,並且輸出該字典。
程式碼如下:
1 name =['綺夢', '冷伊一', '香凝', '黛蘭'] #作為健的列表
2 sign =['水瓶', '射手', '雙魚', '雙子'] #作為值的列表
3 dictionary = {i : j + '座' for i,j in zip(name, sign)}
4 print(dictionary)
運行結果如下:
實例12:創建保存學生選課資訊的集合
在 IDLE中創建一個名稱為section_create.py 的文件,然後在該文件中,定義兩個包括4個元素的集合,再輸出這兩個集合。
程式碼如下:
1 python = {'綺夢', '冷伊一', '香凝', '梓軒'}
2 c = {'冷伊一', '零語', '梓軒', '聖博'}
3 print("選擇python語言的學生有:", python)
4 print("選擇C語言的學生有:", c)
運行結果如下:
實例13:學生更改選學課程
在 IDLE中創建一個名稱為 section_add.py的文件,然後在該文件中,定義一個包括4個元素的集合,並且應用add()函數向該集合中添加一個元素,再定義一個包括4個元素的集合,並且應用remove()方法從該集合中刪除指定的元素,最後輸出這兩個集合。
程式碼如下:
1 python = set(['綺夢', '冷伊一', '香凝', '梓軒'])
2 python. add('零語') #添加一個元素進集合
3 c = set(['冷伊一', '零語', '梓軒', '聖博'])
4 c.remove('零語') #刪除一個元素
5 print("選擇Python語言的學生有:", python)
6 print("選擇C語言的學生有:", c)
運行結果如下:
實例14:對選課集合進行交集、並集和差集運算
在IDLE中創建一個名稱為section_operate.py 的文件,然後在該文件中定義兩個包括4個元素的集合,再根據需要對兩個集合進行交集、並集和差集運算,並輸出運算結果。
程式碼如下:
1 python = set(['綺夢', '冷伊一', '香凝', '梓軒'])
2 c = set(['冷伊一', '零語', '梓軒', '聖博'])
3 print("選擇Python語言的學生有:", python)
4 print("選擇C語言的學生有:", c)
5 #輸出既選擇了Python語言又選擇了C語言的學生姓名
6 print("交集運算:", python & c)
7 #輸出參與選擇的全部學生姓名
8 print("並集運算:", python | c)
9 #輸出只選擇Python沒有選擇C的學生姓名
10 print("差集運算:", python - c)
運行結果如下:
實戰一:輸出「王者榮耀」的遊戲角色
「王者榮耀」遊戲中有很多英雄,這些英雄可以分為法師、戰士、坦克、刺客、射手和輔助。本實戰將應用Python中的列表存儲不同類別的英雄,並且遍歷輸出這些英雄。效果如圖所示。
程式碼如下:
1 print("「王者榮耀「遊戲角色:")
2 print("====坦克:====")
3 tank = ["蘇烈","劉邦","鍾馗","張飛","牛魔","程咬金","白起","劉禪","莊周","項羽","廉頗","巨靈神","安祿山","豬八戒"]
4 for i in tank:
5 print(i,end=" ")
6 print("\n"+"====戰士:====")
7 warrior = ["狂鐵","裴擒虎","鎧","孫悟空","哪吒","楊戩","橘右京","亞瑟","雅典娜","夏侯惇","關羽","呂布","韓信","老夫子","達摩",
8 "典韋","曹操","鍾無艷","墨子","趙雲","刑天","龍且"]
9 for i in warrior:
10 print(i,end=" ")
11 print("\n"+"====刺客:====")
12 assassin = ["百里玄策","龐統","花木蘭","靳柯","不知火舞","李白","娜可露露","蘭陵王","韓信","宮本武藏","蓋聶","紅拂"]
13 for i in assassin:
14 print(i,end=" ")
15 print("\n"+"====法師:====")
16 master = ["楊玉環","奕星","女媧","周瑜","鬼谷子","羋月","東皇太一","大喬","諸葛亮","貂蟬","張良","安琪拉"]
17 for i in master:
18 print(i,end=" ")
19 print("\n"+"====射手:====")
20 shooter = ["公孫離","百里守約","后羿","劉備","黃忠","馬可波羅","成吉思汗","虞姬","李元芳","艾琳","狄仁傑","魯班七號","孫尚香"]
21 for i in shooter:
22 print(i,end=" ")
23 print("\n"+"====輔助:====")
24 auxiliary = ["明世隱","夢奇","孫臏","太乙真人","蔡文姬"]
25 for i in auxiliary:
26 print(i,end=" ")
運行結果如下:
實戰二:模擬火車訂票系統
模擬火車訂票系統,效果如圖所示:
程式碼如下:
1 information = ["車次", " ", "出發站-到達站", " ", "出發時間", " ", "到達時間"," ","歷時"]
2 train_number = ["T40","T298","T158","Z62"]
3 chufa_daoda = ["長春-北京","長春-北京","長春-北京","長春-北京"]
4 start_time = ["00:12","00:06","12:48","21:58"]
5 arrival_time = ["12:20","10:50","21:06","08:18"]
6 time = ["12:08","10:44","08:18","8:20"]
7 for i in information:
8 print(i,end="") #輸出表頭
9 print("")
10 #輸出詳細資訊
11 print(train_number[0],' ',chufa_daoda[0],' ',start_time[0],' ',arrival_time[0],' ',time[0],' ')
12 print(train_number[1],' ',chufa_daoda[1],' ',start_time[1],' ',arrival_time[1],' ',time[2],' ')
13 print(train_number[2],' ',chufa_daoda[2],' ',start_time[2],' ',arrival_time[2],' ',time[2],' ')
14 print(train_number[3],' ',chufa_daoda[3],' ',start_time[3],' ',arrival_time[3],' ',time[3],' ')
15 #轉換為字典
16 chufa_chx = dict(zip(train_number,chufa_daoda))
17 start_time_chx = dict(zip(train_number,start_time))
18 arrival_time_chx = dict(zip(train_number,arrival_time))
19 lishi_chx = dict(zip(train_number,time))
20 train = input("請輸入購買車次:")
21 passenger = input("請輸入乘車人(用逗號分隔):")
22 achufa = chufa_chx[train]
23 print("你已購買" + train + "次列車" + achufa + "開,請" + passenger + "儘快換取紙質車票。【鐵路客服】")
運行結果如下:
實戰三:電視劇的收視率排行榜
應用列表和元組將以下電視劇按收視率由高到低進行排序:
《Give up,hold on to me》收視率:1.4%《The private dishes of the husbands》收視率:1.343%
《My father-in-law will do martiaiarts》收視率:0.92%《North Canton still believe in love》收視率:0.862%
《Impossible task》收視率:0.553%《Sparrow》收視率:0.411%《East of dream Avenue》收視率:0.164%
《The prodigal son of the new frontier town》收視率:0.259%《Distant distance》收視率:0.394%《Music legend》收視率:0.562%
效果如圖所示。
程式碼如下:
1 #電視劇列表
2 TV = [("《Give up, hold on to me》收視率:","1.4%"),
3 ("《The private dishes of the husbands》收視率:","1.343%"),
4 ("《My father-in-law will do martiaiarts》收視率:","0.92%"),
5 ("《North Canton still believe in love》收視率:","0.862%"),
6 ("《Impossible task》收視率:","0.553%"),
7 ("《Sparrow》收視率:","0.411%"),
8 ("《East of dream Avenue》收視率:","0.164%"),
9 ("《The prodigal son of the new frontier town》收視率:","0.259%"),
10 ("《Distant distance》收視率:","0.394%"),
11 ("《Music legend》收視率:","0.562%")]
12 #對元素的第二個欄位進行排序
13 TV.sort(key=lambda x:x[1], reverse=True)
14 for item in TV:
15 print(item[0] + str(item[1]))
16 # for i in TV:
17 # for j in range(0, 2):
18 # if j == 1:
19 # print(i[j])
20 # else:
21 # print(i[j], end="")
運行結果如下:
實戰四:統計需要取快遞人員的名單
假設我們可以根據需求訂製自己的手機套餐,可選項為話費、流量和簡訊。假設有如下設置:話費:0分鐘、50分鐘、100分鐘、300分鐘、不限量效果
流量:0M、500M、1G、5G、不限量
簡訊:0條、50條、100條
最後將用戶選擇的內容搭配為一個套餐輸出,效果如圖所示。
程式碼如下:
1 print("訂製自己的手機套餐:")
2 call = ["0分鐘", "50分鐘", "100分鐘", "300分鐘", "不限量"]
3 flow = ["0M", "500M", "1G", "5G", "不限量"]
4 message = ["0條", "50條", "100條"]
5 #通話時長
6 print("A.請設置通話時長:")
7 for i,j in enumerate(call):
8 print(str(i+1) + '.' + j)
9 A = int(input("輸入選擇的通話時長編號:"))
10 #流量
11 print("B.請設置流量包:")
12 for i,j in enumerate(flow):
13 print(str(i+1) + '.' + j)
14 B = int(input("輸入選擇的流量包編號:"))
15 #簡訊
16 print("C.請設置簡訊條數:")
17 for i,j in enumerate(message):
18 print(str(i+1) + '.' + j)
19 C = int(input("輸入選擇的簡訊條數編號:"))
20 #套餐結果
21 print("您的手機套餐訂製成功:"+ "免費通話時長為" + call[A-1] +
22 "/月,"+ "流量為" + flow[B-1] + "/月,"+
23 "簡訊條數" + message[C-1] + "/月")
運行結果如下: