使用2个参数的元音计数器



我必须创建两个函数,一个函数要求用户输入一个字符,并通过返回true或false来确定字符是否为元音。

第二种方法是调用第一个函数并要求用户输入一个单词。

这就是我目前所拥有的:

vowel = ["A","E","I","O","U","a","e","i","o","u"]
vowelinpt = input("Please enter a character: ")
def isVowel(x):
    if x in vowel:
        return True
    else: 
        return False
a = isVowel(vowelinpt)
print(a)
def countvowel(b):
    count = 0
    for a in b:
        if isVowel(a) == True
        count +=1
    return count
x = input("Please input a WORD: ")
y = countvowel(x)
print(y)

关于如何让它计算出正确的元音数量,有什么想法吗?

您的代码看起来不错(除了错误的缩进,我认为这是复制粘贴错误)。只是一些小项目。

如果你有

if somethingBoolean: return True
else: return False

你可以简单地写

return somethingBoolean

因此:

def isVowel(x): return x in vowels

现在进行计数时,您只是弄错了缩进:

def countvowel(b):
    count = 0
    for a in b:
        if isVowel(a): count += 1
    return count

我希望这能奏效。

您的countvowel函数非常混乱。count 0不是有效的语法,您的缩进是错误的。我认为您的主要问题是return语句在循环中。当Python执行return时,函数会立即停止并返回值。它不会一直执行函数。如果return在循环中,则将其移出循环。

countvowel的问题是缩进混乱,并且在if语句后面缺少一个":"。这将修复它:

def countvowel(b):
    count = 0
    for a in b:
        if isVowel(a) == True:
            count +=1
    return count

然而,你真的可以这样简化整个事情:

vowels = "aeiou"
vowelinpt = input("Please enter a character: ")
def isVowel(x):
   return x.lower() in vowels
a = isVowel(vowelinpt)
print(a)
def countvowel(b):
    # You can also do "return sum(a in vowels for a in b.lower())"
    return len(list(filter(isVowel, b.lower())))
x = input("Please input a WORD: ")
y = countvowel(x)
print(y)

最新更新