<p><strong>例1.</strong></p>
<blockquote>
<p>For the first program: each if statement will be evaluated and if the
condition is met, then the block should be executed; if that is the
case then the result should be False.</p>
</blockquote>
<p>此语句与代码实际执行的操作不匹配</p>
<p><code>print(is_stylish('chocolate', 'ochre'))</code>无法返回<code>False</code>,您的<code>False</code>的olny组合为:</p>
<pre><code>pants_colour == 'chocolate' and shirt_colour == 'orhre' # !note: 'orhre' is not 'ochre'
pants_colour == 'chocolate' and shirt_colour == 'black'
</code></pre>
<p>所以这些条件都不满足,函数没有任何其他的<code>return</code>,所以它返回none</p>
<p><strong>例2.</strong></p>
<blockquote>
<p>For the second program: if the preceding condition is met then the
following statements would be skipped and lead to the result.</p>
</blockquote>
<p>这是正确的,在你的情况下,它进入
<code>elif pants_colour == 'blue' and shirt_colour == 'ochre'</code>并返回True</p>
<p><strong>差异:</strong>除了您已经提到的以外,两个示例之间的主要区别在于,在示例2中,您有<code>else: return False</code>条件,它将覆盖所有<em>其他情况,因此如果<code>else</code>之前的任何条件都不满足,那么您的函数将返回False,而不是none</p>
<p>在第一个示例中,如果没有满足任何条件,它将只遍历所有条件,不会命中任何条件,并且将返回none</p>