如何检查完整字符串的辅音元音模式并返回布尔值?

时间:2019-02-03 07:47:50

标签: python string

我有一个项目,要求我检查编码的PIN,该PIN必须具有以下模式:辅音,元音。例如3464140是bomelela。

我以前曾尝试过这种方法:

def checkString(st):
    if st == '':
        return False
    elif st[0] in consonants and st[1] in vowels:
        return True
    else:
        return False

但是字符串长度可能会有所不同,所以我不确定如何检查整个字符串。

此函数应返回布尔值。我想我已经接近了,但是鉴于我的if语句以i + 1结尾,我不确定如何返回true或false。

到目前为止,我有这个:

consonants = "bcdfghjklmnpqrstvwyz"
vowels = "aeiou"

def checkString(st):
  for i in range(len(st)):
    if i % 2 == 0:
      if st[i] in consonants:
         i + 1
    elif i % 2 != 0:
      if st[1] in vowels:
         i + 1

在此先感谢所有格式问题,这是我的第一篇文章。

3 个答案:

答案 0 :(得分:0)

这个简单的更改可以为您解决问题:

consonants = "bcdfghjklmnpqrstvwyz"
vowels = "aeiou"


def checkString(st):
    for i in range(len(st)):
        if i % 2 == 0:
            if st[i] not in consonants:
                return False
        else:
            if st[i] not in vowels:
                return False
    return True

答案 1 :(得分:0)

我们可以在特定位置检查辅音或元音中的特定字符串,并在当前迭代条件为真时继续进行下一次迭代。

如果任何条件在任何迭代中失败,它将返回false。如果条件在所有迭代中都为True,则该函数最终将返回True。

consonants = "bcdfghjklmnpqrstvwyz"
vowels = "aeiou"

def checkString(st):
    for i in range(len(st)):
        if i % 2 == 0 and st[i] in consonants:
            continue
        elif i % 2 != 0 and st[i] in vowels:
            continue
        else: 
            return False 

    return True

答案 2 :(得分:0)

def checkString(teststring):
    '''To check for pattern: Consonant:Vowel and return true if pattern exists'''
    const = "bcdfghjklmnpqrstvwyz"
    vowels = "aeiou"
    t_odd = teststring[::2].lower()
    t_even = teststring[1::2].lower()
    outcome = ["True" if x in const else "False" for x in t_odd ] + ["True" if y in vowels else "False" for y in t_even]
    return all(item == "True" for item in outcome)

#Test
checkString("Bolelaaa")
checkString("bomelela")

在此功能中,我使用列表理解来分别针对辅音和元音列表测试奇偶字母。如果所有比较均成立,则该函数返回true。