Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 选择单词中的第一个辅音(在许多元音之后)_Python_Python 3.x - Fatal编程技术网

Python 选择单词中的第一个辅音(在许多元音之后)

Python 选择单词中的第一个辅音(在许多元音之后),python,python-3.x,Python,Python 3.x,嗨,我想做一个猪拉丁翻译,当我试图处理以元音开头的单词时,出现了一个问题。其目的是,对于以元音开头的单词,后缀将是单词+“ay”中的第一个辅音(而不是单词+“ay”中的第一个字母),例如,“ear”将是“ear ray”,而不是“ar eay” 然而,我正在努力找到一种方法来做到这一点 这就是我到目前为止所拥有的:(它取自更大的代码部分) 这使得程序无法生成输出并继续运行 我觉得问题在于循环的顺序,但我已经尝试过了,没有解决方案。也可能是我不知道的其他事情 你对如何使它工作有什么建议吗 任何帮助

嗨,我想做一个猪拉丁翻译,当我试图处理以元音开头的单词时,出现了一个问题。其目的是,对于以元音开头的单词,后缀将是单词+“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新手,我不确定如何在我的代码中实现这一点。你能进一步解释一下吗?