+ 1
Please, explain how x is a local variable and where my defined function is wrong??
def anti_vowel(text): textnew=list(text) for x in textnew and x in ["a","e","i","o","u","A","E","I","O","U"]: textnew.remove(x) return("".join(text)) what is wrong in my above python code to define a function with its vowels removed please explain??
4 Réponses
+ 14
Here's something I tried. I used a while to remove every instance of every vowel from textnew. What happens with your code is that .remove() only removes the first instance of an item, and one of the many o's doesn't get removed.
def anti_vowel(text):
textnew=list(text)
vowels = ["a","e","i","o","u","A","E","I","O","U"]
for x in vowels:
while (x in textnew):
textnew.remove(x)
return("".join(textnew))
print(anti_vowel("Hey You!"))
+ 9
x is a local variable that only lasts within the for. You're defining x twice, once to count for textnew, and once to count the vowel list. You can only define a variable once.
Because of how you're using the for (there's nothing in textnew you're counting), all you need is:
for x in ["a", "e", ..., "U"]
in order to remove the vowels from the textnew list. Also, you should be returning textnew, not the original text.
0
thanks,
can you tell me what's wrong with my code now
def anti_vowel(text):
textnew=list(text)
for x in textnew:
if(x in ["a","e","i","o","u","A","E","I","O","U"]):
textnew.remove(x)
return("".join(textnew))
print(anti_vowel("Hey You!"))
0
it returns by 1k words! when it should had returned by 1k wrds! for input hey look words!