为什么这个布尔值为假?

时间:2019-10-26 02:35:48

标签: python string list loops iteration

Python为什么说strvowel中找不到'e'?

我尝试将字符串格式化为: 'aeiouAEIOU',但这也不起作用

vowel = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']
strvowel = "'a' 'e' 'i' 'o' 'u' 'A' 'E' 'I' 'O' 'U'"

 if w[0] not in vowel:
        PLw = []
        for element in w:
            v = element.find(strvowel)
        PLw.append(w[v:] + '-' + w[0:v] + 'ay')
        return PLw[0]
if __name__ == '__main__':
#     encrypt(w)
#     decrypt(w)
    print(encrypt('yesterday'))
    print(encrypt('"always!"'))
    print(encrypt('computer'))

打印语句应为:

  

昨天是   总是!”   omputer-cay

他们目前是:

  

y-yesterdaay   “-”总是!   r-计算

输入单词(w)时,它应该找到元音的第一次出现: 例如“昨天”将是“ e” 但是每个字符(甚至是元音)的调用都为假

3 个答案:

答案 0 :(得分:1)

假设您的示例中变量yesterday是单词vowel = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'] w = "yesterday" def find_first_vowel(string): for char in string: if char in vowel: return char print(find_first_vowel(w)) ,那么搜索该变量的一种好方法是定义一个函数并返回第一个匹配项。

{{1}}

答案 1 :(得分:1)

w是一个类似“昨天”的单词时,element是一个类似“ y”的字符。当你说

v = element.find(strvowel)

您要询问“ y”中“ a”,“ e”,“ i”,“ o”,“ u”,“ A”,“ E”,“ I”,“ O”,“ U””的位置(可以永远不会在那里。

我最好的猜测是您希望v是第一个元音的索引。您已经创建了一种检查字符是否为元音的正确方法:

if w[0] not in vowel:

因此删除strvowel并重复使用:

v = -1  # TODO: think about what happens when there are no vowels

for i, letter in enumerate(w):
    if letter in vowel:
        v = i
        break

答案 2 :(得分:0)

所以您只想找到第一个元音? 这就是正则表达式的用途。

#python standard regular expression library
>>>import re

#prepare your vowels. this means "any of those letters"
>>> vowels = re.compile("[aeiouyAEIOUY]")

#find the match. returns a Match Object. often used as a `if vowels.match(string)` too
>>> vowels.match("yesterday")
<re.Match object; span=(0, 1), match='y'>
>>> match = vowels.match("yesterday")
#  look as the object for fun
>>> match
<re.Match object; span=(0, 1), match='y'>

#find the result
>>> match[0]
'y'
# or this way
>>> match.group()
'y'

因此要将“ -ay”附加到找到的第一个元音中,您只需要这样做

def append_yay(string):
    match = vowels.match(str)
    if match:
        return match.group() + "ay"


append_yay("yesterday")

您会得到-yay

相关问题