我试图制作一个反向拼写输入单词的程序。我终于得到了它的工作,但我不明白为什么它的工作原理。这是工作计划:
def reverse(text):
length = len(text)
text = list(text)
new = ["None"] * length
for i in range(0, length):
new[i] = text[length - i - 1]
return "".join(new)
return new
不应该使i
range(0, length)
比原始字长一个字符吗?防爆。如果原始单词是四个字符,range(0, length)
将是五个字符,不是吗?似乎范围应该是(0, length - 1)
,但这不起作用!有人可以解释一下原因吗?
答案 0 :(得分:2)
Python范围直到到达它停止。
将范围写为for循环如下所示:
for i in range(a, b, c):
for (int i = a; i < b; i += c) {
所以它没有包括终点。
请注意,<
表示它不包含b
。您可能会将其视为<=
。
而且,在这种情况下,您可以使用内置的反向或切片[::-1]
(从最后到开始,每次都返回一个字符。)
另请注意,range(0, x)
相当于range(x)
,
答案 1 :(得分:0)
一旦达到length
,循环结束。例如
str1 = "hello"
length = len(str1) #length = 5
for i in range(0,length) # will loop from 0 to 4.
print(length)
输出:
0
1
2
3
4
在示例中,循环将比长度
运行1答案 2 :(得分:0)
我认为你正在学习Python(我也是,现在已经有20多年了 - 总是需要学习更多!)所以首先祝贺你自己编写了有效的代码!
如果您使用了字符串切片,那么您可能知道x[:]
创建了序列x
的新副本(字符串,列表和元组都被认为是序列),包含完全相同的元素。您甚至可能知道可以使用“步幅”作为切片的第三个元素。
您可能 知道的是,使用-1
的步幅会向后迭代元素。因此,reverse
函数的较短版本可能会读取
def reverse(x):
return x[::-1]
对于较新的Python用户来说,发现他们一直在低效率地执行操作的有效方式并不常见,因此请考虑这不是对代码的批评,而是对可能改进的建议。