实验四 Python字典和集合的使用

 一、实验目的

1.掌握字典和集合的使用和允许操作。
2.熟悉在不同情况下如何选用合适的数据类型。

二、实 验 内 容

1.创建由’Monday’~’Sunday’7个值组成的字典,输出键列表,值列表以及键值列表,运行效果如图。
代码:

#创建7个值组成的字典,输出键列表,值列表以及键值列表,运行效果如图。
dict={1:'Mon',2:'Tues',3:'Wed',4:'Thur',5:'Fri',6:'Sat',7:'Sum'}
for keys in dict.keys():
    print(keys,end=' ',)
print()
for values in dict.values():
    print(values,end=' ')
print()
for items in dict.items():
    print(items,end=' ')

结果:

 

2. 学生基本信息存放在如下字典中:DictStudent = {"郭靖": ["男", 19], "黄蓉": ["女", 18], "杨康": ["男", 18], "李莫愁": ["女", 20], "穆念慈": ["女", 19], "瑛姑": ["女", 19]}。
   请分别统计男、女生人数,并查找所有年龄超过18岁学生的姓名。

代码:

DictStudent = {"郭靖": ["男", 19], "黄蓉": ["女", 18], "杨康": ["男", 18], "李莫愁": ["女", 20], "穆念慈": ["女", 19], "瑛姑": ["女", 19]}
count={}
names=[]
for key,value in DictStudent.items():
    count[value[0]]=count.get(value[0],0)+1  #count.get(word,0) 作用是返回该元素对应的值,即0,+1是用来计数的,表明word已出现过一次
    if value[1]>18:
        names.append(key)
print("男女生人数为:",count)
print("年龄超过18岁的学生姓名为",names)

结果展示:

3.人员信息如图,每条记录存放在字典中:
r1 = {"name":"高小一","age":18,"salary":30000,"city":"北京"}
r2 = {"name":"高小二","age":19,"salary":20000,"city":"上海"}
r3 = {"name":"高小五","age":20,"salary":10000,"city":"深圳"}
tb = [r1,r2,r3]
完成以下操作:(1)向每条记录中添加新键值”gender”,第1和第3人为”male”,第2人为”female”。(2)打印“高小二”的薪资;(3)打印所有人的薪资;(4)打印表中所有人的全部信息;(4)按性别求平均薪资并输出。

代码:

r1 = {"name":"高小一","age":18,"salary":30000,"city":"北京"} 
r2 = {"name":"高小二","age":19,"salary":20000,"city":"上海"}
r3 = {"name":"高小五","age":20,"salary":10000,"city":"深圳"}
tb = [r1,r2,r3]
r1["gender"]="male"
r2["gender"]="female"
r3["gender"]="male"
a=r1.get("salary")
b=r2.get("salary")
c=r3.get("salary")
print("高小二的薪资:",b)
print("所有人的薪资如下:",a,b,c)
print("所有人的信息如下:")
for v in r1.values():
    print(v,end=" ")
print()
for v in r2.values():
    print(v,end=" ")
print()
for v in r3.values():
    print(v,end=" ")
print()
print("男女生各自平均薪资为:")
print("male",(a+c)/2)
print("female",b/1)
        

结果输出: 

4.有如下学生的成绩信息:
s1 = {"姓名":"乔峰","班级":"1班","数学":88,"语文":87,"英语":90}
s2 = {"姓名":"段誉","班级":"2班","数学":98,"语文":77,"英语":95}
s3 = {"姓名":"阿朱","班级":"1班","数学":78,"语文":83,"英语":80}
s4 = {"姓名":"阿紫","班级":"1班","数学":75,"语文":80,"英语":86}
s5 = {"姓名":"虚竹","班级":"2班","数学":93,"语文":85,"英语":96}
完成以下操作:(1)遍历输出1班学生的成绩单(2)求出每个学生的总成绩后加到原有字典中然后打印每个学生信息(3)求出每门课的平均成绩并输出(4)找出数学低于平均分的学生,打印他们的姓名,班级,数学成绩。

这个代码写在了另一篇上,见:Python字典的使用_云杉_晴天的博客-CSDN博客

5. 随机生成10个0~10的整数,分别组成集合A和集合B,输出A和B集合的内容,长度,最大值,最小值以及它们的并集,交集和差集。效果如图:

代码:

#随机生成10个0~10的整数,分别组成集合A和集合B,输出A和B集合的内容,长度,最大值,最小值以及它们的并集,交集和差集。
import random
A,B={0},{0}
i=j=10
while i!=0:
    A.add(int(random.randint(0, 10)))
    i-=1
while j!=0:
    B.add(int(random.randint(0, 10)))
    j-=1
A.remove(0)
B.remove(0)
a=A|B  #并集
b=A&B  #交集
c=A-B  #差集
print("集合的内容,长度,最大值,最小值分别为:")
print("A集合为{},A集合的长度为{},最大值为{},最小值为{}".format(A,len(A),max(A),min(A)))
print("B集合为{},B集合的长度为{},最大值为{},最小值为{}".format(B,len(B),max(B),min(B)))
print("A与B的并集{},A与B的交集{},A与B的差集{}".format(a,b,c))

结果输出:
6. 有两个集合分别保存了选修Python和C的学生名单,如下所示:
   Python = {'郭靖', '黄蓉', '杨康', '郭芙'}
   C= {'黄蓉', '尹志平', '段誉', '郭芙'}
   完成以下操作:(1)向Python集合中添加一个学生’乔峰’,将C集合中的’尹志平’删除,然后输出两个集合的信息(2)输出既选修Python语言又选修C语言的学生姓名,(3)输出选修两门课的全部学生姓名(4)输出只选修Python没选修C的学生姓名(5)输出只选C没选Python的学生姓名

Python = {'郭靖', '黄蓉', '杨康', '郭芙'}
C= {'黄蓉', '尹志平', '段誉', '郭芙'}
Python.add('乔峰')
C.remove('尹志平')
print("选修Python的学生有:",Python)
print("选修C的学生有:",C)
a=Python&C
b=Python|C
c=Python-C
d=C-Python
print("既选了Python又选了C的学生名单",a)
print("选了Python和选了C的学生名单",b)
print("选了Python没有选了C的学生名单",c)
print("选了C没有选Python的学生名单",d)

 

  • 9
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值