Python第四章实验报告
一、实验题目
Python第四章实例和实战作业
二、实验目的和要求
1.熟悉Pycharm的运行环境
2.学习并掌握Python序列的应用
三、主要仪器设备
联想小新air15
硬件:AMD R7 5700U
软件:Windows11操作系统
四、实验内容
完成第四章实例01-14,4.7实战
利用Pycharm完成Python实验报告
实例01:输出每日一帖
代码如下:
1 #----------实例01:输出每日一帖----------#
2 import datetime #导入日期时间类
3 #定义一个列表
4 mot = ["今天星期一:\n坚持下去不是因为我很坚强,而是因为我别无选择。",
5 "今天星期二:\n含泪播种的人一定能笑着收获。",
6 "今天星期三:\n做对的事情比把事情作对重要。",
7 "今天星期四:\n命运给予我们的不是失望之酒,而是机会之杯",
8 "今天星期五:\n不要等到明天,明天太遥远,今天就行动。",
9 "今天星期六:\n求知若饥,虚心若愚。",
10 "今天星期日:\n成功将属于那些从不说”不可能“的人。"]
11 day = datetime.datetime.now().weekday() #获取当前星期
12 print(mot[day]) #输出每日一帖
代码运行结果如下:

实例02:分两列显示2017~2018赛季NBA西部联盟前八名的球队
代码如下:
1 #---------实例02:分两列显示2017~2018赛季NBA西部联盟前八名的球队----------#
2 print("2017~2018赛季NBA西部联盟前八名\n")
3 team = ["火箭", "勇士", "开拓者", "雷霆", "爵士", "鹈鹕", "马刺", "森林狼"]
4 for index,item in enumerate(team):
5 if index % 2 == 0: #判断是否为偶数,为偶数时不换行
6 print(item + "\t\t", end ='')
7 else:
8 print(item + "\n") #换行输出
代码运行结果如下:

实例03:向NBA名人堂列表中追加2018年新进入的球星
代码如下:
1 #----------实例08:向NBA名人堂列表中追加2018年新进入的球星----------#
2 #NBA名人堂原有人员
3 oldlist = ["迈克尔·乔丹","卡里姆·阿布杜尔·贾巴尔","哈基姆·奥拉朱旺","查尔斯·巴克利","姚明"]
4 newlist = ["贾森·基德" ,"史蒂夫·纳什", "格兰特·希尔"] #新增人员列表
5 oldlist.extend(newlist) #追加新球星
6 print(oldlist) #显示新的NBA名人堂人员列表
代码运行结果如下:

实例04: 使用二维列表输出不同版式的古诗
代码如下:
1 #----------实例04:使用二维列表输出不同版式的古诗----------#
2 str1 = "千山鸟飞绝"
3 str2 = "万径人踪灭"
4 str3 = "孤舟蓑笠翁"
5 str4 = "独钓寒江雪"
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
15 verse.reverse()
16 print("\n-- 竖版 --\n")
17 for i in range(5): #循环每一行的每个字
18 for j in range(4): #循环新逆序排列后的第一行
19 if j ==3: #如果是最后一行
20 print(verse[j][i]) #换行输出
21 else:
22 print(verse[j][i], end='') #不换行输出
代码运行结果如下:

实例05:使用元组保存咖啡馆里提供的咖啡名称
代码如下:
1 #----------实例05:使用元组保存咖啡馆里提供的咖啡名称----------#
2 coffeename = ('蓝山','卡布奇诺','曼特宁','摩卡','麝香猫','哥伦比亚') #定义元组
3 print(coffeename) #输出元组
代码运行结果如下:

实例06:使用for循环列出咖啡馆里的咖啡名称
代码如下:
1 #----------实例06:使用for循环列出咖啡馆里的咖啡名称----------#
2 coffeename = ('蓝山','卡布奇诺','曼特宁','摩卡','麝香猫','哥伦比亚') #定义元组
3 print("您好,欢迎光临~伊米咖啡馆~\n\n我店有:\n")
4 for name in coffeename: #遍历元组
5 print(name + "咖啡", end=" ")
代码运行结果如下:
![]()
实例07:分两列显示2017~2018赛季NBA西部联盟前八名球队
代码如下:
1 #----------实例07:分两列显示2017~2018赛季NBA西部联盟前八名球队----------#
2 print("2017~2018赛季NBA西部联盟前八名\n")
3 team = ("火箭", "勇士", "开拓者", "雷霆", "爵士", "鹈鹕", "马刺", "森林狼")
4 for index,item in enumerate(team):
5 if index % 2 == 0: #判断是否为偶数,为偶数时不换行
6 print(item + "\t\t", end ='')
7 else:
8 print(item + "\n") #换行输出
代码运行结果如下:
![]()
实例09:创建一个保存女神星座的字典
代码如下:
1 #----------实例09:创建一个保存女神星座的字典----------#
2 name = ['绮梦','冷伊一','香凝','黛兰'] #作为键的列表
3 sign = ['水瓶座','射手座','双鱼座','双子座'] #作为值的列表
4 dictionary = dict(zip(name,sign)) #转换为字典
5 print(dictionary) #输出转换后的字典
代码运行结果如下:
![]()
实例10:根据星座测试性格特点
代码如下:
1 #----------实例10:根据星座测试性格特点----------#
2 name = ['绮梦','冷伊一','香凝','黛兰'] #作为键的列表
3 sign_person = ['水瓶座','射手座','双鱼座','双子座'] #作为值的列表
4 person_dict = dict(zip(name,sign_person)) #转换为个人字典
5 sign_all=['白羊座','金牛座','双子座','巨蟹座','狮子座','处女座','天秤座','天蝎座','射手座','摩羯座','水瓶座','双鱼座']
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("香凝")) #输出星座
20 print("\n 她的性格特点是:\n\n",sign_dict.get(person_dict.get("香凝"))) #输出性格特点
代码运行结果如下:

