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!
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
Nikhil Alexander1,444 Points
im not sure sure how to remove the letters from a string they've given.. please help me out
i understand i may not recall all of the attributes of str .... but im not able to proceed... can u correct my error??
def disemvowel(word): vowel.lower() = ("a", "e", "i", "o", "u") if vowel in word: return word
Jeff MudayTreehouse Moderator 28,344 Points
There are countless ways to do this challenge, but I see where you were going with this--
You're on the right track-- we can loop through the vowels, and then exploit the replace function to replace each vowel it finds with the empty character.
Nothing that is valuable is easy-- keep plugging away at Python and your persistence will pay off.
def disemvowel(word): vowels = ("a", "e", "i", "o", "u") # step through the vowels for letter in vowels: word = word.replace(letter,'') # replace any lower-case vowel with empty char word = word.replace(letter.upper(),'') # replace any upper-case vowel with empty char return word
Alex KoumparosPython Development Techdegree Student 36,886 Points
You've got the right general idea but you have a few implementation errors. Let's step through your code:
vowel.lower() = ("a", "e", "i", "o", "u")
Here you've created an iterable with the vowels in it that you can check against. And you've attempted to assign it to a variable. However, the
.lower() is giving you a syntax error (you can't treat the result of a function call as a variable name).
So let's just get rid of the
.lower() for now (you're on the right track that we do want to make sure all the characters are lowercase, but we'll handle that elsewhere):
vowel = ("a", "e", "i", "o", "u")
Now you have a variable against which you can test for membership. So let's move on to the conditional checking. You have
if vowel in word: return word
Here you're just running your conditional once and then returning if you find the thing you're checking in word. But we know we're going to need to modify word, because the challenge says to return something without the vowels.
There's a bunch of ways we can do this, but probably the easiest is to use a for a loop to iterate through word, checking each character against your vowels list. If we are going to do it this way, then we're going to want to have a new string that we are building up with the characters we determined were not vowels. You can do this by just assigning an empty string to a variable.
Next you create the for loop. You're going to iterate through all the elements in
word. On each iteration you can test if the lowercase version (where your
.lower() comes in) of that element is in your vowels tuple. If it is not, then you can concatenate that element to your variable that's holding the string we're building.
Finally, once you've finished iterating through the characters in word, your variable with the temporary string will have all the characters that weren't vowels. You can then return that variable.
Hope that clears everything up.