Re: [Tutor] self keyword in recursive function

2014-05-31 Thread Ritwik Raghav
That's all the code I'm writing. As for the reference to line 182, I have
no idea since my code doesn't have line 182.

Also, as Peter wrote:
"The "topcoder" site is probably infested with the world view of Java where
every function is a method inside a class."


Topcoder seems too much in love with Java style of coding and Python seems
much better. I'm switching to some other platform.

Thank You all for the quick response.


On Sat, May 31, 2014 at 11:53 AM, Marc Tompkins 
wrote:

> On Fri, May 30, 2014 at 11:06 PM, Ritwik Raghav 
> wrote:
>
>> That's all the code I'm writing.
>>
>
> That can't be true - the 11 lines of code you posted doesn't include
> anything that would give you "Correct Return Value: No", let alone any
> reference to PersistentNumber.  From the error message, it would appear
> that you've written (at least) 182 lines, and that the problem is on line
> 182 - but that's not what you're showing us.
>
>
>
>> The complete problem statement is:
>> http://pastebin.com/E970qYXk
>>
>
> Yes, but that's not _your_ code, so it tells us nothing about your error.
>
>
>


-- 
Ritwik Raghav
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] self keyword in recursive function

2014-05-30 Thread Ritwik Raghav
That's all the code I'm writing. The complete problem statement is:
http://pastebin.com/E970qYXk


On Sat, May 31, 2014 at 11:25 AM, Marc Tompkins 
wrote:

> On Fri, May 30, 2014 at 10:16 PM, Ritwik Raghav 
> wrote:
>
>
>> It has again given some error I do not understand. This time my code is:
>>
>> count = 0
>> def getPersistence(self,n):
>>
>> product = 1
>> if len(str(n)) == 1:
>> return self.count
>> else:
>> a = str(n)
>> for i in a:
>> product *= int(i)
>> self.count += 1
>> return self.getPersistence(product)
>>
>> and the error is:
>>
>> Correct Return Value: No
>>
>> Answer check result:
>> Result must be not null.
>>
>> Execution Time: 0.017s
>>
>> Peak memory used: 24.551MB
>>
>> abnormal termination (exit 1)
>>
>> Standard Output:
>>
>>
>> Standard Error:
>> Traceback (most recent call last):
>>   File "Wrapper.py", line 182, in 
>> AttributeError: 'module' object has no attribute 'PersistentNumber'
>>
>>
>>  I do not understand what it is trying to tell me? I tried to test it for
>> 99.
>>
>>
> The error is in some part of your code that you _haven't_ posted here -
> please post your entire script (as an attachment, if that's more
> convenient) and we'll be better able to help.
>



-- 
Ritwik Raghav
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] self keyword in recursive function

2014-05-30 Thread Ritwik Raghav
Peter Otten wrote:

>Ritwik Raghav wrote:
>
>> I joined the topcoder community tomorrow and tried solving the
>> PersistentNumber problem:
>> "Given a number x, we can define p(x) as the product of the digits of x.
>> We can then form a sequence x, p(x), p(p(x))... The persistence of x is
>> then defined as the index (0-based) of the first single digit number in
>> the sequence. For example, using 99, we get the sequence 99, 9*9 = 81,
8*1
>> = 8. Thus, the persistence of 99 is 2. You will be given n, and you must
>> return its persistence."
>>
>> It asks to define a function def getPersistence(self, n). I solved the
>> problem in IDLE. My code is:
>>
>> def getPersistence(n,count = 0):
>> product = 1
>> if len(str(n)) == 1:
>> return count
>> else:
>> a = str(n)
>> for i in range(len(a)):
>> product *= int(a[i])
>> count += 1
>> return getPersistence(product,count)
>>
>> Now plz help me to convert the above code in specified format. Or help me
>> understand how to recreate the function as specified.
>
>The "topcoder" site is probably infested with the world view of Java where
>every function is a method inside a class. You may have to wrap your code
>into something like
>
>class PersistentNumber:
>def getPersistence(self, n, count=0):
>... # your code with a minor change (*)
>
>
>(*) Inside the method the recursive call becomes
>
>self.getPersistence(product, count)
>
>instead of just
>
>getPersistence(product, count)

