利用集合分析活动投票情况。
第一小队有五名队员,序号是1,2,3,4,5;第二小队也有五名队员,序号6,7,8,9,10。
输入一个由得票队员编号组成的字符串,分别求第一、二小队没有得票的队员。
输入格式:
在一行中输入得票队员的序号,用逗号隔开。
输出格式:
在第一行中按升序输出第一小队没有得票的队员序号,用空格分开;如果所有队员都有得票,则输出"第1小队都有得票"。
在第二行中按升序输出第二小队没有得票的队员序号,用空格分开;如果所有队员都有得票,则输出"第2小队都有得票"。输入样例:
在这里给出第一组输入。例如:
1,5,9,3,9,1,1,7,5,7,7,3,3,1,5,7,4,4,5,4,9,5,10,9
在这里给出第二组输入。例如:
1,5,9,2,9,1,5,7,7,2,3,1,5,7,4,4,5,4,9,5,10,9
输出样例:
在这里给出第一组输出。例如:
2 6 8
在这里给出第二组输出。例如:
第1小队都有得票 6 8
代码如下:
#读入数据 s=input() #转换为列表,将字符串用逗号分割成元素 lst=s.split(',') #定义两个集合,分别存储第1小队和第2小队的队员编号 set1={1,2,3,4,5} set2={6,7,8,9,10} #定义两个字典,分别统计第1小队和第2小队的得票情况 dict1={} dict2={} for i in lst: j=int(i) if j in set1: dict1[j]=dict1.get(j,0)+1 elif j in set2: dict2[j]=dict2.get(j,0)+1 #按升序输出第1小队没有得票的队员 flag=False for i in sorted(set1): if i not in dict1: print(i,end=' ') flag=True if not flag: print('第1小队都有得票') print() #按升序输出第2小队没有得票的队员 flag=False for i in sorted(set2): if i not in dict2: print(i,end=' ') flag=True if not flag: print('第2小队都有得票')
运行结果如下:
tips:
1.dict1[j]=dict1.get(j,0)+1这行代码的作用:
这行代码的作用是统计第一小队中每个队员得票的数量。
dict1
是一个字典,用于存储队员编号和对应的得票数量。j
是当前遍历到的队员编号。dict1.get(j, 0)
是从字典中获取队员编号为j
的得票数量,如果字典中不存在该键,则返回默认值0。+1
表示将得票数量加1。- 最后,将得票数量更新到字典
dict1
中,键为队员编号j
,值为得票数量。2.for i in sorted(set1):这行代码的作用:
在第一行中按升序输出第一小队没有得票的队员序号,用空格分开;如果所有队员都有得票,则输出"第1小队都有得票"。题目中说要按升序输出,在Python中,集合(set)是无序的数据结构,而
sorted(set1)
返回一个列表,其中包含了集合set1
中的元素按升序排序后的结果。