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'))
我不明白为什么我不断收到有关缩进的错误。
这里是一个例子:
答案 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)