lambda with floats

monkeys paw monkey at joemoney.net
Thu Apr 8 23:02:40 EDT 2010


On 4/7/2010 12:15 AM, Patrick Maupin wrote:
> 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

You are absolutely right Pat, so here is the correct equate which also 
utilizes my original question of using floats in a lambda, perfectly...

g = lambda x: 208.71 * 208.71 * x
g(1)
43559.864100000006

but truly the easiest to remember is based on your chain:

g = lambda x: 660 * 66 * x
g(1)
43560

Now back to python...



More information about the Python-list mailing list