Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

Python Technical Interview Prep: Python Basics Basic Python Let's Get Together

Noor Hafiza Binti Ibrahim
Noor Hafiza Binti Ibrahim
11,616 Points

Use the function called morse_code. It will take 1 parameter, a word. For example: 'apple'. Using the given morse code

Bummer: Uh oh, I didn't get the correct value returned. It should have been dash-dot-dash-dot-dot-dot for the word 'tree

join.py
def morse_code(word):
    morse_dict = {
        'a': 'dot-dash',
        'b': 'dash-dot-dot-dot',
        'c': 'dash-dot-dash-dot',
        'd': 'dash-dot-dot',
        'e': 'dot',
        'f': 'dot-dot-dash-dot',
        'g': 'dash-dash-dot',
        'h': 'dot-dot-dot-dot',
        'i': 'dot-dot',
        'j': 'dot-dash-dash-dash',
        'k': 'dash-dot-dash',
        'l': 'dot-dash-dot-dot',
        'm': 'dash-dash',
        'n': 'dash-dot',
        'o': 'dash-dash-dash',
        'p': 'dot-dash-dash-dot',
        'q': 'dash-dash-dot-dash',
        'r': 'dot-dash-dot',
        's': 'dot-dot-dot',
        't': 'dash',
        'u': 'dot-dot-dash',
        'v': 'dot-dot-dot-dash', 
        'w': 'dot-dash-dash',
        'y': 'dash-dot-dash-dash',
        'z': 'dash-dash-dot-dot'
    }
    # enter your code below
def convert_to_morse(word):
    word = word.lower()
    encoded_word = ""
    for character in word:
        encoded_word += morse_dict[character] + " "
    return encoded_word

1 Answer

Chris Freeman
MOD
Chris Freeman
Treehouse Moderator 67,514 Points

Hey Noor Hafiza Binti Ibrahim, you are very close!

  • no need to define a new function. Put all of the code within the given morse_code function
  • there is an issue in accumulating the characters. The characters should be joined with a dash (-) instead of a space. Unfortunately, simply changing the assignment to encoded_word to add a trailing dash would leave an extra dash at the end. This could be fixed by returning encoded_word[:-1] to trim the dash but there’s a better way.

Strings are not mutable. Using string += new_bits creates a new string each time.

Use a list to accumulate characters, then use ”-“.join() on the list to get the final string.

Post back if you need more help. Good luck!!!

Noor Hafiza Binti Ibrahim
Noor Hafiza Binti Ibrahim
11,616 Points
    morse_code = ""

    for x in word:
        morse_code += morse_dict[x.lower()]
    return morse_code

#it raised an AssertionError: ‘dashdot-dash-dotdotdot’ != ‘dash-dot-dash-dot-dot-dot’
Noor Hafiza Binti Ibrahim
Noor Hafiza Binti Ibrahim
11,616 Points
#Another variation i tried:

    word = word.lower()
    encodedWord = ""
    for character in word:
        encodedWord += morse_dict[character] + "-"
    return encodedWord

 #still raised an AssertionError: ‘dash-dot-dash-dot-dot-dot-‘ != ‘dash-dot-dash-dot-dot-dot’
Chris Freeman
Chris Freeman
Treehouse Moderator 67,514 Points

Notice the trailing dash in your last attempt, as mentioned in my answer above.

Noor Hafiza Binti Ibrahim
Noor Hafiza Binti Ibrahim
11,616 Points

Got it!😊 it passes after

return encodedWord[:-1]

thanks