只包含5个元音中的一个的函数

2024-10-02 02:39:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个函数来计算是否包含5个元音中的一个。你知道吗

到目前为止,我已经试过了:(我不知道现在如何限制每个元音只有1个)

def isVowel(char): #=> Helper function
    return len(char) == 1 and char.lower() in 'aeiou'

def fiveVowelsOneOfEach(word):
    oneVowelOfEachCounter = 0
    for char in word:
        if isVowel(char):
            if char == 'a':
                oneVowelOfEachCounter += 1
            if char == 'e':
                oneVowelOfEachCounter += 1
            if char == 'i':
                oneVowelOfEachCounter += 1
            if char == 'o':
                oneVowelOfEachCounter += 1
            if char == 'u':
                oneVowelOfEachCounter += 1
            if oneVowelOfEachCounter == 5: 
                return True

Tags: and函数inhelperlenreturnifdef
3条回答

更简单的方法

goodstr = 'aeiou'
badstr = 'aaeiou'
vowels = ['a','e','i','o','u'] # or a string "aeiou"

def fiveVowelsIsOneOfEach(word):
    for vowel in vowels:
        if word.count(vowel) != 1:
            return False
    return True


print(fiveVowelsIsOneOfEach(goodstr))   # returns True
print(fiveVowelsIsOneOfEach(badstr))    # returns False
def fiveVowelsOneOfEach(word):
    oneVowelOfEachCounter = 0
    vowels = list('aeiou')
    dummy_vowels = list(chars)
    for char in word:
        if char in vowels:
            vowels.remove(char)
            continue
        elif char in dummy_vowels:
            return False
    if len(vowels) == 0:
        return True
    return False

这应该管用。诀窍是使用一个列表和一个虚拟列表来确保每个元音只计算一次。你知道吗

只要做:

s = 'aeiou'
s2 = 'aaeiou'
def checker(s):
    return all(s.lower().count(i)==1 for i in 'aeiou')
print(checker(s))
print(checker(s2))

输出:

True
False

这是所有需要的,检查每个元音的计数是否是一

相关问题 更多 >

    热门问题