lambda with floats

Patrick Maupin pmaupin at gmail.com
Wed Apr 7 06:15:46 CEST 2010


On Apr 6, 11:10 pm, Patrick Maupin <pmau... at gmail.com> wrote:
> On Apr 6, 11:04 pm, Patrick Maupin <pmau... at gmail.com> wrote:
>
>
>
> > On Apr 6, 10:16 pm, monkeys paw <mon... at joemoney.net> wrote:
>
> > > I have the following acre meter which works for integers,
> > > how do i convert this to float? I tried
>
> > > return float ((208.0 * 208.0) * n)
>
> > >  >>> def s(n):
> > > ...     return lambda x: (208 * 208) * n
> > > ...
> > >  >>> f = s(1)
> > >  >>> f(1)
> > > 43264
> > >  >>> 208 * 208
> > > 43264
> > >  >>> f(.25)
> > > 43264
>
> > Not sure why you are returning a lambda (which is just a function that
> > does not have a name) from an outer function.
>
> > A function that does this multiplication would simply be:
>
> > def s(n):
> >     return 208.0 * 208.0 * n
>
> > Regards,
> > Pat
>
> I realized I didn't show the use.  A bit different than what you were
> doing:
>
> >>> def s(n):
>
> ...     return 208.0 * 208.0 * n
> ...>>> s(1)
> 43264.0
> >>> s(0.5)
> 21632.0
> >>> s(3)
>
> 129792.0
>
> I'm not sure exactly what you mean by "acre meter" though; this
> returns the number of square feet in 'n' acres.
>
> Regards,
> Pat

I should stop making a habit of responding to myself, BUT.  This isn't
quite an acre in square feet.  I just saw the 43xxx and assumed it
was, and then realized it couldn't be, because it wasn't divisible by
10.  (I used to measure land with my grandfather with a 66 foot long
chain, and learned at an early age that an acre was 1 chain by 10
chains, or 66 * 66 * 10 = 43560 sqft.)
That's an exact number, and 208 is a poor approximation of its square
root.

Regards,
Pat



More information about the Python-list mailing list