反向练习(Python Codecademy课程,部分"练习使完美" 15/15)

时间:2016-07-04 17:30:19

标签: string python-2.7 range

任务运行如下: 定义一个名为reverse的函数,它接受一个字符串textand以反向返回该字符串。你可能不会使用reverse或[:: - 1]来帮助你。

我的代码可以正常工作,但我想了解一个细节。 Tks to all。

def reverse (text):
    result = ''
    for i in range (len(text)-1,-1,-1):
        result += text[i]
    return result

关键在于我最初是在第3行写的for i in range (len(text)-1,0,-1):但是该程序又回来了#no!'而不是'!nohtyP'。所以我改为(len(text)-1,-1,-1)嗯它没关系。 但是为什么?!

2 个答案:

答案 0 :(得分:2)

范围中省略了终点。

>>> range(2,5)
[2, 3, 4]

要获取第0个元素,您需要-1

答案 1 :(得分:0)

因为文本(Python!)长度为7,列表为零(从0开始)并且for循环正在减少,所以需要为-1。

字符串" Python!"是7个字符。范围与最终数字相同,因此范围为6,5,4,3,2,1,0。

长度 - 1 = 6,范围为6到-1,其中-1是数字0 - 6的唯一帐户。因为列表基于0,所以它占所有。如果作为范围的第二个参数为零,则只能获得数字6,5,4,3,2,1,这些数字并不代表整个单词。

例如:

单词" Stack"有5个字母。 一旦它是一个列表,它占据索引0,1,2,3,4。 你循环遍历整个单词,因此你需要访问第0个元素。为此,范围必须为-1 exclusive。

对于你的循环:

>>> range(6, -1, -1)
[6, 5, 4, 3, 2, 1, 0]

然后,当您通过执行以下操作来访问它时:

text = "Python!"
for i in range(len(text)-1, -1, -1):
    print(text[i])

text[i]访问所有单个字符并向后打印。