[Baypiggies] return value from a recursive function is None while it should not be ...

Jason Lai jason.lai at gmail.com
Wed Sep 3 21:18:12 CEST 2008


You need to put "return" in front of "find_recurring_part(result[0], True)"

Hope that helps,

 - Jason

On Wed, Sep 3, 2008 at 11:57 AM, Benjamin Sergeant <bsergean at gmail.com>wrote:

> == The background ==
>
> I'm trying to solve problem 26 from project euler:
> http://projecteuler.net/index.php?section=problems&id=26
> The goal is to find digits recurring cycle in rational number fractional
> parts.
> 1 / 3 = 0.3333333 -> 3 is a recuring integer
> 1 / 7 = 0.142857
>
> == The python problem ==
>
> I have the following piece of code that try to solve that, probably
> not elegant but it kind of work. You can copy paste it and you should
> have the same output as I have, an assertion error: assert (
> recurring_cycle(3) == '3'). find_recurring_part() returns a, that is
> printed and equals 3, but when recurring_cycle get it, it has become
> None !!
>
> Does anyone know what's going on ?
>
> Thanks !
> - Benjamin.
>
> $ cat level26_strangeness.py
> #!/usr/bin/env python
>
> from decimal import Decimal, getcontext
> from re import findall
>
> def find_recurring_part(a, found):
>    '''
>    >>> re.findall(r'(\d+)\1', '32323232')
>    ['3232']
>    '''
>    result = findall(r'(\d+)\1', a)
>    print a, result, found
>    if len(result) == 0:
>        return a if found else None # doing an old school if else does not
> help
>    else:
>        find_recurring_part(result[0], True)
>
> def recurring_cycle(i):
>    q = Decimal(1) / Decimal(i)
>    q = str(q)[2:]
>    return find_recurring_part(q, False)
>
> getcontext().prec = 10 # increase for bigger numbers
> assert ( recurring_cycle(2) == None)
> assert ( recurring_cycle(3) == '3')
>
> $ ./level26_strangeness.py
> 5 [] False
> 3333333333 ['33333'] False
> 33333 ['33'] True
> 33 ['3'] True
> 3 [] True
> Traceback (most recent call last):
>  File "./level26_strangeness.py", line 25, in <module>
>    assert ( recurring_cycle(3) == '3')
> AssertionError
> _______________________________________________
> Baypiggies mailing list
> Baypiggies at python.org
> To change your subscription options or unsubscribe:
> http://mail.python.org/mailman/listinfo/baypiggies
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/baypiggies/attachments/20080903/23efce22/attachment-0001.htm>


More information about the Baypiggies mailing list