It has again given some error I do not understand. This time my code is:

count = 0
def getPersistence(self,n):
product = 1
if len(str(n)) == 1:
return self.count
else:
a = str(n)
for i in a:
product *= int(i)
self.count += 1
return self.getPersistence(product)

and the error is:

Correct Return Value: No

Answer check result:
Result must be not null.

Execution Time: 0.017s

Peak memory used: 24.551MB

abnormal termination (exit 1)

Standard Output:


Standard Error:
Traceback (most recent call last):
  File "Wrapper.py", line 182, in 
AttributeError: 'module' object has no attribute 'PersistentNumber'


I do not understand what it is trying to tell me? I tried to test it for 99.

-- 
Ritwik Raghav
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] self keyword in recursive function

2014-05-30 Thread Ritwik Raghav
Alan Gauld wrote:

>On 30/05/14 14:14, Ritwik Raghav wrote:
>> I joined the topcoder community tomorrow and tried solving the
>> PersistentNumber problem:
>
>Time travel! I love it already... :-)
>
>> 8*1 = 8. Thus, the persistence of 99 is 2. You will be given n, and you
> >must return its persistence."
>>
>> It asks to define a function def getPersistence(self, n). I solved the
>> problem in IDLE. My code is:
>
>You seem to have solved the problem.
>Your code could be cleaned up a little but it seems
>to work. The fact that the exercise asks for a self
>argument suggests that it is supposed to be part of
>a class definition.

That much I figured out. But I have never worked with classes in Python.
Neither have I read about them. Please suggest one book I should read to
understand class and objects in Python.

>
>Is there a class definition anywhere that you are
>supposed to extend?
>

I have read that Topcoder implements the code inside a class. So, yes this
code is supposed to be the part of that class and public.

>|Some comments on the code below:
>
>> def getPersistence(n,count = 0)
>
>Since you never get passed count as an argument you
>could just make it a variable. You only need it as
>an argument if you use recursion but the problem
>didn't ask for that...
>
>>  product = 1
>>  if len(str(n)) == 1:
>>  return count
>>  else:
>>  a = str(n)
>>  for i in range(len(a)):
>>  product *= int(a[i])
>
>This is not good Python style.
>Its better to use
>
>for c in a:
>product += int(c)
>

Thanks, I will implement so.

>>  count += 1
>>  return getPersistence(product,count)
>
>Rather than using recursion you could have used
>a while loop (untested code!):
>
>if n < 10:
>return 0
>product = 1
>while True:
>count += 1
>a = str(n)
>for c in a:
>   product *= int(c)
>if product < 10:
>   break
>return count
>

I thought recursion would be better.

>> Now plz help me to convert the above code in specified format. Or help
>> me understand how to recreate the function as specified.
>
>You have created a function that does what is needed, it just doesn't
>have a self parameter. self is only used when the function is part of a
>class definition.
>
>Without sight of the class that it should be part of we can't offer much
>more help.

Thanks for your help Alan.

-- 
Ritwik Raghav
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


[Tutor] self keyword in recursive function

2014-05-30 Thread Ritwik Raghav
I joined the topcoder community tomorrow and tried solving the
PersistentNumber problem:
"Given a number x, we can define p(x) as the product of the digits of x. We
can then form a sequence x, p(x), p(p(x))... The persistence of x is then
defined as the index (0-based) of the first single digit number in the
sequence. For example, using 99, we get the sequence 99, 9*9 = 81, 8*1 = 8.
Thus, the persistence of 99 is 2. You will be given n, and you must return
its persistence."

It asks to define a function def getPersistence(self, n). I solved the
problem in IDLE. My code is:

def getPersistence(n,count = 0):
product = 1
if len(str(n)) == 1:
return count
else:
a = str(n)
for i in range(len(a)):
product *= int(a[i])
count += 1
return getPersistence(product,count)

Now plz help me to convert the above code in specified format. Or help me
understand how to recreate the function as specified.
-- 
Ritwik Raghav
___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor