7-2 分析活动投票情况 (python)(20 分)习题解答
7-2 分析活动投票情况 (20 分)
利用集合分析活动投票情况。第一小队有五名队员,序号是1,2,3,4,5;第二小队也有五名队员,序号6,7,8,9,10。输入一个得票字符串,求第二小队没有得票的队员
输入格式:
在一行中输入得票的队员的序列号,用逗号隔开。
输出格式:
一行中输出第二小队没有得票的队员序号。
输入样例:
在这里给出一组输入。例如:
1,5,9,3,9,1,1,7,5,7,7,3,3,1,5,7,4,4,5,4,9,5,10,9
输出样例:
在这里给出相应的输出。例如:
6 8
习题分析:
1.一队队员{1,2,3,4,5} ;二队队员{6,7,8,9,10}.输入一个包含投票信息的字符串,要输出二队中没有得票队员的序号,那第一步肯定是处理输入的那个字符串,使用split(',')函数将以逗号分离的每一票转换成一个列表。
2.因为用split()函数得到的是一个包含字符串的列表,想要的到二队中没有票的队员,必须将投的每一票与二队序号对比,或者说将二队中每个队员序号在所得到的所有票中进行查找,如果没有找到则把这位队员序号放进一个字符串里,以此内推,把所有没有得到票得二队队员序号放进同一个字符串中然后输出就可以了。所以说第二步,应该把得到的列表中的字符转换成数字(整数)。
3.为了提高查找效率,我们可以把所得的列表转成集合,把重复的项合成一项(因为我们只要判断二队队员序号是否能在所投票中找到,并不需要统计队员的所得票数)。
4.再然后,那就是将所有的二队队员序号在有投票结果的集合里进行查找,将没有获得票的二队队员按题目格式都放进一个字符串中,最后输出结果即可。
str1=input()
ls1=str1.split(',') #将输入的字符串转换成列表
ls2=[]
d={6,7,8,9,10}
for i in ls1:
ls2.append(eval(i)) #将字符串中的字符转换成数字
ls3=set(ls2) #将此列表转换为集合,使各个元素不重复
str2=''
for e in d: #遍历d
if e not in ls3:
str2+=str(e) #获取第二小队未得票的队员
str2+=' '
print(str2[:-1]) #去掉最后的一个空格
版权归原作者 未见花闻 所有, 如有侵权,请联系我们删除。