Mean, median, and mode
Sean McIlroy
sean_mcilroy at yahoo.com
Mon Dec 6 08:35:55 CET 2004
>>> mean = lambda x: sum(x)/len(x)
>>> median = lambda x: (max(x)-min(x))/2
>>> mode = lambda x: max([(x.count(y),y) for y in x])[1]
"Robert Brewer" <fumanchu at amor.org> wrote in message news:<mailman.7174.1102235108.5135.python-list at python.org>...
> (now that we have a meaningful subject line)
>
> Alfred Canoy wrote:
> > >> I'm just new to programming and would like to ask for help..
> > >>
> > >> Build a module that contains three functions that do the following:
> > >>
> > >> a.. Compute the average of a list of numbers
> > >> b.. Finds the statistical median value of a list of numbers
> > >> c.. Finds the mode of a list of numbers
> > >>
> > >> Can you please give me clue how I should start solving the
> > >> following problem
> > >> below? Here's the source code that I did so far:
> > >>
> > >> # compute the average of a list of numbers:
> > >> # Keeps asking for numbers until 0 is entered
> > >> # Prints the average value
> > >>
> > >> count = 0
> > >> sum = 0
> > >> number = 1
> > >>
> > >> print 'Enter 0 to exit the loop'
> > >> while number != 0:
> > >> number = input ('Enter a number: ')
> > >> count = count + 1
> > >> sum = sum + number
> > >> count = count -1
> > >> print ' The average is:', sum/count
>
> For the mode, you might build a dictionary:
>
> freq = {}
> while number != 0:
> number = input ('Enter a number: ')
> count = count + 1
> sum = sum + number
> try:
> freq[number] += 1
> except KeyError:
> freq[number] = 1
>
> ...then you can check for the largest value in that dictionary:
>
> max = 0
> mode = None
> for k, v in freq.iteritems():
> if v > max:
> max = v
> mode = k
>
> I leave the rest in your capable hands... ;) Including the case where
> two numbers occur in equal frequencies. ;;)
>
>
> Robert Brewer
> MIS
> Amor Ministries
> fumanchu at amor.org
More information about the Python-list
mailing list