Greetings Justin,
> score = sum_of_votes/num_of_votes
>votes = [(72, 4), (96, 3), (48, 2), (53, 1), (26, 4), (31, 3), (68, 2), (91,
>1)]
>Specifically, I'm wondering if this is a good algorithm for
>weighted voting. Essentially a vote is weighted by the number of
>votes it counts as. I realize that this is an extremely simple
>algorithm, but I was wondering if anyone had suggestions on how to
>improve it.
I snipped most of your code. I don't see anything wrong with your
overall approach. I will make one suggestion: watch out for
DivisionByZero.
try:
score = sum_of_votes / num_of_votes
except ZeroDivisionError:
score = float('nan')
In your example data, all of the weights were integers, which means
that a simple mean function would work, as well, if you expanded the
votes to an alternate representation:
votes = [72, 72, 72, 72, 96, 96, 96, 48, 48, 53, 26, 26, 26, 26,
31, 31, 31, 68, 68, 91]
But, don't bother!
Your function can handle votes that have a float weight:
>>> weight([(4, 1.3), (1, 1),])
2.695652173913044
Have fun!
-Martin
--
Martin A. Brown
http://linux-ip.net/
--
https://mail.python.org/mailman/listinfo/python-list