【问题标题】:Translation from English to Pig Latin从英语翻译成猪拉丁语
【发布时间】:2016-02-04 01:22:00
【问题描述】:

我正在参与“PigLatin 翻译”计划。 这是我现在正在写的部分。

    input_str = input("Input a word: ")

    consonant_check = 0
    while input_str[int(consonant_check)] != 'a' or 'e' or 'i' or 'u':

        output_str = input_str[:int(consonant_check)] + input_str[0,int(consonant_check)] + 'ay'
        consonant_check = int(consonant_check) + 1
    else:
        print(output_str)

这部分应该检查输入的单词是否以辅音开头。如果是这样,程序可以从单词的开头删除所有辅音,并将它们附加到单词的末尾。然后将“ay”附加到单词的末尾。 通过在线收集信息,我对如何实现它有了一些线索,但我认为我的代码仍然有问题。

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    我会按照您的意图处理它,从而产生以下代码。

    简而言之,检查字符串的第一个字符。如果它不是元音 (not in ['a','e','i','o','u']),则将字符移动到字符串的末尾。继续这样做,直到你碰到一个元音(所以在打破循环之前,'string' 变成 'trings' 然后 'ringst' 然后 'ingstr')。一旦你最终击中一个元音,你就离开循环,并打印修改后的字符串 + 'ay'。如果第一个字符是元音,则退出循环并打印字符串 + 'ay'。

    无需设置辅音检查 - 您始终检查第一个字符 (0)。并且不需要有两个变量 - 只需不断修改和替换原始字符串即可。

    word_string = input("Input a word: ")
    
    while word_string[0] not in ['a','e','i','o','u']:
        word_string = word_string[1:] + word_string[0:1]
    
    else:
        print(word_string + 'ay')
    

    【讨论】:

    • 非常感谢。帮了大忙!
    【解决方案2】:

    这不是对您问题的直接答案,而是我对猪拉丁问题的解决方案。在学习 python 时,我发现查看完整的示例很有帮助。

    word = "snake"
    
    import string
    
    # Create a list of vowels an consonants
    vowels   = ['a','e','i','o','u','y']
    vowels  += [v.upper() for v in vowels]
    consonants = [x for x in string.ascii_letters if x not in vowels]
    
    if word[0] in consonants:
        # Find the first vowel
        idx = min([word.find(v) for v in vowels if word.find(v)>0])
    
        # Split the word at this point and add 'ay'
        word = word[idx:] + word[:idx] + 'ay'
    
    print(word)
    # Returns "akesnay"
    

    【讨论】:

      【解决方案3】:

      我认为你的逻辑总体上有点混乱。我建议像这样解决问题。

      1.)检查第一个字母是否是辅音,如果不是,什么都不做,如果是,转到步骤2

      2.)找到单词中的所有辅音并将它们存储在一个列表中

      3.) 如果是,则从单词中删除元音,然后将所有辅音附加到末尾,然后是“ay”。

      有无数种方法可以实际实现它,我认为尝试自己实现它对您来说是一个很好的练习,但如果您需要更多帮助,请告诉我。

      【讨论】:

      • 感谢您提供逻辑。
      • 我现在正在尝试将元音检查部分放入一个循环中。
      • 但它一直说字符串索引必须是整数,我不明白
      • @Stidgeon 我认为你是对的。我正在阅读他所说的他的目标而不是 Pig Latin 的定义,我不太熟悉
      猜你喜欢
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      相关资源
      最近更新 更多