Greetings: First of all, thanks to those who contributed suggestions.
Unfortunately, my description was incomplete. > I am writing a function that accepts a string of decimal digits, > calculates a checksum and returns it as a single character string. > The first step in the calculation is to split the input into two strings: > the even- and odd- numbered digits, respectively. The least significant > digit is defined as odd. I forgot to include two important requirements: 1. the length of the input string is arbitrary, 2. the order of the digits must be maintained. I could not find a way to include these requirements in a single, simple expression. I decided to make an explicit test for string length, which simplified matters. I came up with this: >>>>>>> >>> def odd_even(x): ... if len(x) % 2 == 1: ... return x[::2], x[1::2] ... else: ... return x[1::2], x[::2] >>> odd_even('987654321') ('97531', '8642') >>> odd_even('98765432') ('8642', '9753') >>> >>>>>>> which is an improvement, I think, on my original. > >>>>>>> > >>> s = '987654321' > >>> odd = '' > >>> for c in s[::-2]: > ... odd = c + odd > ... > >>> s = s[:-1] > >>> even = '' > >>> for c in s[::-2]: > ... even = c + even > ... > >>> odd > '97531' > >>> even > '8642' > >>>>>>> Thanks again. This is the most useful list I've ever found. Regards, Barry [EMAIL PROTECTED] 541-302-1107 ________________________ We who cut mere stones must always be envisioning cathedrals. -Quarry worker's creed _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor