我是编程新手,显然我可以轻松运行一个程序来获得答案,但我想更清楚,更好地理解为什么这个代码运行"甜点"。我理解len(s)是数字的长度,但三个数字" -1,0 -1"?我可以详细解释为什么这会打印甜点吗?
s = "stressed"
for i in range(len(s)-1, 0, -1):
print(s[i], end = " ")
答案 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索引