为什么 "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])
我刚开始学习 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])