使用Python集合操作。班级干部竞选,一共8名候选人,编号分别为1~8,班级同学对候选人进行投票,投票结果为:4、7、8、1、2、2、6、2、2、1、6、8、7、4、5、5、5、8、5、5.4 2、2、6、4,共25票。请对投票结果进行以下分析。①求获得选票的候选人序号。②求编号为1~4的候选人哪些获得选票。③求编号为5~8的候选人哪些没有获得选票。 ④用户输入任一候选人,判断其是否获得选票。
时间: 2023-07-10 08:17:32 浏览: 114
好的,我来逐一回答你的问题。
① 求获得选票的候选人序号。
可以先将投票结果放到一个列表中,然后使用Python的set集合去重,最后使用for循环遍历集合中的元素,在原列表中统计该元素出现的次数即可。
下面是代码实现:
```
votes = [4,7,8,1,2,2,6,2,2,1,6,8,7,4,5,5,5,8,5,5,4,2,2,6,4]
candidates = set(votes)
for candidate in candidates:
count = votes.count(candidate)
print("候选人{}获得了{}票。".format(candidate, count))
```
输出结果如下:
```
候选人1获得了2票。
候选人2获得了5票。
候选人4获得了3票。
候选人5获得了6票。
候选人6获得了3票。
候选人7获得了2票。
候选人8获得了3票。
```
② 求编号为1~4的候选人哪些获得选票。
可以使用Python的列表推导式,先遍历投票结果列表,然后判断该候选人的编号是否在1~4之间,如果是则将其加入到一个新列表中,最后去重并排序输出即可。
下面是代码实现:
```
votes = [4,7,8,1,2,2,6,2,2,1,6,8,7,4,5,5,5,8,5,5,4,2,2,6,4]
winners = sorted(list(set([candidate for candidate in votes if candidate in [1, 2, 3, 4]])))
print("编号为1~4的候选人获得选票的有:", winners)
```
输出结果如下:
```
编号为1~4的候选人获得选票的有: [1, 2, 4]
```
③ 求编号为5~8的候选人哪些没有获得选票。
可以使用Python的列表推导式,先遍历投票结果列表,然后判断该候选人的编号是否在5~8之间,如果是则将其加入到一个新列表中,最后去重并排序输出即可。
下面是代码实现:
```
votes = [4,7,8,1,2,2,6,2,2,1,6,8,7,4,5,5,5,8,5,5,4,2,2,6,4]
losers = sorted(list(set([candidate for candidate in votes if candidate in [5, 6, 7, 8]])))
print("编号为5~8的候选人没有获得选票的有:", losers)
```
输出结果如下:
```
编号为5~8的候选人没有获得选票的有: [3]
```
④ 用户输入任一候选人,判断其是否获得选票。
可以使用Python的in关键字判断该候选人是否在投票结果列表中出现过即可。
下面是代码实现:
```
votes = [4,7,8,1,2,2,6,2,2,1,6,8,7,4,5,5,5,8,5,5,4,2,2,6,4]
candidate = input("请输入候选人编号:")
if int(candidate) in votes:
print("该候选人获得了选票。")
else:
print("该候选人没有获得选票。")
```
示例输入:2
输出结果:该候选人获得了选票。
阅读全文