为什么" while"循环工作,但" for"一个人不是吗?

时间:2015-02-13 18:46:40

标签: python function reverse

我刚刚开始学习python。 我试图为字符串创建一个反向函数,我知道这段代码有效:

def reverse(text):
    string_list = list(text)
    new_list = []
    length = len(string_list) - 1
    while length >= 0:
        new_list.append(string_list[length])
        length = length - 1
    return ''.join(new_list)

但我不明白为什么这个没有:

def reverse(text):
    string_list = list(text)
    new_list = []
    for i in len(text)-1:
        new_list.append(string_list[len(text)-i])
    return "".join(new_list)

如何使for循环工作?错误在哪里?

4 个答案:

答案 0 :(得分:2)

您应该使用range或更好xrange

for i in xrange(len(text)):
    new_list.append(string_list[len(text) - 1 - i])

答案 1 :(得分:1)

尝试这样的事情:

def reverse(text):
    string_list = list(text)
    new_list = []
    for i in range(len(text)):
        new_list.append(string_list[len(text) -1- i])
    return "".join(new_list)
  

reverse('joe')=> 'EOJ'

使用此代码,您既不会出现list index out of range错误,也不会错过字符串中的字符。

答案 2 :(得分:0)

从索引1开始并使用range()

for i in range(1,len(text)+1):

答案 3 :(得分:0)

得到错误,请在相应的行中使用

for i in range(len(text))

new_list.append(string_list[(len(text)-1)-i])