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