(这很长,可能会让人困惑)我目前正在做一个小项目,涉及分析选票,并根据选票数量确定获胜候选人。所使用的投票系统非常不寻常。例如,如果有四名候选人,投票结果可能如下:3241(第一名候选人得3分,第二名候选人得2分,以此类推)。为了决定胜利者,我必须把每个候选人的所有选票加起来。例如,如果3张选票为[13423413214],第一位候选人的分数为1+3+3=7(越低越好)。如果每个候选人都有不同的分数,那么宣布获胜者很简单。然而,当比赛打成平局时,我很难宣布胜负。例如,最终得分为[7,7,9,7]。要在平局时宣布胜出,我需要查看投票的优先顺序(基本上检查每个候选人获得了多少1,每个候选人获得了多少2等),并将其存储在如下列表中:
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
完成后,上面示例的列表如下所示:
[[1, 0, 1, 1], [0, 2, 0, 1], [2, 1, 0, 0], [0, 0, 2, 1]]
这意味着候选人4将获胜,因为他们在所有获得第一优先票的人中拥有最多的第二优先票。我目前尝试实现的方法根本不起作用,并且使用了很多if语句:
for i in range(candidateNumberInt*len(voteList)):
vote = voteList[0][i]
if i == 0 and vote == 1:
drawList[0][i] += 1 # This is the list with the zeros
上面的代码片段就是我实现这一点的方式(还有12条if语句)
编辑(感谢响应者):
for votes in voteList:
for i, vote in enumerate(votes):
print(int(vote))
drawList[i][i] += 1
我在上面添加了代码,但它在每个列表中只输出“3”:
[[3, 0, 0, 0], [0, 3, 0, 0], [0, 0, 3, 0], [0, 0, 0, 3]]
我只是想知道是否有一种更简单的方法可以根据投票中的数字来增加这些列表中的元素。 先谢谢你
目前没有回答
相关问题 更多 >
编程相关推荐