实例11:应用字典推导式实现根据名字和星座创建一个字典
代码如下:
1 #----------实例11:应用字典推导式实现根据名字和星座创建一个字典----------#
2 name = ['绮梦','冷伊一','香凝','黛兰'] #作为键的列表
3 sign = ['水瓶','射手','双鱼','双子'] #作为值的列表
4 dictionary = {i:j+'座' for i,j in zip(name,sign)} #使用列表推导式生成字典
5 print(dictionary)
代码运行结果如下:

实例12:创建保存学生选课信息的集合
代码如下:
1 #----------实例12:创建保存学生选课信息的集合----------#
2 python = {'绮梦','冷伊一','香凝','梓轩'} #保存选择Python语言的学生姓名
3 c = {'冷伊一','零语','梓轩','圣博'} #保存选择C语言的学生姓名
4 print("选择Python语言的学生有:",python, '\n') #输出选择Python语言的学生姓名
5 print("选择C语言的学生有:",c) #输出选择C语言的学生姓名
代码运行结果如下:

实例13:学生更改选学课程
代码如下:
1 #----------实例13:学生更改选学课程----------#
2 python = set(['绮梦','冷伊一','香凝','梓轩']) #保存选择Python语言的学生姓名
3 python.add('零语') #添加一个元素
4 c = set(['冷伊一','零语','梓轩','圣博']) #保存选择C语言的学生姓名
5 c.remove('零语') #删除指定元素
6 print("选择Python语言的学生有:",python, '\n') #输出选择Python语言的学生姓名
7 print("选择C语言的学生有:",c) #输出选择C语言的学生姓名
代码运行结果如下:
![]()
实例14:对选课集合进行交集、并集和差集运算
代码如下:
1 #------------实例14:对选课集合进行交集、并集和差集运算-----------#
2 python = set(['绮梦','冷伊一','香凝','梓轩']) #保存选择Python语言的学生姓名
3 c = set(['冷伊一','零语','梓轩','圣博']) #保存选择C语言的学生姓名
4 print("选择Python语言的学生有:",python) #输出选择Python语言的学生姓名
5 print("选择C语言的学生有:",c) #输出选择C语言的学生姓名
6 print("交集运算:",python&c) #输出既选择了Python语言又选择了C语言的学生姓名
7 print("并集运算:",python|c) #输出参与选课的全部学生姓名
8 print("差集运算:",python - c) #输出只选择了Python语言但没有选择C语言的学生姓名
代码运行结果如下:
实战一:输出”王者荣耀“的游戏角色
“王者荣耀”游戏中有很多英雄,这些英雄可以分为法师、战士、坦克、刺客、射手和辅助。本实战将应用Python中的列表存储不同类别的英雄,并且遍历输出这些英雄。效果如图所示。

代码如下:
1 #----------实战一:输出”王者荣耀“的游戏角色----------#
2 print("“王者荣耀”游戏角色:")
3 tanke = ["苏烈","刘邦","钟馗","张飞","牛魔","程咬金","白起","刘禅","庄周","项羽","廉颇","巨灵神","安禄山","猪八戒"]
4 print("====坦克:====")
5 for i in tanke:
6 print(i, end=" ")
7 tanke = []
8 print("\n" + "====战士:====")
9 zhanshi = ["狂铁","裴擒虎","铠","孙悟空","哪吒","杨戬","橘右京","亚瑟","雅典娜","夏侯惇","关羽","吕布","韩信","老夫子","达摩","典韦","曹操","钟无艳","墨子","赵云","刑天","龙且"]
10 for i in zhanshi:
11 print(i, end=" ")
12 print("\n" + "====刺客:====")
13 cike = ["百里玄策","庞统","花木兰","靳柯","不知火舞","李白","娜可露露","兰陵王","韩信","宫本武藏","盖聂","红拂"]
14 for i in cike:
15 print(i, end=" ")
16 print("\n" + "====法师:====")
17 fashi= ["杨玉环","奕星","女娲","周瑜","鬼谷子","芈月","东皇太一","大乔","诸葛亮","貂蝉","张良","安琪拉"]
18 for i in fashi:
19 print(i, end=" ")
20 print("\n" + "====射手:====")
21 sheshou = ["公孙离","百里守约","后羿","刘备","黄忠","马可波罗","成吉思汗","虞姬","李元芳","艾琳","狄仁杰","鲁班七号","孙尚香"]
22 for i in sheshou:
23 print(i, end=" ")
24 print("\n" + "====辅助:====")
25 fuzhu = ["明世隐","梦奇","孙膑","太乙真人","蔡文姬"]
26 for i in fuzhu:
27 print(i, end=" ")
代码运行结果如下:

