擅长:python、mysql、java
<p>在第一种情况下,<code>range(1, len(lst)-1)</code>是一个列表</p>
<pre><code>1, 2, 3, ..., len(lst)-1
</code></pre>
<p>在第二种情况下,它取决于第一个列表元素的值。如果<code>integerList[0]</code>是3,那么<code>range()</code>是</p>
<pre><code>3, 4, 5, ..., len(lst)-1
</code></pre>
<p>而<code>if()</code>语句的第一个调用比较<code>integerList[4] / integerList[3]</code>,并忽略列表中的前三个元素。因此,代码只在<code>integerList[0] == 1</code>时有效</p>
<p>然而,还有两个陷阱:</p>
<ol>
<li><p>range()只接受整数作为元素。如果第一个元素是一个float,pyhon将抛出一个错误。</p></li>
<li><p>如果比率总是一个整数,您可以像这样比较比率是否相等。<strong>但是</strong>如果比率是一个浮动值,您可能会遇到麻烦:虽然两个比率在数学上相等,但计算机(由于其浮点运算)可能会计算出略微不同的值。最好使用</p>
<p><code>import math
...
if (math.fabs(lst[i+1]/lst[i] - ratio) < smallNumber)</code></p></li>
</ol>
<p>其中<code>smallNumer</code>是一个非常小的数字适合你。你知道吗</p>
<p>顺便说一下:在第二段代码中,您使用了<code>lst[]</code>,但我猜,这只是一个输入错误。你知道吗</p>