Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Python Python Collections (2016, retired 2019) Lists Disemvowel

Why is my disemvowel not working?

I'm trying a very simple approach. I wonder why this won't work as planned..

Chris Freeman

disemvowel.py
vowels = ["a","e", "i", "o", "u", "A", "E", "I", "O", "U"]
def disemvowel(word):
    list(word)
    if vowels in word:
        word.remove(vowels)
    else:
        pass
    return word

3 Answers

Mark Rinkel
Mark Rinkel
13,501 Points

This line

if vowels in word:

is actually asking this:

if ["a","e", "i", "o", "u", "A", "E", "I", "O", "U"] in word:

You instead want to check each letter to see if it's in the word.

Ari Misha
Ari Misha
19,323 Points

Hiya Marie! You need to think it logically, so yeah try it this way:

  "for every word in words,"
     "if not word exists in vowels"
         "append word to an empty list"
  "and finally return the list"

I couldnt have come up with a better hint so yeah try it this way. (:

Chris Freeman
MOD
Chris Freeman
Treehouse Moderator 68,441 Points

I've marked up your code with the errors

vowels = ["a","e", "i", "o", "u", "A", "E", "I", "O", "U"]
def disemvowel(word):
    word = list(word)  # list result needs to be assigned 
    # need loop to iterate over a *copy* of word
    for letter in word.copy():
        if letter in vowels: # reverse comparison 
            word.remove(letter)
        #else:  # empty else can be omitted 
         #   pass
    # need to join list back to string 
    word = "".join(word)
    return word