实战二:模拟火车订票系统
代码如下:
1 #----------实战二:模拟火车订票系统----------#
2 a = ["车次"," ","出发站-到达站"," ","出发时间"," ","到达时间"," ","历时"]
3 checi = ["T40","T298","Z158","Z62"]
4 station = ["长春-北京","长春-北京","长春-北京","长春-北京"]
5 start_time = ["00:12","00:06","12:48","21.58"]
6 arrive_time = ["12:20","10:50","21:06","08:18"]
7 lishi = ["12:08","10:44","08:18","8:20"]
8 for i in a:
9 print(i,end="")
10 print("\n")
11 #输出详细信息
12 print(checi[0],' ',station[0],' ',start_time[0],' ',arrive_time[0],' ',lishi[0])
13 print(checi[1],'',station[1],' ',start_time[1],' ',arrive_time[1],' ',lishi[2])
14 print(checi[2],'',station[2],' ',start_time[2],' ',arrive_time[2],' ',lishi[2])
15 print(checi[3],' ',station[3],' ',start_time[3],' ',arrive_time[3],' ',lishi[3])
16 a_station = dict(zip(checi,station))
17 a_start_time = dict(zip(checi,start_time))
18 a_arrive_time = dict(zip(checi,arrive_time))
19 a_lishi = dict(zip(checi,lishi))
20 train = input("请输入购买车次:")
21 chengcheren = input("请输入乘车人(用逗号分隔):")
22 Station = a_station[train]
23 print("您已购买 " + train + " 次列车 " + Station + " 开,请" + chengcheren + "尽快换取纸质车票。【铁路客服】")
代码运行结果如下:

实战三:电视剧的收视率排行榜
代码如下:
1 #------------实战三:电视剧的收视率排行榜----------#
2 print("电视剧的收视率排行榜:")
3 TV = [("《Give up, hold on to me》收视率:","1.4%"),
4 ("《The private dishes of the husbands》收视率:","1.343%"),
5 ("《My father-in-law will do martiaiarts》收视率:","0.92%"),
6 ("《North Canton still believe in love》收视率:","0.862%"),
7 ("《Impossible task》收视率:","0.553%"),
8 ("《Sparrow》收视率:","0.411%"),
9 ("《East of dream Avenue》收视率:","0.164%"),
10 ("《The prodigal son of the new frontier town》收视率:","0.259%"),
11 ("《Distant distance》收视率:","0.394%"),
12 ("《Music legend》收视率:","0.562%")]
13 TV.sort(key = lambda s:s[1], reverse = True)
14 for item in TV:
15 print(item[0] + str(item[1]))
代码运行结果如下:
![]()
实战四:定制自己的手机套餐
假设我们可以根据需求定制自己的手机套餐,可选项为话费、流量和短信。假设有如下设置:话费:0分钟、50分钟、100分钟、300分钟、不限量效果
流量:0M、500M、1G、5G、不限量
短信:0条、50条、100条
最后将用户选择的内容搭配为一个套餐输出,效果如图所示。

代码如下:
1 #----------实战四:定制自己的手机套餐----------#
2 print("定制自己的手机套餐:")
3 #通话时长
4 shichang = ["0分钟","50分钟","100分钟","300分钟","不限量"]
5 print("A.请设置通话时长:")
6 for index,item in enumerate(shichang):
7 print(str(index+1) + "." + item)
8 A = int(input("输入选择的通话时长编号:"))
9 #流量包
10 liuliang = ["0M", "500M", "1G", "5G", "不限量"]
11 for index,item in enumerate(liuliang):
12 print(str(index+1) + "." + item)
13 B = int(input("输入选择的流量包编号:"))
14 #短信条数
15 duanxin = ["0条", "50条", "100条"]
16 print("C.请设置短信条数:")
17 for index,item in enumerate(duanxin):
18 print(str(index+1) + "." + item)
19 C = int(input("输入选择的短信条数编号:"))
20 #套餐结果
21 print("您的手机套餐定制成功:" + "免费通话时长为" + shichang[A-1] + "/月," + "流量为" + liuliang[B-1] + "/月," + "短信条数" + duanxin[C-1] + "/月")
代码运行结果如下:
![]()






浙公网安备 33010602011771号