为什么 "while" 循环有效而 "for" 循环无效?

Why the "while" loop works but the "for" one doesn't?

我刚开始学习 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循环工作?哪里出错了?

您应该使用 range 或更好的 xrange:

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

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

for i in range(1,len(text)+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 错误,也不会遗漏字符串中的字符。

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

for i in range(len(text))

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