Ben Finney wrote:
"W. eWatson" <wolftra...@invalid.com> writes:

"C:\Sandia_Meteors\Sentinel_Development\Development_Sentuser+Utilities\sentuser\sentuser_20090103+hist.py",
line 467, in ShowHistogram
    mean = sum(hist)
TypeError: 'float' object is not callable

It means you're calling an object of type ‘float’. The line where it
occurred shows that you're accessing that object through the name ‘sum’,
which means you've bound the name ‘sum’ to a float object.

for the code:
----------------------
        sum = 0.0

Here you clobber the existing binding of ‘sum’, binding it to the float
value 0.0.

        avg = 0.0
        nplt_bins = 32
        for i in range(len(hist)):
#             msg = "%5d %6d\n" % (i,hist[i])
            msg = "%5d %6d\n" % (i,hist[i])
            sum = sum + hist[i]

Here you keep re-binding the name ‘sum’ to new float objects of
different value.

            text.insert( END, msg )
        for i in range(len(hist)):
            avg = avg + (i*hist[i]/sum)

        mean = sum(hist)   <-------------- faulty line

Here you try to call the object referenced by the name ‘sum’, which is a
float object.

hist is a list of 256 integers. What does float have to do with this?

You explicitly bound the name ‘sum’ to an object of type ‘float’.

Solution: Choose names wisely, and if you want to use a built-in name
like ‘sum’ for its built-in putpose, don't clobber that binding before
using it.

Yikes. Thanks very much. Python seems to act unlike other language in which words like float are reserved. I'll use asum.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to