<p>好吧,从帮助中:</p>
<pre><code>>>> help(range)
range(...)
range([start,] stop[, step]) -> list of integers
Return a list containing an arithmetic progression of integers.
range(i, j) returns [i, i+1, i+2, ..., j-1]; start (!) defaults to 0.
When step is given, it specifies the increment (or decrement).
For example, range(4) returns [0, 1, 2, 3]. The end point is omitted!
These are exactly the valid indices for a list of 4 elements.
</code></pre>
<p>所以最后一个增量不是<code>stop</code>,而是<code>stop</code>之前的最后一步。在</p>
<blockquote>
<ul>
<li>in countMe shouldn't the code go up till 18 ;</li>
<li>why is the last number printed in countMe 15, and not 18 ;</li>
<li>why is that in the second function oddsOut the function only founts till 7 for j and not 8 even though j is 8 ;</li>
<li>why is the last number printed in oddsOut 14.</li>
</ul>
</blockquote>
<p>更一般地说,这些问题的答案是,在大多数语言中,一个范围被定义为<code>[start:stop[</code>,也就是说,范围的最后一个值从不包含,索引总是从<code>0</code>开始。混乱的是,在一些语言中,当处理算法时,范围从<code>1</code>开始,并包含最后一个值。在</p>
<p>如果您希望在最后一个值中包含:</p>
^{pr2}$
<p>或者在你的例子中:</p>
<pre><code>>>> def countMe(num):
>>> for i in range(0, num+1, 3):
>>> print (i)
>>>
>>> countMe(18)
0
3
6
9
12
15
18
>>>
</code></pre>