Interesting Math Problem

Gary Herron gherron at islandtraining.com
Thu Jun 5 10:57:41 CEST 2008


BEES INC wrote:
> I've been awfully busy programming lately. My Django-based side
> project is coming along well and I hope to have it ready for use in a
> few weeks. Please don't ask more about it, that's really all I can say
> for now. Anyways, I came across an interesting little math problem
> today and was hoping some skilled programmers out there could come up
> with a more elegant solution than mine.
> Problem: Star Ratings
>
> People can rate cheeseburgers on my website with a star rating of 0-5
> stars (whole stars only), 5 being mighty tasty and 0 being disgusting.
> I would like to show the average of everyone's ratings of a particular
> cheeseburger to the nearest half star. I have already calculated the
> average rating as a float (star_sum) and the total number of people
> that rated the particular cheeseburger (num_raters). The result should
> be stored as a float in a variable named "stars."
>   

Much simpler this way.  This produces the number of whole start and the 
number of half stars:

v = ... calculate the average ...
whole = int(v+0.25)
half = int(2*(v+0.25-whole))


Gary Herron



> My Solution (in Python):
>
> # round to one decimal place and
> # separate into whole and fractional parts
> parts = str(round(star_sum/num_raters, 1)).split('.')
> whole = int(parts[0])
> frac = int(parts[1])
> if frac < 3:
> ___frac = 0
> elif frac > 7:
> ___frac = 0
> ___whole += 1
> else:
> ___frac = 5
> # recombine for a star rating rounded to the half
> stars = float(str(whole)+'.'+str(frac))
>
> Mmmm… In-N-Out Burgers… Please reply if you've got a better solution.
> --
> http://mail.python.org/mailman/listinfo/python-list
>   




More information about the Python-list mailing list