Python 选择单词中的第一个辅音(在许多元音之后)
嗨,我想做一个猪拉丁翻译,当我试图处理以元音开头的单词时,出现了一个问题。其目的是,对于以元音开头的单词,后缀将是单词+“ay”中的第一个辅音(而不是单词+“ay”中的第一个字母),例如,“ear”将是“ear ray”,而不是“ar eay” 然而,我正在努力找到一种方法来做到这一点 这就是我到目前为止所拥有的:(它取自更大的代码部分) 这使得程序无法生成输出并继续运行 我觉得问题在于循环的顺序,但我已经尝试过了,没有解决方案。也可能是我不知道的其他事情 你对如何使它工作有什么建议吗Python 选择单词中的第一个辅音(在许多元音之后),python,python-3.x,Python,Python 3.x,嗨,我想做一个猪拉丁翻译,当我试图处理以元音开头的单词时,出现了一个问题。其目的是,对于以元音开头的单词,后缀将是单词+“ay”中的第一个辅音(而不是单词+“ay”中的第一个字母),例如,“ear”将是“ear ray”,而不是“ar eay” 然而,我正在努力找到一种方法来做到这一点 这就是我到目前为止所拥有的:(它取自更大的代码部分) 这使得程序无法生成输出并继续运行 我觉得问题在于循环的顺序,但我已经尝试过了,没有解决方案。也可能是我不知道的其他事情 你对如何使它工作有什么建议吗 任何帮助
任何帮助都将不胜感激。我们可以使用生成器表达式获得下一个常量及其索引。如果没有constotnant,我们将返回
(None,None)
next(((letter, index) for index, letter in enumerate(word) if letter not in 'aioue'), (None, None))
我们可以把它分解一下,以了解发生了什么
enumerate
是一个返回迭代器的函数,迭代器将iterable中的元素与其索引配对。所以列表(枚举('abc'))
是[(0,'a'),(1,'b'),(2,'c')]
。我们想得到第一个辅音的索引,这样我们就知道在哪里切片
((字母,索引)对于索引,如果字母不在'aioue'中,则枚举(word)中的字母)
是一个生成器表达式。生成器将逐个生成值。它所做的就是从我们列举的字母中过滤掉元音
next(generator,(None,None))
从generator中获取下一项(这将是第一项)。如果没有下一个项目(所有元音的单词),它将返回第二个参数(None,None)
我们可以使用生成器表达式获取下一个恒频及其索引。如果没有constotnant,我们将返回(None,None)
next(((letter, index) for index, letter in enumerate(word) if letter not in 'aioue'), (None, None))
我们可以把它分解一下,以了解发生了什么
enumerate
是一个返回迭代器的函数,迭代器将iterable中的元素与其索引配对。所以列表(枚举('abc'))
是[(0,'a'),(1,'b'),(2,'c')]
。我们想得到第一个辅音的索引,这样我们就知道在哪里切片
((字母,索引)对于索引,如果字母不在'aioue'中,则枚举(word)中的字母)
是一个生成器表达式。生成器将逐个生成值。它所做的就是从我们列举的字母中过滤掉元音
next(generator,(None,None))
从generator中获取下一项(这将是第一项)。如果没有下一项(所有元音的单词),它将返回第二个参数(None,None)
尝试以下操作:
VOWELS = ('a', 'e', 'i', 'o', 'u')
def first_consonant(word):
for letter in word:
if letter.lower() not in VOWELS:
return letter
def pig_latin(word):
return '%s-%say' % (word, first_consonant(word) or word[0])
它试图找到一个单词的第一个辅音,并在末尾附加ay。如果不存在,则遵循单词的第一个字母(我不知道这是否正确,但您可以根据需要进行调整)。尝试以下方法:
VOWELS = ('a', 'e', 'i', 'o', 'u')
def first_consonant(word):
for letter in word:
if letter.lower() not in VOWELS:
return letter
def pig_latin(word):
return '%s-%say' % (word, first_consonant(word) or word[0])
它试图找到一个单词的第一个辅音,并在末尾附加ay。如果它不存在,那么它将遵循单词的第一个字母(我不知道这是否正确,但您可以根据自己的需要调整它)。很抱歉,我是python新手,我不确定如何在代码中实现这一点。你能进一步解释一下吗?对不起,我是python新手,我不确定如何在我的代码中实现这一点。你能进一步解释一下吗?