[Python3]利用集合分析活动投票情况。第一小队有五名队员,序号是1,2,3,4,5;第二小队也有五名队员,序号6,7,8,9,10。输入一个由得票队员编号组成的字符串,分别求第一、二......

利用集合分析活动投票情况。

第一小队有五名队员,序号是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中的元素按升序排序后的结果。

  • 8
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值