我需要创建一个函数来翻译成 Pig Latin。条件:如果一个单词包含2个不同的元音,我们添加'way',否则我们需要将第一个字母移到单词的末尾并添加'ay'。例如:酒> wineway,风> indway。这是任务的复杂版本;简单版本不会造成任何问题。以下是解决任务的代码(这是我用于解决简单(第一个)任务的代码的版本,通过chatGPT传递,以解决任务的第二部分:
def to_pig_latin(word):
vowels = {'a', 'e', 'i', 'o', 'u'}
unique_vowels = set(filter(lambda x: x in vowels, word))
print(unique_vowels)
if len(unique_vowels) >= 2: # Если есть две или более различные гласные
return word + 'way' # Добавляем 'way' в конце
else:
return word[1:] + word[0] + 'ay' # Переносим первую букву в конец и добавляем 'ay'
print(to_pig_latin('apple'))
我不得不求助于 chatGPT,因为精确计算唯一的元音很困难,现在我知道这可以通过数组来完成。
问题如下:代码使用lambda x: x in vowels, word
,我根本不明白它是如何工作的,通过 pythontutor.com 运行代码显示检查单词 word 的每个字母,如果是元音,则返回 True 并它最终出现在数组中。但我不太明白它是如何工作的以及 lambda 函数中的循环是如何工作的。例如,如果你写
vowels = {'a', 'e', 'i', 'o', 'u'}
word = 'apple'
for x in vowels, word:
print(x)
>>{'i', 'a', 'o', 'u', 'e'}
>>apple
x只会取2个值,并且不会遍历每个字母。请帮我弄清楚。