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” 但是每个字符(甚至是元音)的调用都为假
答案 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
。