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__)


-- 
If you're posting through Google read <http://cfaj.freeshell.org/google>
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to