首先,我有一个文本文件,显示了5名候选人在以下4次投票中的投票分数:
1,2,3,0,0
2,3,1,0,0
3,1,0,0,2
0,2,0,3,1
投票者把他们的前三个偏好和剩下的两个候选人得到零。在
使用下面的程序,每个候选人的每个分数被放入一个二维数组中,并计算配额。在with open("textdata.txt","r") as f:
ReadTextFile = f.read()
RawVotesArray = ReadTextFile.split("\n")
TwoDArrayRows = [item for item in RawVotesArray if item != ""]
TwoDArrayRows = [item.split(",") for item in TwoDArrayRows]
print(TwoDArrayRows)
CandidateA = [row[0] for row in TwoDArrayRows]
Preference1CA = CandidateA.count("1")
CandidateB = [row[1] for row in TwoDArrayRows]
Preference1CB = CandidateB.count("1")
CandidateC = [row[2] for row in TwoDArrayRows]
Preference1CC = CandidateC.count("1")
CandidateD = [row[3] for row in TwoDArrayRows]
Preference1CD = CandidateD.count("1")
CandidateE = [row[4] for row in TwoDArrayRows]
Preference1CE = CandidateE.count("1")
ValidVotes = 4
NumberOfSeats = 2
quota = int((ValidVotes/(NumberOfSeats + 1))+1)
print(quota)
其输出为:
[['1','2','3','0','0',['2','3','1','0','0',['3','1','0','2',['0','2','0','3','1']]
二
最后的2是配额。候选人要想获胜,他们的第一优先票(1票)必须达到或超过2票的配额。我不知道如何编写一个函数,以便将每个候选人的第一优先票相加。在