Python - 我需要重新排列列表中字符串元素的字符

时间:2017-03-28 09:31:00

标签: python string list for-loop

所以我有一个函数,它接受一个字符串输入并将其变成猪拉丁语。

对于以辅音开头的所有单词(除元音外的所有单词),我必须取出该单词的第一个字母并将其移到后面,然后在单词中添加“ay”。

例如“like”会变成“ikelay”。

在我的程序中,首先拆分给我的字符串输入,然后检查新创建的列表的每个元素,以查看该元素的第一个字符是元音,辅音还是其他字符。

def simple_pig_latin(input, sep=" ", end="."):
    splitinput = input.split(sep)
    for i in splitinput:
        if splitinput[splitinput.index(i)][0] in ['a','e','i','o','u']:
            splitinput[splitinput.index(i)] = str(i) + "way"
        elif splitinput[splitinput.index(i)][0] in ['b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z']:
            splitinput[splitinput.index(i)] = str(i) + "ay"
        else:
            continue
    finalstring = ' '.join(splitinput)
    finalstring = finalstring + end


simple_pig_latin("i like this")

注意在elif分支中,我应该把i的第一个字母放在该单词的末尾并添加“ay”。给定输入字符串“我喜欢这个”我应该将第二个单词(因为像l开始,使其成为辅音)变为'ikelay'我将如何重新排列以使其成为ikel?< / p>

2 个答案:

答案 0 :(得分:2)

我试图保留你的结构,同时仍然删除无用的代码:

def simple_pig_latin(input_text, sep=" ", end="."):
    words = input_text.split(sep)
    new_words = []
    for word in words:
        if word[0].lower() in ['a', 'e', 'i', 'o', 'u']:
            new_words.append(word + "way")
        else:
            new_words.append(word[1:] + word[0] + "ay")
    finalstring = sep.join(new_words)
    finalstring = finalstring + end
    return finalstring


print simple_pig_latin("i like this")
# iway ikelay histay.

注意:

  • 你的功能需要返回一些东西
  • 创建新列表可能比改变原始列表更容易
  • 如果i已经是字符串,则无需拨打str(i)
  • i通常用于0n-1之间的整数。不是为了单词。
  • word[0]是您的第一个字母
  • word[k:] word没有第一个k字母
  • 为了简化你的代码,我认为如果第一个字母不是元音,那么它必须是一个辅音。
  • 我在第一个字母上打lower(),以检查'I'是否为元音。

答案 1 :(得分:1)

对于您的问题,您可以将代码str(i) + "ay"更改为i[1:] + i[0] + "ay"分支中的elif