-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)

关于如何实际计算正确数量的元音的任何想法?

4

3 回答 3

1

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

如果你有

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

我希望这能解决问题。

于 2013-08-06T18:57:03.867 回答
1

你的countvowel功能很混乱。count 0不是有效的语法,并且您的缩进是错误的。我认为您的主要问题是您的return语句在循环内。当 Python 执行 areturn时,函数会停在那里并返回值。它不会继续执行该功能。如果它在里面,就把return它移出循环。

于 2013-08-06T18:57:13.810 回答
1

您的问题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)
于 2013-08-06T18:57:45.227 回答