给定一个句子,返回一个单词相反的句子

时间:2019-12-05 14:05:09

标签: python arrays string

def master_yoda(text):
    txt_elements=text.split()
    index=-1
    reverse=[]
    i=0
    while i <= len(txt_elements):
        reverse.append(txt_elements[index])
        index=index-1
        i+=1
    final=' '.join(reverse)
    return final
print(master_yoda('i adore that'))

我不明白为什么我不断收到有关缩进的错误。

这里是一个例子:

  • 输入:“我很美丽”
  • 输出:“我很美丽”

4 个答案:

答案 0 :(得分:4)

只是改变

while i <= len(txt_elements):

while i < len(txt_elements):

请记住,您可以改为这样做:

def master_yoda(text):
    return ' '.join(text.split()[::-1])

在此示例中,[::-1]使用切片来反转列表。您还可以使用内置的reversed() python-请参见comment by @wjandrea

答案 1 :(得分:1)

如果txt_elements的长度为3,则最大索引为2,因为python从0开始索引。i在while循环中最终将为3(i <= len(txt_elements)),这由于txt_elements[3]导致索引错误。查看其他答案以获取解决方案。

答案 2 :(得分:1)

(这是从评论开始,但太大了。主要是相关建议,但我在底部给出了解决方案。)

更多的Python方式遍历索引是

for i in range(len(txt_elements))

或者如果您使用这些物品,

for i, item in enumerate(txt_elements)

但是由于未使用i,所以要循环相同的次数,您可以使用

for _ in txt_elements

但是随后,由于您使用循环来构建另一个列表而没有其他处理,因此可以使用

reverse = reversed(txt_elements)

此时,您最好将其压缩为一行,例如@CDJB建议:

def master_yoda(text):
    return ' '.join(reversed(text.split()))

答案 3 :(得分:1)

def master_yoda(文本):

x=text.split()

x.reverse()

return " ".join(x)