【问题标题】:How would I convert a sentence into Pig Latin using recursion in Python?如何使用 Python 中的递归将句子转换为 Pig Latin?
【发布时间】:2022-10-04 20:18:19
【问题描述】:

我对编码比较陌生,并且无法弄清楚如何将句子递归地转换为 Pig Latin。我有两个问题。首先是 pig_latin 函数中的布尔值似乎没有在 if 语句中正确更新。如果我将值设置为true,那么它只会添加'way',如果我将它设置为false,它只会添加'ay',它不会根据单词切换。第二个问题是我不知道如何将代码应用于多个单词。我试图将用户生成的句子拆分为子字符串列表,但我不知道如何将我的代码应用于这些子字符串。我尝试用单词替换句子,但收到错误消息“TypeError: can only concatenate list (not "str") to list。”

注意:我的教授说我们不能在我们的函数中使用循环来将句子翻译成 Pig Latin,如果这对答案有任何影响的话。

sentence = str(input('Input Sentence: '))
words: list = sentence.split(' ')
vowels = 'aeiou'


def pig_latin(sentence):
    vowelStart = True
    if sentence[0] not in vowels:
        vowelStart = False
        return pig_latin(sentence[1:] + sentence[:1]) and vowelStart
    elif sentence[0] in vowels and not vowelStart:
            print(sentence + 'ay')
    elif sentence[0] in vowels and vowelStart:
        print(sentence + 'way')

pig_latin(sentence)

【问题讨论】:

  • 请通过一些示例来更新您的问题,说明您如何调用函数以及您期望的输出是什么。

标签: python python-3.x recursion


【解决方案1】:

下面的代码应该解决您的两个问题。

def pig_latin(sentence):
    out=[]
    for word in sentence.split(' '):
        if word[0] in 'aeiou':
            out.append(word[1:]+word[0]+'way')
        else:
            out.append(word[1:]+word[0]+'ay')
    out=' '.join(out)
    print(out)

做出的调整:

  1. 删除了vowelStart 并用word[0] in 'aeiou' 替换它。这有效地做同样的事情。
  2. 添加的 for 循环遍历输入句子中的每个单词,并将其翻译成拉丁语。翻译后的单词被附加到一个列表中,在所有单词被翻译并添加到上述列表之后,这些单词被连接在一起形成一个单独的字符串。

    希望这可以帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多