In article <[EMAIL PROTECTED]>, Pedro Graca <[EMAIL PROTECTED]> wrote:
> I'm sure this isn't very pythonic; comments and advice appreciated > > > def curious(text): > """ Return the words in input text scrambled except for the first and > last letter. """ > new_text = "" > word = "" > for ch in text: > if ch in "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ": > word = word + ch > else: > new_text = new_text + scramble(word) > word = "" > new_text = new_text + ch > return new_text > > def scramble(word): > """ scramble word """ > from random import randint > > if len(word) < 4: > return word > new_word = word[0] > > ### transform "curious" into ['u', 'r', 'i', 'o', 'u'] > letters = [] > for ch in word: > letters.append(ch) > del letters[0:1] > del letters[-1] > > ### why doesn't range(len(letters) - 1, 0, -1) work? > for i in range(len(letters) - 1, -1, -1): > j = randint(0, i) > new_word = new_word + letters[j] > del letters[j] > return new_word + word[-1] > > print curious(curious.__doc__) def curious(text): """ Return the words in input text scrambled except for the first and last letter. """ new_text = "" word = "" for ch in text: if ch.isalpha(): word += ch else: new_text += scramble(word) word = "" new_text += ch new_text += scramble(word) return new_text def scramble(word): """ scramble word """ from random import shuffle if len(word) < 4: return word letters = list(word[1:-1]) shuffle(letters) return word[0] + "".join(letters) + word[-1] Just -- http://mail.python.org/mailman/listinfo/python-list