【例1】某次选举,要从五个候选人(编号分别为1、2、 3、4、5)中选一名厂长。请编程完成统计选票的工作。 算法设计: 1)虽然选票发放的数量一般是已知的,但收回的数量通常是 无法预知的,所以算
时间: 2024-09-11 17:05:29 浏览: 69
【例1】这是一个简单的投票计数问题,在不知道选票回收总数的情况下,我们可以设计一个动态维护选票信息的算法。以下是基本步骤:
1. 创建一个名为`Candidate`的类,用于存储候选人的信息和他们获得的选票数。每个候选人有一个唯一的ID和初始的零选票数。
```python
class Candidate:
def __init__(self, id):
self.id = id
self.votes = 0
# 初始化候选人列表
candidates = [Candidate(i + 1) for i in range(5)]
```
2. 设定一个函数`vote(candidate_id)`,当收到一张支持特定候选人的选票时,增加该候选人的选票数。
```python
def vote(candidate_id):
if candidate_id >= 1 and candidate_id <= len(candidates):
candidates[candidate_id - 1].votes += 1
else:
print("无效的候选人ID")
```
3. 使用循环模拟投票过程,每次调用`vote()`函数处理一张选票,并更新候选人数据。
4. 最终,你可以通过遍历候选人列表来找出得票最多的获胜者。
```python
def count_votes():
total_voted = 0 # 假设实际选票数量
while True:
new_vote = int(input("请输入选票支持的候选人编号 (1-5),输入0结束投票:"))
if new_vote == 0:
break
vote(new_vote)
total_voted += 1
return candidates, max(candidates, key=lambda c: c.votes)
# 获取结果并打印
winning_candidate, winning_count = count_votes()
print(f"获胜者 {winning_candidate.id} 获得了 {winning_count.votes} 票。")
阅读全文