Search code examples
pythoncpu-wordscramble

Creating a word scrambler but it won't work, need help as a beginner


Beginner python coder here, keep things simple, please.

So, I need this code below to scramble two letters without scrambling the first or last letters. Everything seems to work right up until the scrambler() function.

from random import randint
def wordScramble(string):
    stringArray = string.split()
    for word in stringArray:
        if len(word) >= 4:
            letter = randint(1,len(word)-2)
            point = letter
            while point == letter:
                point = randint(1, len(word)-2)
            word = switcher(word,letter,point)
    ' '.join(stringArray)
    return stringArray
def switcher(word,letter,point):
    word = list(word)
    word[letter],word[point]=word[point],word[letter]
    return word
print(wordScramble("I can't wait to see how this turns itself out"))

The outcome is always:

I can't wait to see how this turns itself out


Solution

  • Since you are a beginner, I tried to change your code as little as possible. Mostly you are expecting changes to word to change the contents or your list stringArray. The comments mark the changes and reasons.

    from random import randint
    
    def wordScramble(myString): # avoid name clashes with python modules
        stringArray = myString.split() 
        for i, word in enumerate(stringArray):   # keep the index so we can update the list
            if len(word) >= 4:
                letter = randint(1,len(word)-2)
                point = letter
                while point == letter:
                    point = randint(1, len(word)-2)
                stringArray[i] = switcher(word,letter,point)  # update the array
        return ' '.join(stringArray)   # return the result of the join
    
    def switcher(word,letter,point):
        word = list(word)
        word[letter],word[point]=word[point],word[letter]
        return ''.join(word)  # return word back as a string
    
    print(wordScramble("I can't wait to see how this turns itself out"))