FAQ: Code Challenge: String Methods - Make Spoonerism

This community-built FAQ covers the “Make Spoonerism” exercise from the lesson “Code Challenge: String Methods”.

Paths and Courses
This exercise can be found in the following Codecademy content:

FAQs on the exercise Make Spoonerism

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

def make_spoonerism(word1, word2):
  swap_first_letters = (word2[0] + word1[1:], word1[0] + word2[1:])
  single_string_swapped = ' '.join(swap_first_letters)
  return single_string_swapped

Well it isn’t pretty but it did the job. After viewing the solution it makes me laugh how simplified it could have been. I basically had it in line 2. I need to keep practising to find an easier way to solve issues.

My way of doing this, not as simple as a solution but it works.

Here’s my attempt. Works and based on how well I don’t do on these exercises, I’m happy enough with this.

def make_spoonerism(word1, word2):
return word2[0] + word1[1:] + " " + word1[0] + word2[1:]


This is the same solution I came up with.

here’s mine solution:

def make_spoonerism(word1, word2):
a = word2[0] + word1[1:]
b = word1[0] + word2[1:]
return(a+" "+b)

At first I went the longest possible way about this, realised there must be an easier way and felt stupid:

def make_spoonerism(word1, word2):
  new_word1 = ""
  new_word2 = ""
  word1_list = []
  word2_list = []
  for each in range(len(word1)):
  for each in range(len(word2)):
  word1_0 = word1_list[0]
  word2_0 = word2_list[0]
  word1_list[0] = word2_0
  word2_list[0] = word1_0
  for each in range(len(word1_list)):
    new_word1 = new_word1 + word1_list[each]
  for each in range(len(word2_list)):
    new_word2 = new_word2 + word2_list[each]
  return str(new_word1) + " " + str(new_word2)

then I did this and felt less stupid:

def make_spoonerism(word1, word2):
  swap_first_letters = word2[0] + word1[1:len(word1)] + " " + word1[0] + word2[1:len(word2)]
  return swap_first_letters

Then i realised that word[1:len(word1)]* was unnecessary.

The len(word1) part, anyway.


i used replace is it right to use it ?

def make_spoonerism(word1, word2):
worda=word1.replace(letter1, letter2)
wordb=word2.replace(letter2, letter1)
return worda+" "+wordb

That would depend upon the instructions given. Is this a freeform project or a lesson? Sometimes lesson checkers have expectations as to code patterns and variable names.

It was a code challenge, I didn’t even check the given hint, but followed the instructions to get the final result as it said it got to be

What if the there is more than one letter matching the first letter in the word?

In that case my code won’t work and will have to change it :confused:

1 Like

So there is your answer. Be sure to test your solution against the possibility of duplicate letters in the words.