Python-为什么打印出“甜点”

时间:2014-11-24 16:49:25

标签: python python-3.3

我是编程新手,显然我可以轻松运行一个程序来获得答案,但我想更清楚,更好地理解为什么这个代码运行"甜点"。我理解len(s)是数字的长度,但三个数字" -1,0 -1"?我可以详细解释为什么这会打印甜点吗?

s = "stressed"

for i in range(len(s)-1, 0, -1):
    print(s[i], end = " ")

4 个答案:

答案 0 :(得分:1)

代码会创建一个计算 down 的范围。从len(s) - 1开始(所以7,stressed长度为8个字符),它将向下计算1(不包括终点) 。换句话说,你给了range()三个参数,len(s) - 1是一个参数,0是第二个,-1是第三个,它们代表开始,停止和步骤参数。请参阅range() type documentation

然后代码使用这些值来索引s; s[7]是字符串中的最后一个字符d,然后s[6]是一个但最后一个字符e等。

将其分解为交互式会话中的组件:

>>> s = "stressed"
>>> len(s)
8
>>> len(s) - 1
7
>>> list(range(7, 0, -1))
[7, 6, 5, 4, 3, 2, 1]
>>> s[7]
'd'
>>> s[6]
'e'
>>> s[1]
't'

如果您希望代码打印出desserts(最后使用s),则需要调整range()以循环到-1:< / p>

for i in range(len(s) - 1, -1, -1):

答案 1 :(得分:1)

s t r s s d d

0 1 2 3 4 5 6 7

范围功能:范围(开始,停止,步骤)

len(s)= 8

len(s-1)= 7

循环从0开始时停止7并且将(步骤)bacdow计数为1(-1) 所以,循环打印

7 6 5 4 3 2 1

d e s t e r t

答案 2 :(得分:0)

关于range()

所有人都讨论了here

它可以以三种方式使用;

range(stop)
range(start, stop)
range(start, stop, step)

在第一种情况下,它会在第二种情况[1, 2, 3, ... stop-1]中提供[start, start+1, start+2, ... stop-1],在第三种情况下提供[start, start+step, start+2*step, ...stop-step]

此处需要注意的是,您获得的range[start, stop)。使用标准interval notation的地方。

这里要注意的另一件事是步骤可能是负面的,这就是你的例子中的内容。

答案 3 :(得分:0)

range(len(s)-1, 0, -1)
reange(start_index, to_end_index, is_increment or is_decrement)

使用其起始索引调用循环,然后告诉它遍历结束索引并最后增加索引或减少索引

range(len(s)-1 *calculate the lengthof array (string), 0 *end point of traversing, -1 decrement the index)

如果您使用

range(0, len(s),1)

循环将从0索引开始并遍历到最后一个索引增加1索引