Python實驗報告——第4章 序列的應用

 實驗報告

【實驗目的】 

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] + "/月")

 

 

 運行結果如下: