集合练习题

小明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性他先用计算机生成了N个1~1000之间的随机整数(N<=1000),
N是用户输入的,对于其中重复的数字,只保留一个,把其余相同的数字去掉,不同的数对应着不同的学生的学号,
然后再把这些数从小到大排序,按照排好的顺序去找同学做调查,请你协助明明完成“去重”与排序工作

分析:集合可以用来去重,即每生成一个随机数便将其加入到定义的空集合中集合即可
sorted函数可以对集合进行排序

 1 import random
 2 n=int(input("请输入学生数量"))
 3 li=set()
 4 m=0
 5 while m<n:
 6     a=random.randint(0,1000)
 7     if a not in li:
 8         li.add(a)
 9         m+=1
10 print(li)
11 li=list(li)
12 li.sort()
13 print(li)

 

经理有:曹操,刘备,孙权

技术员:曹操,孙权,张飞,关羽

用集合求:

1.既是经理也是技术员的有谁?2.是技术员但不是经理的人有谁? 3.是经理,但不是技术员的有谁? 4.张飞是经理吗? 5.身兼一职的人有谁? 6.经理和技术员共有几人?

 1 a={"曹操","刘备","孙权"}
 2 b={"曹操","孙权","张飞","关羽"}
 3 #1.既是经理也是技术员的有谁?
 4 s=a&b
 5 print(s)
 6 # 2.是技术员但不是经理的人有谁?
 7 s=b-a
 8 print(s)
 9 # 3.是经理,但不是技术员的有谁?
10 s=a-b
11 print(s)
12 # 4.张飞是经理吗?
13 s="张飞" in a
14 print(s)
15 # 5.身兼一职的人有谁?
16 s=a^b
17 print(s)
18 # 6.经理和技术员共有几人?
19 s=a|b
20 print(s)

posted @ 2020-03-08 19:13  彡心如止水彡  阅读(400)  评论(0)    收藏  举报