samisoso
samisoso

Reputation:

Python code for finding number of vowels in the parameter

I am a python newbie, and am struggling for what I thought was a simple code. My instructions are, Write a function that takes one string parameter word and will return the number of vowels in the string.

Also, just for clarification, supercat is my one string parameter word.

I've been working on this code for some time, and it's gotten a little jumbled. This is what I have so far.

vowelletters = ["A","E","I","O","U","a","e","i","o","u"]

def isVowel(supercat):
        if supercat in vowel:
            return True
        else: 
            return False
    print isVowel(supercat)

    def countvowel(supercat):
        count = 0
        for index in super cat:
            if isVowel(vowelletters): count += 1
        return count

    y = countvowel(super cat)
    print(y)

Upvotes: 0

Views: 1386

Answers (6)

You can use sum() and a generator. 

def countVowels(word):
    return sum(1 for c in word if c in "AEIOUaeiou")

print(countVowels('supercat'))

Upvotes: 0

freddiev4
freddiev4

Reputation: 2621

You can simplify this function that you're writing

def countvowel(supercat):

    count = 0
    for i in range(len(supercat)-1):
        if supercat[i] in "AEIOUaeiou":
            count += 1

    print(count)

Upvotes: 0

kasper Taeymans
kasper Taeymans

Reputation: 7026

you can first make the string to test lowercase() so that you don't have to check for capital vowels (this make it more efficient). Next you can count() how many times each vowel is in the teststring and make a final sum() to get a total.

vowelletters = ["a","e","i","o","u"]

teststring= "hellO world foo bAr"

count = sum(teststring.lower().count(v) for v in vowelletters)

print count #6

You can place everything in a function to easily reuse the code.

def countVowels(mystring):
    vowelletters = ["a","e","i","o","u"]
    return sum(mystring.lower().count(v) for v in vowelletters)

Upvotes: 1

Dušan Maďar
Dušan Maďar

Reputation: 9909

how about this:

vowelletters = ("a","e","i","o","u")

def countvowel(word):
    word = word.lower()

    count = 0
    for char in word:
        if char in vowelletters:
            count += 1

    return count

print countvowel('super cat')  # prints 3

or using the list comprehension:

vowelletters = ("a","e","i","o","u")


def countvowel(word):
    word = word.lower()

    vowels = [char for char in word if char in vowelletters]
    return len(vowels)

Upvotes: 0

user4673965
user4673965

Reputation:

It looks to me as if your indentation has problems and you left an extra space in there. (super cat instead of supercat)

You also used vowelletters instead of index in countvowel() and forgot to use the global statement in isVowel().

vowelletters = ["A","E","I","O","U","a","e","i","o","u"]

def isVowel(supercat):
    global vowelletters
    if supercat in vowelletters:
        return True
    else: 
        return False
    print isVowel(supercat) # This isn't executed
            # because it is after a return statement.

def countvowel(supercat):
    count = 0
    for index in supercat:
        if isVowel(index): count += 1
    return count

y = countvowel("supercat")
print(y)

Upvotes: 0

emvee
emvee

Reputation: 4449

Spaces in variable names not allowed, I would say:

for index in super cat:

and

y = countvowel(super cat)

Upvotes: 0

Related Questions