Alex Martelli wrote: > Steven Bethard <[EMAIL PROTECTED]> wrote: > ... >>>>>>> import sys >>>>>>> def ch4(item, n=0): >>>>>>> if n < len(item): >>>>>>> if item[n] == '0': >>>>>>> item[n] = '1' >>>>>>> print ''.join(item) >>>>>>> ch4(item) >>>>>>> elif item[n] == '1': >>>>>>> item[n] = '0' >>>>>>> ch4(item, n+1) >>>>>>> ch4(list(sys.argv[1])) > ... >>> for interest sake: is my method unredeemable? >> Let's just say that I don't currently see an obvious way of redeeming >> it. ;-) > > Change the outer if into a while, and the recursive calls into proper > assignments to n. They're both tail-recursive calls, so this won't > change the semantics, as it happens.
Thanks! >>> def f(chars): ... n = 0 ... while n < len(chars): ... if chars[n] == '0': ... chars[n] = '1' ... n = 0 ... print ''.join(chars) ... elif chars[n] == '1': ... chars[n] = '0' ... n += 1 ... >>> f(list('00000000')) 10000000 01000000 11000000 ... 10111111 01111111 11111111 Looks good. STeVe -- http://mail.python.org/mailman/listinfo/python-list