一.实验项目名称:《零基础学Python》第四章的14道实例和4道实战
二.实验环境:IDLE(Python 3.9 64-bit)
三.实验目的和要求:熟练掌握Python序列的应用
四.实验过程:
实例01 输出每日一帖
在IDLE中创建一个名称为tips.py的文件,然后在该文件中导入日期时间类,然后定义一个列表(保持7条励志文字作为每日一帖的内容),再获取当前的星期作为列表的索引,输出元素内容,代码如下:
点击查看代码
import datetime #导入日期时间类
#定义一个列表
mot=["今天星期一:\n坚持下去不是因为我很坚强,而是因为我别无选择。",
"今天星期二:\n含泪播种的人一定能笑着收获。",
"今天星期三:\n做对的事情比把事情做对重要。",
"今天星期四:\n命运给予我们的不是失望之酒,而是机会之杯。",
"今天星期五:\n不要等到明天,明天太遥远,今天就行动。",
"今天星期六:\n求知若饥,虚心若愚。",
"今天星期日:\n成功属于那些从不说“不可能”的人。"]
day=datetime.datetime.now().weekday() #获取当前星期
print(mot[day]) #输出每日一帖
`
运行结果:
实例02 分两列显示2017~2018赛季NBA西部联赛前八名的球队
在IDLE中创建一个名为printteam.py的文件,并且在该文件中先输出标题,然后定义一个列表(保持球队名称),再应用for循环和enumerate()函数便利列表,在循环体中通过if...else语句判断是否为偶数,如果为偶数则不换行输出,否则换行输出。代码如下:
点击查看代码
print("2017~2018赛季NBA西部联盟前八名\n")
team=["火箭","勇士","开拓者","雷霆","爵士","鹈鹕","马刺","森林狼"]
for idex,item in enumerate(team):
if idex%2==0:
print(item+"\t\t",end='')
else:
print(item+"\n")
`
运行结果:
实战03 向NBA名人堂列表中追加2018年新进入的球星
在IDLE中创建一个名称为nba.py的文件,然后在该文件中定义一个保持NBA名人堂原有球星名字的列表,然后创建一个保持2018年新进入球星名字的列表,在调用列表对象的extend()方法追加元素,最后输出追加元素后的列表,代码如下:
点击查看代码
#NBA名人堂原有人员
oldlist=["迈克尔·乔丹","卡里姆·阿布杜尔·贾巴尔","哈基姆·奥拉朱旺","查尔斯·巴克利","姚明"]
newlist=["贾森·基德","史蒂夫·纳什","格兰特·希尔"]
oldlist.extend(newlist)
print(oldlist)
运行结果:
实例04 使用尔维尼列表输出不同版式的古诗
在IDLE中创建一个名称为printverse.py的文件,然后在该文件中首先定义4个字符串,内容为柳宗元的《江雪》中的诗句,并定义一个二维列表,然后应用嵌套的for循环将古诗以横版方式输出,再将二维列表进行逆序的排列 ,最后应用嵌套的for循环将古诗以竖版方式输出,代码如下:
点击查看代码
str1="千山鸟飞绝"
str2="万径人踪灭"
str3="孤舟蓑笠翁"
str4="独钓寒江雪"
verse=[list(str1),list(str2),list(str3),list(str4)] #定义一个二维列表
print("\n--横版--\n")
for i in range(4): #循环古诗的每一行
for j in range(5): #循环每一行的每个字(列)
if j==4: #如果是一行中的最后一个字
print(verse[i][j]) #换行输出
else:
print(verse[i][j],end="") #不换行输出
verse.reverse() #对列表进行逆序排列
print("\n--竖版--")
for i in range(5): #循环每一行的每个字(列)
for j in range(4): #循环新逆序排列后的第一行
if j==3: #如果是最后一行
print(verse[j][i]) #换行输出
else:
print(verse[j][i],end="") #不换行输出
运行结果:
实例05 使用元祖保存咖啡馆里提供的咖啡名称
在IDLE中创建一个名称为cafe_coffeename.py的文件,然后在该文件中定义一个包含6个元素的元祖,内容为伊米咖啡馆里的咖啡名称,并且输出该元祖,代码如下:
点击查看代码
#定义元组
coffeename=('蓝山','卡布奇诺','曼特宁','摩卡','麝香猫','哥伦比亚')
#输出元组
print(coffeename)
运行结果:
实例06 使用for循环列出咖啡馆里咖啡的名称
在IDLE中创建一个名称为cafe_coffeename.py的文件,然后在该文件中定义一个包含6个元素的元祖,内容为伊米咖啡馆里的咖啡名称,然后应用for循环语句输出每个元组元素的值,即咖啡名称,并且在后面加上“咖啡”二字,代码如下:
点击查看代码
coffeename=('蓝山','卡布奇诺','曼特宁','摩卡','麝香猫','哥伦比亚') #定义元组
print("您好,欢迎光临~伊米咖啡馆~\n\n我店有: \n")
for name in coffeename: #遍历元组
print(name+"咖啡",end=" ")
运行结果:
实例07 分两列显示2017~2018赛季NBA西部联盟前八名球队
本实例将在实例02的基础上进行修改,将列表修改为元组,其他内容不变,修改后的代码如下:
点击查看代码
print("2017~2018赛季NBA西部联盟前八名\n")
team=("火箭","勇士","开拓者","雷霆","爵士","鹈鹕","马刺","森林狼")
for idex,item in enumerate(team):
if idex%2==0:
print(item+"\t\t",end='')
else:
print(item+"\n")
运行结果:
实例08 将麝香猫咖啡替换为拿铁咖啡
在IDLE中创建一个cafe_reolace.py的文件,然后在该文件中,定义一个包含6个元素的元组,内容为伊米咖啡馆里的咖啡名称,然后修改其中的第5个元素的内容为“拿铁”,代码如下:
点击查看代码
#定义元组
coffeename=('蓝山','卡布奇诺','曼特宁','摩卡','麝香猫','哥伦比亚')
#将“麝香猫”替换为“拿铁”
coffeename[4]='拿铁'
print(coffeename)
运行结果:
实例06 创建一个保存女神星座的字典
在IDLE中创建一个名称为sign_create.py的文件,然后在该文件中,定义两个包括4个元素的列表,再应用dict()函数和zip()函数将前两个列表转换为对应的字典,并且输出该字典,对应代码如下:
点击查看代码
name=['绮梦','冷伊一','香凝','黛兰']
sign=['水瓶座','射手座','双鱼座','双子座']
dictionary=dict(zip(name,sign))
print(dictionary)
运行结果:
实例10 根据星座测试性格特点
在IDLE中创建一个名称为sign_get.py的文件,然后在该文件中创建两个字典,一个保存名字和星座,另一个保存星座和性格特点,最后从这两个字典中取出相应的信息组合出想要的结果,并输出,代码如下:
点击查看代码
name=['绮梦','冷伊一','香凝','黛兰'] #作为键的列表
sign_person=['水瓶座','射手座','双鱼座','双子座'] #作为值的列表
person_dict=dict(zip(name,sign_person))
sign_all=['白羊座','金牛座','双子座','巨蟹座','狮子座','处女座','天秤座','天蝎座','射手座','摩羯座',
'水瓶座','双鱼座']
nature=['有一种让人看见就觉得开心的感觉,阳光、乐观、坚强,性格直来直去,就是有点小脾气。',
'很保守,喜欢稳定,一旦有什么变动就会觉得心里不踏实,性格比较慢热,是理财高手。',
'喜欢最求新鲜感,有点小聪明,耐心不够,因你的可爱性格会让很多人喜欢和你做朋友。',
'情绪容易敏感,缺乏安全感,做事情有坚持到底的毅力,为人重情义,对朋友和家人特别忠实。',
'有着远大的理想,总想靠自己的努力成为人上人,总是期待被仰慕被崇拜的感觉。',
'坚持追求自己的完美主义者。',
'追求平等、和谐,交际能力强,因此朋友较多。最大的缺点就是面对选择总是犹豫不决。',
'精力旺盛,占有欲强,对于生活很有目标,不达目的誓不罢休,复仇心重。',
'崇尚自由,勇敢、果断、独立,身上有一股勇往直前的劲儿,只要想做,就能做。',
'是最有耐心的,做事最小心。做事脚踏实地,比较固执,不达目的不罢休,而且非常勤奋。',
'人很聪明,最大的特点是创新,追求独一无二的生活,个人主义色彩很浓重的星座。',
'集所有星座的优缺点于一身。最大的优点是有一颗善良的心,愿意帮助别人。']
sign_dict=dict(zip(sign_all,nature)) #转换为星座字典
print("【香凝】的星座是",person_dict.get("香凝")) #输出星座
print("\n她的性格特点是:\n\n",sign_dict.get(person_dict.get("香凝"))) #输出性格特点
运行结果:
实例11 应用字典推导式实现根据名字和星座创建一个字典
在IDLE中创建一个名称为sign_create.py的文件,然后在该文件中,定义两个包括4个元素的列表,再应用字典推导式将前两个列表转换为对应的字典,并且输出该字典,代码如下:
点击查看代码
name=['绮梦','冷伊一','香凝','黛兰'] #作为键的列表
sign=['水瓶','射手','双鱼','双子'] #作为值的列表
dictionary={i:j+'座' for i,j in zip(name,sign)} #使用列表推导式生成字典
print(dictionary) #输出转换后字典
运行结果:
实例12 创建保存学生选课信息的集合
在IDLE中创建一个名称为section_create.py的文件,然后在该文件中,定义两个包括4个元素的集合,再输出这两个集合,代码如下:
点击查看代码
python={'绮梦','冷伊一','香凝','梓轩'}
c={'冷伊一','零语','梓轩','圣博'}
print('选择pyhon语言的学生有:',python,'\n')
print('选择C语言的学生有:',c)
运行结果:
实例13 学生更改选学课程
在IDLE中创建一个名称为section_add.py的文件,然后在该文件中,定义一个包括4个元素的集合,并且应用add()函数向该集合中添加一个元素,再定义一个包括4个元素的集合,并且应用remove()方法从该集合中删除指定的元素,最后输出这两个集合,代码如下:
点击查看代码
python=set(['绮梦','冷伊一','香凝','梓轩'])
python.add('零语')
c=set(['冷伊一','零语','梓轩','圣博'])
c.remove('零语')
print('选择python语言的学生有:',python,'\n')
print('选择C语言的学生有:',c)
运行结果:
实例14 对选课集合进行交集、并集和差集运算
在IDLE中创建一个名称为section_operate.py的文件,然后在该文件中定义两个包括4个元素的集合,再根据需要对两个集合进行交集、并集和差集运算,并输出运算结果,代码如下:
点击查看代码
python=set(['绮梦','冷伊一','香凝','梓轩'])
c=set(['冷伊一','零语','梓轩','圣博'])
print('选择python语言的学生有:',python)
print('选择C语言的学生有:',c)
print('交集运算:',python&c)
print('并集运算:',python|c)
print('差集运算:',python-c)
运行结果:
实战01 输出“王者荣耀”的游戏角色
“王者荣耀”游戏中有很多英雄,这些英雄可以分为法师、战士、坦克、刺客、射手和辅助。本实战将应用Python中的列表存储不同类别的英雄,并且遍历输出这些英雄。
代码如下:
点击查看代码
print("“王者荣耀”游戏角色:")
print("===坦克:===")
tk=["苏烈","刘邦","钟馗","张飞","牛魔","程咬金","白起","刘禅","庄周","项羽","廉颇","巨灵神","安禄山","猪八戒"]
for idex,item in enumerate(tk):
print(item+"\t",end='')
print("\n===战士:===")
zs=["狂铁","裴擒虎","铠","孙悟空","哪吒","杨戬","橘右京","亚瑟","雅典娜","夏候惇","关羽","吕布","韩信","老夫子"
,"达摩","典韦","曹操","钟无艳","墨子","赵云","刑天","龙且"]
for idex,item in enumerate(zs):
print(item+"\t",end='')
print("\n===刺客:===")
ck=["百里玄策","庞统","花木兰","阿轲(荆轲)","不知火舞","李白","娜可露露","兰陵王","露娜","韩信","官本","武藏","盖聂","红拂"]
for idex,item in enumerate(ck):
print(item+"\t",end='')
print("\n===法师:===")
fs=["杨玉环","弈星","女娲","周瑜","鬼谷子","芈月","干将莫邪","东皇太一","大乔","诸葛亮","貂蝉","张良","安琪拉",
"不知火舞","姜子牙","武则天","王昭君","甄姬","扁鹊","高渐离","嬴政","妲己","小乔"]
for idex,item in enumerate(fs):
print(item+"\t",end='')
print("\n===射手:===")
ss=["公孙离","百里守约","后羿","刘备","黄忠","马可波罗","成吉思汗","虞姬","李元芳","艾琳","狄仁杰","鲁班七号","孙尚香"]
for idex,item in enumerate(ss):
print(item+"\t",end='')
print("\n===辅助:===")
fz=["明世隐","梦奇","孙膑","太乙真人","蔡文姬"]
for idex,item in enumerate(fz):
print(item+"\t",end='')
运行结果:
实战02 模拟火车订票系统
模拟火车订票系统,效果如图:
代码如下:
点击查看代码
def jc_checi(string):
if string in CC:
return string
else:
cw=input("暂无该车次,请输入要购买的其他车次:")
return jc_checi(cw)
CC=['车次','T40','T298','Z158','Z62']
CFZ_DDZ=["出发站-到达站",'长春-北京','长春-北京','长春-北京','长春-北京']
CFSJ=["出发时间",'00:12','00:06','12:48','21:58']
DDSJ=["到达时间",'12:20','10:50','21:06','06:08']
LS=["历时",'12:08','10:44','08:18','8:20']
print(CC[0]+"\t",CFZ_DDZ[0]+"\t",CFSJ[0]+"\t\t",DDSJ[0]+"\t\t",LS[0])
print(CC[1]+"\t",CFZ_DDZ[1]+"\t",CFSJ[1]+"\t\t",DDSJ[1]+"\t\t",LS[1])
print(CC[2]+"\t",CFZ_DDZ[2]+"\t",CFSJ[2]+"\t\t",DDSJ[2]+"\t\t",LS[2])
print(CC[3]+"\t",CFZ_DDZ[3]+"\t",CFSJ[3]+"\t\t",DDSJ[3]+"\t\t",LS[3])
print(CC[4]+"\t",CFZ_DDZ[4]+"\t",CFSJ[4]+"\t\t",DDSJ[4]+"\t\t",LS[4])
checi=input("请输入要购买的车次:")
checi=jc_checi(checi)
ccr=input("请输入乘车人(用逗号隔开):")
if checi==CC[1]:
sj=CFSJ[1]
if checi==CC[2]:
sj=CFSJ[2]
if checi==CC[3]:
sj=CFSJ[3]
if checi==CC[4]:
sj=CFSJ[4]
print("你已购"+checi+"次列车 长春-北京"+sj+"开,请"+ccr+"准时乘车。【铁路客服】")
运行结果:
实战03 电视剧的收视率排行榜
代码如下:
点击查看代码
print("电视剧的收视率排行榜:")
DSJ_SSLS=[('《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)
]
DSJ_SSLS=sorted(DSJ_SSLS,key=lambda S:S[1],reverse=True)
for DSJ_SSL in DSJ_SSLS:
print(DSJ_SSL[0]+"收视率:"+str(DSJ_SSL[1])+"%")
运行结果:
实例04 统计需要取快递人员的名单
双十一过后,某公司每天都能收到很多快递,门卫小张想要写一个程序统计一下收到快递的人员名单,以便统一通知。现请你帮他编写一段Python程序,统计出需要来取快递的人员名单。
点击查看代码
name=set()
name1=set()
none=True
while none:
ry = input("请输入收到快递人员的名单(输入0退出): ")
if ry== '0':
none=False
break
name1.add(ry)
if len(name1)==len(name):
print("取快递人员已存在!")
name.add(ry)
print("需要通知取快递的人员名单:")
for item in name:
print(item + "\t")
运行结果: